SPI通信是个控制主机的通信模式,例如A是主机,B是从机的话,你只能控制A向B里面写数据或从B读数据,你不能对B控制。这个SPI通信方式比较奇怪,因为不管你向B写数据或从B读数据,从硬件的信号反应上来讲是完全相同的!当时我理解了这个时感觉有点诡异···A向B传输一个字节必定有一个字节从B向A传输,同时进行!!感觉向力的相互作用一样,我打你一下,我必定也会疼,好凌乱···
430的SPI算是硬件SPI通信,之前通信没有成功是因为每发送一个字节后没有加个延时,里面什么原因不清楚,就是要根据通信的波特率加相应的延时时间。如下:
/* 发送地址 */
while (!(UCB3IFG&UCTXIFG));
UCB3TXBUF = (addr/256); //加的延时时间
for(i = 2;i > 0;i--);
while (!(UCB3IFG&UCTXIFG));
UCB3TXBUF = (addr);
for(i = 2;i > 0;i--); //加的延时时间
我这个延时时间少,因为用的SPI波特率为8M,频率算很快了。我测试下来的结果是波特率越小,后面延时时间需要的越长。
SPI的波特率要小于或等于所用的时钟的1/2。
太困了···