主题中讨论的其他器件:HALCOGEN、
你好
请帮助我的客户解决以下问题
TMS570LS3137 SPI RX 和 TX 标志。 由 HALCoGen 版本04.05.01、2015年8月28日生成的 SPI.c 代码。 独立笔记本电脑上的 CCS 版本6.1.0.00104。
调用 spiTransmitData 函数时、代码会成功检查错误标志
if ((SPI->FLG & 0x000000FFU)!=0U)
{
中断;
}、
获取要发送的新数据,然后在逻辑上,它应该检查 TX 标志以确定输出新数据的“移位寄存器”是否已清除:
/*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
while ((SPI->FLG & 0x00000100U)!= 0x00000100U)
{
}/*等待*/
根据技术参考手册 spnu499b、2012年11月修订–2013年8月、位0x00000100是 RXINTFLG、在我的硬件中、这是我所期望的错误。 因此、我尝试将这条线路黑客入侵为 TX 标志-它在第一个字中运行、然后崩溃。
如果我使用为我编写的代码(我在其中对该段进行了批评)、RX 标志在块之前为 false
SPI->DAT1 = ((UINT32) DataFormat << 24U)|
((UINT32) ChipSelect << 16U)|
(WDelay) |
(CHIP_Select_HOLD)|
(uint32) Tx_Data;
执行,然后将其设置为 true… 不理解… 我知道的唯一区别是原始版本使用 Chip_Select_Hold true、而我的版本需要为 false。
我注意到 BUFINITACTIVE 标志在整个工作代码中保持置位、但在我的代码中没有置位。 我没有选择使用多缓冲功能:只有在 HALCoGen 中启用了基本 SPI 驱动程序(对于两个项目)。 TXINTFLG 从未被明显使用。
我根据需要调用 spiInit 函数。
请提出任何建议。
此致
Bob 熏肉