主题中讨论的其他器件: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