简单介绍I2C总线协议-华清远见.docx

简单介绍I2C总线协议-华清远见.docx

ID:57580709

大小:16.61 KB

页数:5页

时间:2020-08-27

简单介绍I2C总线协议-华清远见.docx_第1页
简单介绍I2C总线协议-华清远见.docx_第2页
简单介绍I2C总线协议-华清远见.docx_第3页
简单介绍I2C总线协议-华清远见.docx_第4页
简单介绍I2C总线协议-华清远见.docx_第5页
资源描述:

《简单介绍I2C总线协议-华清远见.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、简单介绍I2C总线协议本篇文章主要是简单介绍一下I2C总线协议。毕竟在智能开发的过程中,有很多时候都会用到I2C总线协议。新手赶紧拿好笔记本和笔,往下看!什么是I2C总线:I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主

2、动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。在物联仓储系统和智能小车中,很多情况下都需要使用I2C总线协议进行数据传输,下面请看详细的介绍。一、I2C总线的一些特征:•只要求两条总线线路一条串行数据线SDA一条串行时钟线SCL•每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器•它是一个真

3、正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏•串行的8位双向数据传输位速率在标准模式下可达100kbit/s快速模式下可达400kbit/s高速模式下可达3.4Mbit/s•片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整•连接到相同总线的IC数量只受到总线的最大电容400pF限制二、I2C总线在传送数据过程中共有三种类型信号:开始信号、结束信号和应答信号。开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为高电平时,SDA由

4、低电平向高电平跳变,结束传送数据。应答信号:接收数据的IC在接收到8bit数据后,向发送数据的IC发出特定的低电平脉冲,表示已收到数据。程序如下所示:起始和结束:boolI2C_Start(void){SDA_H;SCL_H;I2C_delay();if(!SDA_read)returnFALSE;//SDA线为低电平则总线忙,退出SDA_L;//拉低SDA线(当SCL为高电平时,SDA由高电平向低电平跳变表示开始信号)I2C_delay();if(SDA_read)returnFALSE;//SDA线为高

5、电平则总线出错,退出SDA_L;//数据为准备好时,拉低SCL线I2C_delay();returnTRUE;}发出开始信号之后,设备在数据未准备好时,拉低SCL线,这样主设备可知从设备未发送数据,从设备在数据准备好,可以发送的时候,停止拉低SCL线,这时候才开始真正的数据传输。程序如下所示:voidI2C_Stop(void){SCL_L;I2C_delay();SDA_L;I2C_delay();SCL_H;//SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据I2C_delay();SDA_H

6、;I2C_delay();}STOP在单主环境下非必要,但在多主环境就非常必要,主控总线的设备发送STOP后,通知总线其他设备总线已经闲置。voidI2C_Ack(void){SCL_L;I2C_delay();SDA_L;I2C_delay();SCL_H;I2C_delay();SCL_L;I2C_delay();}当主机作为接收设备时,主机对最后一个字节不应答,以向发送设备(从设备)标识数据传送结束。这是因为每次传输都应得到应答信号后再进行下一个字节传送。如果此时接收机应答了,那它就接收的不是最后一个

7、字节了。如果是最后一个字节,第9个时钟周期发送的是非应答信号(此时发送的不是应答信号就是非应答信号),最后发送停止信号。1)主发从收:主START->主发地址->从ACK->(主发数据->从ACK(循环))->主STOP或主START启动下一次传输,这一过程中,主控SCL线,从只在ACK时控SDA线,其他时刻主控SDA线。2)主收从发:主START->从发地址->主ACK->(从发数据->主ACK(循环))->接受至最后一个字节时,主NACK->主STOP或主START启动下一次传输。注意,并非每传输8位数

8、据之后,都会有ACK信号,有以下3中例外(1)当从机不能响应从机地址时(例如它正忙于其他事而无法响应IIC总线的操作,或者这个地址没有对应的从机),在第9个SCL周期内SDA线没有拉低,即没有ACK信号。这时,主机发出一个P信号终止传输或者重新发出一个S信号开始新的传输。(2)如果从机接收器在传输过程中不能接收更多的数据时,它不会发出ACK信号。这样,主机就可以意识到这点,从而发出一个P信号终止传输或者重新发出一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。