主题中讨论的其他器件:HALCOGEN、
大家好、
我使用的是 Hercules TMS570LS0432 Launchpad、我使用的是 HalCoGen 驱动程序、并且取得了很大的成功。 但是、SPI 驱动程序一直给我带来问题。
调用 spiTransmitData()或 spiTransmitAndReceiveData()函数时,有时(但不是所有时间)会在等待 RXINTFLG 位设置时卡住,即“while ((SPI->FLG & 0x00000100U)!= 0x00000100U)”。 通过调试器、我可以看到 SPI 标志寄存器设置为0x01000200 (TXINTFLG 设置)。
我连接了一个4通道示波器、可以看到在计时8位后、芯片选择和时钟线被拉高、因此传输似乎已经正常。 我做了什么错了、我可以做什么来解决这个问题?
下面是一些代码片段、我希望这方面的帮助足以满足我的要求。
我的函数调用:
TransmitData (spiREG2、&spiFmt0、1、txBuf);
我的 spiDAT1_t 结构传入相关函数:
DAT1_t spiFmt0 ={
.CS_HOLD = 1、
.WDEL = 1、
.DFSEL = SPI_FMT_0、
CSNR = 0x00
};
在 HalCoGen 的 spiInit (void)中:
spiREG2->FMT0 =(uint32)((uint32) 2U <<24U)/* wdelay */
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 1U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 159U << 8U)/*波特率预分频*
|(uint32)((uint32) 8U << 0U);/*数据字长度*/
感谢您对该问题的任何深入了解、
Matthew