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.

[参考译文] TMS570LS3137:读取 HALCoGen SPI.C 驱动程序中创建的 MibSPI Tx 和 Rx 状态标志

Guru**** 2456300 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/642187/tms570ls3137-reading-of-mibspi-tx-and-rx-status-flags-as-created-in-halcogen-spi-c-driver

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

我很困惑的是、对于一个传输函数、在 SPI.c 的例程 spiTransmitData 中、这个过程似乎是通过读取 RX 标志位8来控制 的、正如这个片段:

       /*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
       while ((SPI->FLG & 0x00000100U)!= 0x00000100U)
       {

 根据器件技术参考手册、spnu499b 日期为2012年11月–2013年8月修订、25.9.5 SPI 标志寄存器(SPIFLG)。

同一位用于 spiDataReceive 函数。

TX 标志、即0x00000200U、似乎根本不使用。。


在我的代码中 、此 RX 位清零时进程挂起:查看我复制的项目、它正常工作。 我没有设置什么???? 此外、在源项目位24中、BUFINTACTIVE 会持续 置位、尽管我没有故意将该器  件设置为 MibSPI:在 HALCoGen 中、我请求启用简单的 SPI1、2和3驱动程序。


HALCoGen 版本04.05.01版本2015年8月28日。

 

谢谢

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

    SPI 是全双工通信模块。 当它执行 TX 时、RX 总是与它一起完成。 在 TransmitData 函数中、即使保留仅用于发送数据、它也会接收一些数据。 这里接收到的数据被条件化为伪数据。 RX 也是如此。 在 ReceivspieData 函数中、发送值为0的数据、以便可以读取实际的 RX 数据。

    传输 API:
    SPI->DAT1 =((UINT32) DataFormat << 24U)|
    ((UINT32) ChipSelect << 16U)|
    (威德莱) |
    (CHIP_Select_HOLD)|
    (uint32) Tx_Data;
    /*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/
    srcbuff +;
    /*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
    while ((SPI->FLG & 0x00000100U)!= 0x00000100U)

    }/*等待*/
    SpiBuf = SPI->BUF;

    在上面的代码片段中、驱动程序尝试写入数据(TX_Data)并等待 Rx 完成标志、然后对存在接收到的数据的 BUF 寄存器执行虚拟读取。

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

    MISBSPI RAM 将初始化、GCR0寄存器设置为1。 BUFINTACTIVE 标志保持为1、直到 RAM 初始化完成。 这也是启动代码的一部分。

    /*从本地复位中释放 MibSPI1模块。
    *这将使 MibSPI1 RAM 与奇偶校验存储器一起被初始化。
    *
    mibspiREG1->GCR0 = 0x1U;





    while (((mibspiREG1->FLG & 0x01000000U)=0x01000000U)

    }/*等待*/
    /*等待 MibSPI1 RAM 完成初始化*/

    谢谢、此致、
    Veena
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回答。 但是、解决方案是纠正 HALCoGen 中的一些格式选项错误。
    我对 BUFINTACTIVE 标志保持置位感到有点困惑-我假设这是因为我不使用多缓冲模式。