欢迎来到天天文库
浏览记录
ID:50174261
大小:91.00 KB
页数:5页
时间:2020-03-06
《I2C 与UART的区别与比较.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、I2CIIC本身是为板级通讯设计,没有考虑远距离通讯.UART通讯编程简单,通讯速度远比IIC快,可以直接使用RS485延伸通讯距离达到1km,通讯速度很容易做高。UART是一个并行输入成为串行输出的芯片...有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信.I2C(Inter-IntegratedCircuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接
2、口线少,控制方式简单,器件封装形式小,通信速率较高等优点。发送器:发送数据到总线的器件; 接收器:从总线接收数据的器件; 主机:初始化发送产生时钟信号和终止发送的器件; 从机:被主机寻址的器件; 多主机:同时有多于一个主机尝试控制总线但不破坏传输; 仲裁:是一个在有多个主机同时尝试控制总线但只允许其中一个控制总线并使传输不被破坏 的过程; 同步:两个或多个器件同步时钟信号的过程。两条总线线路:一条串行数据线SDA,一条串行时钟线SCL;SDA线上的数据必须在时钟的高电平周期保持稳定。数据线的高或低电平状态只有在SCL线的时钟信号是低
3、电平时才能改变。SCL线是高电平时,SDA线从高电平向低电平切换,这个情况表示起始条件; SCL线是高电平时,SDA线由低电平向高电平切换,这个情况表示停止条件。发送到SDA线上的每个字节必须为8位,每次传输可以发送的字节数量不受限制。每个字节后必须跟一个响应位。首先传输的是数据的最高位(MSB),如果从机要完成一些其他功能后(例如一个内部中断服务程序)才能接收或发送下一个完整的数据字节,可以使时钟线SCL保持低电平,迫使主机进入等待状态,当从机准备好接收下一个数据字节并释放时钟线SCL后数据传输继续。数据传输必须带响应,相关的响应时钟脉冲由主
4、机产生。在响应的时钟脉冲期间发送器释放SDA线(高)。在响应的时钟脉冲期间,接收器必须将SDA线拉低,使它在这个时钟脉冲的高电平期间保持稳定的低电平。写操作 写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。 读操作读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。I2C的读操作与写操作:I2C与UART不同的地方首
5、先在于先传高位,后传送低位。主机写数据时,每发送一个字节,接收机需要回复一个应答位“0”,通过应答位来判断从机是否接收成功。主机读数据时,接收一个字节结束后,主机也需要发送一应答位“0”,但是当接收最后一个字节结束后,则需发送一个非应答位“1”,发完了1后,再发一个停止信号,最终结束通信。I2C写数据流程首先I2C起始信号,然后发送首字节,即器件(EEPROM)地址。并且在读写方向位上选择“写操作”方向。(0xa0)第二个字节,发送数据的存储地址,就是要读取的数据所存储在EEPROM中的位置。第三个字节,发送要存储的数据第一个字节,第二个字节……
6、注意:在写数据的过程中,都要等待EEPROM返回一个“应答位”。write_eeprom:voidwrite_e2prom(uint8addr,uint8databyte){I2CStart();I2CSend(0xa0);//起始信号后写入器件地址,写操作I2CSend(addr);//写入发送数据的存储地址I2CSend(databyte)//发送存储的数据I2CStop;}voidI2CSend(uint8byte){uint8mask=0x80;//数据由高位依次传输inti;for(i=0;i<8;i++){SCL=0;Delay();
7、If(mask&byte){SDA=1;}ElseSDA=0;Mask>>=1;Delay();//SDA延迟一个高电平SCL=1;//下一个时序,Delay();//SCL延迟一个低电平,保证时序的完整性}//一个字节的数据传输完成之后,要等待应答位SCL=0;//接着上一个时序,保证完整性SDA=1;//主机释放SDA,拉高SDA,观察应答位Delay();//延迟一个时序,等待应答位j=SDA;//取出从机返回的应答位进行判断,低电平的时候有效Delay();//延迟一个时序SCL=1;//拉高SCL,等待下次传输}UART通信UART是一
8、种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括与监控调试器
此文档下载收益归作者所有