您的位置:首页 > 其它

UART、I2C以及SPI协议学习总结

2017-07-20 16:54 337 查看
UART(通用异步收发器)异步串行通信

是属于异步通信。所谓的异步通信,简单来讲就是不同步,比如计算机发送给单片机,计算机只负责把数据通过TXD发送出来即可,接收数据是单片机自己的事。UART通信先是一直保持高电平,发送数据之前有起始位0,而后是8位数据位(数据位是固定长度,福特率分之一),完了之后是1位停止位(保持高电平))。(数据位是低位在先,高位在后)

UART通信虽然是两条线(TXD和RXD),但是实际上一条线就足够通信。 (半双工)

I2C

而I2C(两线穿行接口)属于同步通信,SCL负责收发双方的时钟节拍,SDA数据线负责传输数据。I2C的发送方和接收方都以SCL这个时钟节拍为基准进行收发数据。

I2C每次通信都必须有两根线才能进行通信。

I2C总线是开漏引脚并联的结构,因此外部要加上上拉电阻。开漏电路外部加上拉就构成了线“与”的关系,所谓的线“与”就是讲,所以得器件都是高电平才是高电平,有一个为低就是低。(这样做每一个器件都可以做主机)

I2C的其实信号定义为在SCL的高电平期间,SDA给一个下降沿,表示起始信号。数据部分I2C无固定波特率但有时序要求,只有在SCL为高电平期间,SDA才允许变化!(但是在I2C总线的起始和结束时例外。)高位在先低位在后。(因为在SCL为高电平期间,接收方要来读取当前SDA的信号)(这么来讲的话,AD里面的I2C器件PCF8951,P331原文”PCF8591的转换时钟周期为I2C的SCL,8个SCL周期完成一次转换(),所以当前的转换结果总是在下一个字节的8个SCL上才能读出,因此这里的第一条语句的作用是产生一个整体的SCL时钟提供给PCF8591进行时钟转换,第二次读取的是当前的转换结果,如果只使用第二条语句的话,每次读到的都是上一次的转换结果。”)停止信号是在SCL为低电平期间,SDA由低到高产生一个上升沿。

(全双工)

SPI 穿行外围设备接口,高速、全双工、同步通信

(全双工)

通信的三种类型:

1.单工:只允许一方向另一方发送信息,而另一方不能回传信息。比如电视遥控,收音机广播。

2.半双工:数据可以在双方之间进行传播,但是同一时刻只允许一方发送给另一方。比如说对讲机。

3.全双工:数据可在双方之间进行传播,也允许同一时刻两方同时接收数据。比如打电话。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: