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.

[参考译文] CCS/TMS320F2.8377万S:?

Guru**** 2485025 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/635472/ccs-tms320f28377s

部件号:TMS320F2.8377万S

工具/软件: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数据?

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

    你好,Istvan mate,

    一个重要的说明-您的从属设备是否需要芯片选择在每16位字之后或在所有3位字都传输之后达到高值?

    此致,

    克里斯

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

    您好,Kris,

    我只需要在传输所有3 x 16位字后才需要它。  

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

    我的首选方法是在专用GPIO上设置实际SPISTE信号(如果您使用的是BGA以外的软件包,则甚至可以取消绑定),并将XINT配置为在该GPIO的上升边缘(SPI传输完成)上触发。 在该ISR中,您可以为正在与之通信的从属设备切换仿真从属设备选择GPIO高电平。

    当然,在写入传输数据之前,将相应的从属选择GPIO设置为低。

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

    听起来不错。 我来试一下。 感谢你的帮助。

    此致,
    伊斯特文