I2C总线与串口
I2C总线是一种串行数据总线,只有二根信号线,一根是双向的数据线SDA,另一根是时钟线SCL.在
I2C总线上传送的一个数据字节由八位组成.总线对每次传送的字节数没有限制,但每个字节后必须跟一位应答位.数据传送首先传送最高位(MSB).首先由主机发出启动信号“S”(SDA在SCL高电平期间由高电平跳变为低电平),然后由主机发送一个字节的数据.启动信号后的第一个字节数据具有特殊含义:高七位是从机的地址,第八位是传送方向位,0表示主机发送数据(写),1表示主机接收数据(读).被寻址到的从机设备按传送方向位设置为对应工作方式.标准I2C总线的设备都有一个七位地址,所有连接在I2C总线上的设备都接收启动信号后的第一个字节,并将接收到的地址与自己的地址进行比较,如果地址相符则为主机要寻访的从机,应在第九位答时钟脉冲时向SDA线送出低电平作为应答.除了第一字节是通用呼叫地址或十位从机地址之外,第二字节开始即数据字节.数据传送完毕,由主机发出停止信号“P”(SDA在SCL高电平期间由低电平跳变为高电平).
个人觉得I2C总线思想有点像USB总线,都是广播式的.
串口是一根线传送数据,一根线接收数据
I2C是一根线是时钟线,一根线是数据线,数据线是双向的,可以接收,也可以发送.
I2C接口是"器件间"接口,是在一块板子之内数据的,RS232串行接口是"设备间"接口,更多的是用于两台设备之间传输数据.从传输数据的距离来说,应该是RS232传输的距离较远,但二者具体差别多少,我没有做过专门的试验.
有很大方式的不同.譬如i2c是带地址的通讯,支持多方通讯,串口就搞不定;两者通讯的机制原理也不同;另外速度上I2C相对会快一些,好像i2c是philips发明的,目的就是解决速度的瓶颈.网上有很多资料,自己搜一下吧!
i2c是同步串行传输,RS232(或曰UART,通用异步收发器)是异步串行传输.
同步方式必须有一根时钟线连接传输的两端,i2c里的scl就是这根时钟线.因为同步方式不用花费额外的开销对其数据,所以其传输速率一般比异步方式高
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』