参加活动,分享对于LM3S基础的通信模块的一些理解。有错误大家正好也给我指正一下。
首先从异步通信开始。
UART通用异步收发器,UART是通用的异步传输模式,在它这种基础上加上其他接口或者解码器就衍生出多种异步传输模式,比如232,485,红外线等。这就好像脚上穿
高跟鞋,跑鞋,皮鞋等,虽然走路方式不一样,但是其原理都是脚在向前走。自己对异步和同步的理解,异步传输就好像写信一样。假如每个信件里面写一个字符,我发送3个字符三封信,那么对方收到三封信之间的间隔可以是随意的。而同步通信则好像打电话一样。它要实时的监控着整个发送过程。从这两种方式上可以看出异步传输当发送完数据就可以干别的事情,而不必关心对方是否收到,就像给多个人写信,发了就可以给另外一个人发而不管上一封是否收到。而同步则不行,不能同时和两个以上的人通电话吧,怎么也得挂了一个再打另外一个。
TI的UART外设中,相关的功能可以参考下数据手册,这想分享的一点是FIFO应用的好处。如果不用FIFO,UART是使用的传统的双字节操作。而使用的FIFO就是16x8了。使用FIFO可以大大的降低CPU的使用率。在这做个比喻就比较清楚了。假如双字节操作模式就像饭店里两个水壶,客人用水,当用完水饭店的工作人员得马上填充。
这样,如果用的快,工作人员会不停的补充。而现在加了FIFO,相当于用的是一个大水桶供水,只要我们添加一次,工作人员就可以歇着或者干别的事情。等水用到什么深度就可以再去添加。这样就可以大大减轻CPU的负荷了。尤其是在数据大的时候,用FIFO的优势很大。
同步通信:
SPI和IIC是最长用也是最基础的两种同步传输方式。SPI的连接一般有四根:时钟,发送,接收和片选。IIC的连线有两根:时钟和数据。在这从通信过程对照的说下这两种总线。
1、发送数据首先要知道目标地址。在这里SPI使用的片选线,只要把连接对应目标设备上片选线拉低就可以了,不需要目标响应,比较霸道一点。而IIC是要先把目标地址发送出去来寻找目标设备就像在人群中喊一个人姓名一样,如果是目标则会响应你。其实这两种方法可以认为一个是硬件的方法一个是软件的方法。所以他们也有这两种方法的特征。前者的优点是速度快,效率高。缺点是布线复杂了连接多个设备得多个片选线。而后者正好相反。
2、在发送的过程中,SPI和IIC的方式也有很大的区别。SPI有三种规则(TI,飞思卡尔,MICROWIRE),他们都采取的是无应答的方式。虽然他们的开始信号等定义规则不同,但是道理一样,尤其是用TI库函数操作时,可以忽略一些。SPI在开始信号过后,在主机的CLK下,快速的发送数据。用记电话号码举例:甲是主,乙是从。甲在接通乙后,按自己说话的速度告诉一遍电话号码,中间没有任何停顿和重复,说完OK。乙得马上记下所说的号码。这样的优点就是速度快。而缺点也是明显的。第一,也许乙记的号码是错误的,而甲是不知道的。第二,对乙要求要高一些,道理很简单,如果说号码的人语速非常快,我们必须得反应非常快。这也许就是LM3S,SPI模块做主时,速度可达系统时钟的1/2,而作从机只能达1/12的原因。
再说下IIC总线,首先肯定有一个开始信号,开始信号过后,根据CLK发送数据,在这与SPI有一个比较大的区别是每发送一个数据,必须等待从机的响应,如果从机不响应,主机是发不了数据的。同理用电话号码举例,甲每读一个数字,就得等乙答应一声。这种方式的缺点是传输速度慢。而优点也易见,一是传送的数据准确,因为有了乙的反馈。二是对从机要求低一点,如果从机速度比较慢也没事,因为此时主机一般得等着。
3.IIC是真正意义上的多主,可以类比公司的电话分机的关系。而SPI不是。
知道这几种基础的通信意义,有时候就知道什么时候用什么总线。我觉LM3S芯片上大多数功能,当我们有了一定了解,最好都能类比到生活中的事情,而且也是都可以类比的。这样对更深刻的掌握和应用有很大的提高。
在学习TI的M3的日子里,感觉TI还是很有自己的特色的,比如都知道的集成以太网。还有我觉得TI的M3软件方面的资源,真是异常的丰富,只是软件方面的东西感觉虚拟了一点,容易造成忽视。但真正用起来才能感觉到它所带来的价值比提高芯片硬件上的功能都要大。OK,我的分享写完了。呵呵 |