准备两个 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 |
此致。