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.

[参考译文] MSP430FR5994:传输后 SPI TX 引脚电平问题且 IFG 启动缓慢;检查和验证;

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1318723/msp430fr5994-problem-with-spi-tx-pin-level-after-transmission-and-slow-ifg-check

器件型号:MSP430FR5994

尊敬的所有人:

我将在 MSP430FR5994上使用 UCA2来执行一些 SPI 操作。 连接不同的器件后、我将手动处理芯片选择。

初始化由这个代码片段完成

SPI_CTLW0 = UCSWRST;
SPI_CTLW0 |= UCSSEL__SMCLK | UCCKPH_1 | UCCKPL__LOW | UC7BIT__8BIT | UCMSB | UCMST__MASTER | UCSYNC | UCMODE_0;
SPI_BRW = 0;
SPI_CTLW0 &= ~UCSWRST;

之后、我举例来说、通过发送一个字节

SPI_TXBUF = byte_to_write;
unsigned int counter = SPI_TIME_OUT_COUNTER;
while ( (!(SPI_IFG & UCTXIFG)) && (counter > 0) ) --counter;

在此实施中、我有两个问题、我希望您能帮我解决问题或指出正确的方向:

  1. 发送字节后、TX 引脚的电平(通常)为高电平、并且只有在读取时才会变为低电平、因此会将 TX 缓冲区设置为0x00。 是否有很好的修复方法、无需之后发送0x00? 我是否错误配置了某些内容?
  2. 在发送下一个字节之前、需要大约3-4us 的惊人长的时间(MCLCK = SPI-CLOCK = 4MHz)。 有更好/更快的方法吗?

 

谢谢你的帮助和最良好的祝愿

托比亚斯

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

    尊敬的 Tobias:

    您是否从我们的某个示例项目开始?  

    发送字节后、TX 引脚的电平(通常)为高电平、只有在读取时才为低电平、因此将 TX 缓冲区设置为0x00。 是否有很好的修复方法、无需之后发送0x00? 我是否错误配置了某些内容?

    您是指 MOSI 引脚状态吗?  MOSI 的状态应反映发送的最后一个位、因为它仅在适当的 SPI 时钟沿发生变化。  您可以在传输之间将其重新配置为 GPIO 并将其驱动为低电平、或添加下拉。  

    需要大约3-4us 的惊人长的时间(MCLCK=SPI-clock = 4MHz)才能发送下一个字节。 是否有更好/更快的方法?

    在4MHz 发送8个位需要至少2us、之后您只有大约4-8个周期的 MCLK、才能达到3-4us。 您当前设置的超时值是多少?  

    此致、
    布兰登·费舍尔