工具/软件:Code Composer Studio
我正在TMS320F2.8377万S上使用SPI_A。 TMS320F2.8377万S 是主控制器,我有几个从属控制器。 对于每个从属设备,我都有一个GPIO控制芯片选择。
对于其中一个从属设备,我必须传输3 x 16位字,而上升芯片选择将数据锁定在从属设备上。 这将强制我的程序监控SPI数据传输的结束,并仅在发送所有数据后取消断言芯片选择。 我有一个等待时间循环,直到 SpiaRegs.SPIFFTX.Bit.TXFFST为空,然后将芯片选择设为高。 示波器显示在 SpiaRegs.SPIFFTX.Bit.TXFFST返回零后传输更多数据,因此我的芯片选择仅锁定部分数据。 TXFIFO显示为空并不 表示已发送所有数据。
UINT16 sdata,t0,t1;
T0 = 0x0034;
T1 = 0x0177;
GPIO_WritePin (35,0); //芯片选择DDR
sdata = 0x2068;
SPI_xmit(sdata);
sdata = t0 + 0x4000;
SPI_xmit(sdata);
sdata = T1 + 0x4000;
SPI_xmit(sdata);
while (SpiaRegs.SPIFFTX.Bit.TXFFST !=0)
{
;
}//确保SPI_A TX缓冲区为空
GPIO写入引脚(35,1);
在将GPIO设置为35高后,示波器仍显示正在传输的数据,因此TXFFST为零不是传输的终点。 是否有保证的方法让程序知道何时发送了所有SPI数据?