This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM44L520:配置 SCI3通信时出现问题

Guru**** 2380860 points
Other Parts Discussed in Thread: HALCOGEN, RM44L520
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1107217/rm44l520-issue-configuring-sci3-communication

器件型号:RM44L520
主题中讨论的其他器件:HALCOGEN

 您好!  

我尝试使用引脚36、38、35和34将 SCI3配置为与另一个内部器件通信。 我在 halcogen 的 SPI3选项卡下配置了所有这些驱动程序、并在驱动程序选择菜单中选择了 SPI3驱动程序。 我之所以感到困惑、是因为该处理器的文档仅列出标记为 MibSPI3的寄存器、而不仅仅是 SPI3。 我是否能够在这些引脚上仅使用 SPI、或者我是否必须使用 MibSPI? 我将通过代码移植来为单独 的处理器提供服务、因此如果我可以继续使用 SPI、那就更好了。  

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andrew:

    SPI3/MibSPI3模块支持多缓冲模式(Mibspi)和兼容模式(SPI)。 如果您想使用 Mibspi 模式、请设置"MSPIENA"位或在 HAL GUI 上选中"MibSPI":

    如果使用 SPI 兼容模式、请检查 HAL GUI 中的 SPIx 或清除"MSPIENA"位:

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回答。 我已选中 SPI 模式。

    我还为 SPI3配置了端口。

    我将使用以下函数将 SPI 信号发送出去  

    这里有什么问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为我的问题与发送消息之前实施的硬件延迟有关。 我将设置以下寄存器以创建硬件延迟:

    当我查看 rtiREG1地址处的值时、我会看到以下内容:

    似乎唯一正在进行的更新是来自 RTOS 周期。 是否还有其他需要启用的功能才能正确更新该寄存器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="511679" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum1107217/rm44l520-issue-configuring-sci3-communicy/4103635#4103635"]此处是否有任何问题?

    您说过使用 MIBSPI3nCS[0](引脚38)、但快照显示 使用了 SCS[3](GIO 模式)。

    hpiCurrentLoop SetCS (...)是上拉还是下拉 NCS[3]引脚还是 NCS[0]引脚?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="511679" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum1107217/rm44l520-issue-configuring-sci3-communicy/41039#4103939"]是否还有其他需要启用此寄存器才能正确更新[引用/引用]

    您是否使用 HALCoGen 生成的 FreeRTOS?  

    RTI 在"static void prvSetupTimerInterrupt (void)"中配置。 仅启用比较0。 如果要使用比较2、可以在此函数中启用它。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用的处理器在 halcogen 中没有 FreeRTOS 版本、因此我必须按照应用手册中的步骤手动配置带 halcogen 的 FreeRTOS。 为了使用比较2、我需要向该函数添加什么内容?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andrew:

    HALCoGen 确实有一个用于 RM44L520封装的 FreeRTOS 示例:

    BTW、在 FreeRTOS 示例中、HALCoGen 不会生成 RTI.c 和 RTI.h、仅在 OS_port.c 文件中配置比较0 (针对 OS 节拍)。  

    如果要使用其他 RTI 比较、则需要添加代码来配置它们。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这适用于使用 PZ 封装时的 PGE 封装。 我一直在尝试手动配置我想使用的 RTI 通道、但我没有运气。 是否有任何此操作的示例代码?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andrew:

    您可以将自己的代码插入  prvSetupTimerInterrupt (void)以启用其他 RTI 比较。 例如:


    静态空 prvSetupTimerInterrupt (空)

       /*禁用计时器0。 *
       PORTTI_GCTRL_REG &= 0xFFFFFFFELL;

       /*使用内部计数器。 *
       PORTTI_TBCTRL_REG = 0x000000000000U;

       /* COMPSEL0将使用 RTIFRC0计数器。 *
       PORTTI_COMPCTRL_REG = 0x000000000000U;

       /*初始化计数器和预分频计数器寄存器。 *
       PORTTI_CNT0_UC0_REG = 0x000000000000U;
       PORTTI_CNT0_FRC0_REG = 0x000000000000U;

       /*为 RTI 时钟设置预分频器。 *
       PORTTI_CNT0_CPU0_REG = 0x00000001U;
       PORTTI_CNT0_COMP0_REG =(CONFIGCPU_CLOCK _Hz / 2)/ CONFIGTXK_RATE_Hz;
       PORTTI_CNT0_UDCP0_REG =(CONFIGCPU_CLOCK _Hz / 2)/ CONFIGTXK_RATE_Hz;

       PORTTI_CNT0_COMP1_REG =(CONFIGCPU_CLOCK _Hz / 2)/CONFIGTXK_RATE_Hz / 10;  //QJ 已添加以配置比较1
       PORTTI_CNT0_UDCP1_REG =(CONFIGCPU_CLOCK _Hz / 2)/CONFIGTXK_RATE_Hz / 10;   //QJ 已添加 以配置比较1

       /*清除中断。 *
       PORTTI_INTFLAG_REG = 0x0007000FU;
       PORTTI_CLEARINTENA_REG = 0x00070F0FU;

       /*启用比较0中断。 *
       PORTTI_SETINTENA_REG = 0x00000001U;

       PORTTI_SETINTENA_REG |= 0x00000002U;   //QJ 已添加  以启用配置比较1的 INT

       PORTTI_GCTRL_REG |= 0x00000001U;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    要使 RTI 比较1 (在我的上一个帖子中配置)、您需要在 VIM 模块中启用 RTI 比较1通道:

    并给出 RTI 比较1的 ISR 名称、例如 myTestISR

    由于 HAL (FreeRTOS 示例)不会生成 RTI.c 和 RTI.h、因此 myTestIRS 不是由 HAL 生成的、您必须自行编写:

    void myTestISR (void);

    void myTestISR (void){
        /*清除中断标志。*/
        *((volatile uint32_t *) 0xFFFFFF88)= 2U;
        (笑声) (笑声)

    如果只使用轮询模式、则无需定义此 ISR。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经按照您在最后两条消息中发布的代码进行了完全配置、并且 RTIFRC1仍然没有增加。 如何解决这个问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已按如下所示配置寄存器:

    我在通道1上启用了中断:

    我正在清除中断中的中断标志:

    我正在配置延迟:

    我在 RTIFRC1寄存器的任何时刻都没有得到任何更改。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Andrew:

    在从 FRC1寄存器读取值之前、是否启用了计数器1?

    请查看器件技术参考手册中的 RTI 一章。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、我没有意识到我需要启用计数器1来使用 RTIFRC1、因为它被配置为使用计数器0。