发表于:2006-12-01 17:06:00
楼主
接下来写写通信方面的东西吧。我没上过通信原理这门让人想死的课程,所以我觉得通信还是很简单的。
先是串行吧,再讲并行。其实这些都是名字,实际实际使用起来是很简单的。所以大家大可不必为了要使系统之间能够通信而恶补通讯原理知识。
SPI总线只用3根线,就可以完成数据的输入输出。理论上这种总线的传输速率是没有限制的,只要你的时钟够快,配套硬件够强。3根线分别是SCK,SDI,SDO。SCK是时钟线,SDI数据输入,SDO数据输出,所谓的数据输入输出都是针对自己来言的。也就是说SDI就是从外面将数据读进来,而SDO就是自己向外输出数据。
想必大家都不是很喜欢看时序图,那我就简单描述一下工作原理吧。SCK线上传的是方波,发送端就在方波的上升沿或下降沿,将自己的数据拆成BIT发送出去,通常是由高位发起,这样每个上升沿发一个bit,那么8个周期之后1个BYTE的数据就发好了。接收方则是在每个上升沿,采集一次总线的状态,这样当发送方将数据送上总线的时候,接收方恰好在采集,于是数据就这样被方便的传输上去了。
那么两方谁来控制总线呢,这就产生了谁是主导者的问题,所以SPI是一种有主从的总线。存在谁来控制谁的问题。
当然为了更好的控制,有时你会看到一个SS线,它是为了释放MCU的时间,产生要传信息的中断而使用的。
现在SPI总线的芯片特别的多,所以很多人已经不大去关心它的时序,而是直接往输出寄存器里赋值就好了。调SPI这么久发现只要你硬件链接没有问题,它很少出错,所以个人非常喜欢使用这种总线。但要注意,虽然SPI不限速,但还是不要太块吧。不然它很有可能成为你系统的定时炸弹。