A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

UART
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),也就是通常说的串口。一般主要有4条线,RX(数据接收)、TX(数据发送)、GND(地)、VCC(电源)。他是一种全双工通信(即可以在接收数据的同时发送数据)。还需要注意的一点是两个设备通过UART通信,那么A设备的RX应该与B设备的TX连接、A设备的TX与B设备的RX连接,这个很好理解A设备发送数据那么B设备肯定是接收数据。
另外,如果一方为PC机A,一方为单片机B。需要将TTL/CMOS(单片机电平)转换为RS232(PC机电平)。因为TTL/CMOS电平范围为0-1.8/2.5/3.3/5V,逻辑上1表示高电平,0表示低电平。RS232的电平范围为-12-12V,-5—— -12V表示高电平,5-12V表示低电平,确实是反着来的。

IIC
IIC(Inter Integrated Circuit)翻译过来是内部集成电路(我也不知道为啥),这个通讯协议就两根线SCL(时钟线)、SDA(数据线)。物理上的简单意味着逻辑上的复杂。这个通讯方式是半双工(也就是可以发送和接收数据但两者不能同时进行)。IIC通信的设备在两跟线上可以挂载多个设备。
根据时序图我看可以看出:
首先我们需要知道SCL与SDA都处在高电平因为停止位的原因(后面会讲),开始我们需要先将SDA拉低到低电平再将SCL拉至低电平,这个过程为起始位,表示开始传输数据。在数据传输过程中SCL以一定的周期产生脉冲,而SCL一般在脉冲周期的上升沿采集数据,因此我们一般会先更新SDA的值,在SCL下降沿后再变换下一位的SDA的值,直到数据传输完毕(一般为8位),最后将SDA拉至低电平(这个一般由接收数据的设备拉低),SCL产生最后一个脉冲,表示接收设备接收到数据,即应答位,应答失败则会停止下一帧的传输,如果成功那么先将SCL拉高至高电平,再将SDA拉高至高电平,表示停止位,与开头第一句话形成一个循环,然后发送下一次数据。 备注:1、起始位 2、发送地址 3、读写位 4、应答位 5、停止位


我们上面说到两根线上可以挂载多各设备,因此为区分他们我们发送数据前会最先发送一帧地址(发送方式跟发送数据一样),对应的两个设备之间再进行设备数据交互,发送地址一般是7个地址位(即对多可挂载127个设备)1个指示位(0表示写,1表示读)
注意要点:
1) 严格按照时序图的要求进行操作,
2) 若与口线上带内部上拉电阻的单片机接口连接,可以不外加上拉电阻。
3) 程序中为配合相应的传输速率,在对口线操作的指令后可用NOP指令加一定的延时。
4) 为了减少意外的干扰信号将EEPROM内的数据改写可用外部写保护引脚(如果有),或者在EEPROM内部没有用的空间写入标志字,每次上电时或复位时做一次检测,判断EEPROM是否被意外改写。

SPI
SPI(Serial Peripheral interface)串行设备外围接口,是一种全双工的通信协议,常被用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。有四个引脚:SDI(串行输入)、SDO(串行输出)、SCK(串行移位时钟,由主设备产生)、CS(从设备使能信号,由主设备控制)。在SPI上可以挂载一个主设备和多个从设备,一次一个主设备只与一个从设备进行通信,通信的从设备CS为低电平(有效),也可以不用CS引脚,那么SPI上只能有一个主设备与一个从设备。
数据传输,数据在时钟上升或下降沿由SDO输出在下降或上升沿读入。8/16次的时钟改变完成8/16次的数据传输。缺点是SPI没有应答机制,全都由主设备进行控制数据传输成功与否没法直接验证。

总结
上述三种传输方式都是串行传输方式,也就是只能一位位的传输。传输距离上来看,UART的RS232(全双工)一般在15M以内,RS485(半双工)在1500M以内。而IIC与SPI一般都是只限于板级。传输速率上与传输距离相反,232与485也就几百K,IIC与SPI是十几M的样子。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马