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.

[参考译文] MSP430FR2476:MSP430之间的 SPI 通信问题

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1158873/msp430fr2476-spi-communication-issue-between-msp430

器件型号:MSP430FR2476

准备两个 MPS430FR2476、每个都作为主器件/从器件
SPI 通信(与 eUSCI_A0通信)功能正在开发中。


其中、与[现象]类似、这种情况是由于意外行为而无法实现[您要做的事情]。
很抱歉给您带来麻烦、但请回答以下[问题]。


【现象】
在向主器件侧的 UCAxTXBUF 写入数据后、它不但打开 UCTXIFG、而且打开"UCRXIFG"位。
即使在从器件之间的通信电缆断开时、UCRXIFG 也会打开。


[您要做什么]
当在一段时间内、在主器件侧没有接收到数据时、我想检测超时错误。
μ⇒当前、接收到的信号在传输后立即到达、因此无法检测到。


【问题】
1.上述[现象]行为是否正常? 如果出现错误、是否有权变措施?
2.是否有可能实现[您想做什么]? 如果是、您是否有任何示例代码?


【详细信息】
主器件/从器件执行以下处理。


主器件:以1ms 的间隔执行以下进程。
μ ①数据传输 EUSCI_A_SPI_transmitData (EUSCI_A0_BASE、TX_DATA);
②等待 BUSY 关闭 while (EUSCI_A_SPI_isBusy (EUSCI_A0_BASE));
③在(!EUSCI_A_SPI_getInterruptStatus (EUSCI_A0_BASE、EUSCI_A_SPI_receive_interrupt))时检查接收标志;
μ ④数据接收 * RX_DATA = EUSCI_A_SPI_receiveData (EUSCI_A0_BASE);


从机:在 UCRXIFG 中断处执行以下处理。
μ ①数据传输 EUSCI_A_SPI_transmitData (EUSCI_A0_BASE、TX_DATA);
②等待 BUSY 关闭   while (EUSCI_A_SPI_isBusy (EUSCI_A0_BASE));
③接收标志检查  while (!EUSCI_A_SPI_getInterruptStatus (EUSCI_A0_BASE、EUSCI_A_SPI_receive_interrupt));
μ ④数据接收 * RX_DATA = EUSCI_A_SPI_receiveData (EUSCI_A0_BASE);


[寄存器设置]

偏移 首字母缩写词 主器件 从器件
00h UCAxCTLW0 0x6B82 0x6302
00h UCAxCTL1 0x03 0x03
01小时 UCAxCTL0 0x00 0x00
06小时 UCAxBRW 0x02 0x00
06小时 UCAxBR0 0x02 0x00
07小时 UCAxBR1 0x00 0x00
0Ah UCAxSTATW 0x0000 0x0000
0通道 UCAxRXBUF 0X**** 0X****
0Eh UCAxTXBUF 0X**** 0X****
1Ah UCAxIE 0x0000 0x0001
1通道 UCAxIFG 0x000x 0x000x
1Eh UCAxIV 0x0000

0x0002

此致。

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

    这对于 SPI 而言是正常的。 由于它的传输、它也会接收、并且无法对该行为进行去耦。 由于主器件运行时钟、因此必须采用这种方式。

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

    1) 1)是的、这是 SPI 的工作方式。 主器件侧只是根据其时钟对 MISO 进行采样、不知道从器件是否发送任何数据。

    2)一般而言、否 如果您对从器件应发送的内容有一些期望、则可以检查数据。 具体而言、如果您知道它不会发送0x00 [0xFF]、则可以在 MISO 上放置一个下拉[上拉]来检测它是否已连接。

    SPI 以隐式方式(同时)接收每个发送字节的字节。 从器件的第一个接收字节完全具有任何意义是不寻常的(虽然可能)、因为它还不知道主器件正在询问什么。