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.
利用官方例程的msp430f66xx_uscia0_spi_09和msp430f66xx_uscia0_spi_10对两个6638的SPI进行联调,一个作主机来发送,一个作从机来接收,为什么从机接收到的数据和主机发送的数据完全不一样,不知道是我的调试方法有问题还是什么原因,希望得到指导,谢谢大家帮助。
mengxiao,
能具体描述一下,数据是怎么不一样的,该例程里面发送的数据是累加的,从0x01开始,slave端只是将接收的再发回来。
你首先确定你的硬件连线没有错误,SPI首先是通的。SOMI和SIMO没有接错,
其次需要看看在slave端的接收中断里面设置断点试试,看看UCA0RXBUF的数据是否正确。
谢谢
我首先将SIMO与SOMI相连接, 用主机发送程序,相当于做个自发自收,是可以接收到数据的,然后我是这么连的,将两个6638的P2.0,P2.1,P2.2相连,因为接收程序中对P1.4采取了中断,就将两个板子的P1.4也连起来了,然后在发送端发送中断程序中设置断点,按程序中的提示位置设置的
while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
if (UCA0RXBUF==SLV_Data) // Test for correct character RX'd
P1OUT |= 0x01; // If correct, light LED
else
P1OUT &= ~0x01; // If incorrect, clear LED
MST_Data++; // Increment data
SLV_Data++;
UCA0TXBUF = MST_Data; // SET BREAKPOINT HERE! 断点设置位置
__delay_cycles(500);
从机的断点位置为接收中断程序内的第二句话
while (!(UCA0IFG&UCTXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = UCA0RXBUF;//断点设置位置
break;
首先运行从机接收程序,然后运行主机发送程序,主机运行到断点位置,然后从机可以进入中断,可以看到UCA0RXBUF内接收到数据,然后从机再次运行,然后再运行主机,从机再次进入中断,是这么进行测试的,但是测试结果不对,从机中的UCA0RXBUF和主机中的UCA0RXBUF的数据都是混乱的