i2c通讯协议及程序

上传人:ni****g 文档编号:562678016 上传时间:2022-11-23 格式:DOCX 页数:6 大小:135.45KB
返回 下载 相关 举报
i2c通讯协议及程序_第1页
第1页 / 共6页
i2c通讯协议及程序_第2页
第2页 / 共6页
i2c通讯协议及程序_第3页
第3页 / 共6页
i2c通讯协议及程序_第4页
第4页 / 共6页
i2c通讯协议及程序_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《i2c通讯协议及程序》由会员分享,可在线阅读,更多相关《i2c通讯协议及程序(6页珍藏版)》请在金锄头文库上搜索。

1、I2C 通信协议简介(2023-01-17 10:48:03)转 载标签:分类: 通讯协议杂谈ACK 是 acknowledge 的意思,确认.摒弃简洁的状况,这里只对 I2C 做简洁的介绍。一、I2C 总线的一些特征: 只要求两条总线线路一条串行数据线SDA 一条串行时钟线SCL 每个连接到总线的器件都可以通过唯一的地址和始终存在的简洁的主机从机关系软件设定地址主机可以作为主机发送器或主机接收器 它是一个真正的多主机总线假设两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁防止数据被破坏 串行的 8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达 400kbit/

2、s 高速模式下可达 3.4Mbit/s 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整 连接到一样总线的IC 数量只受到总线的最大电容 400pF 限制二、I2C 总线在传送数据过程中共有三种类型信号:开头信号、完毕信号和应答信号。开头信号:SCL 为高电寻常,SDA 由高电平向低电平跳变,开头传送数据。完毕信号:SCL 为高电寻常,SDA 由低电平向高电平跳变,完毕传送数据。应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据起始和完毕:bool I2C_Start(void)SDA_H; SCL_H;I2C_delay;if

3、(!SDA_read)return FALSE; / SDA 线为低电平则总线忙,退出SDA_L;/ 拉低SDA 线(当SCL 为高电寻常,SDA 由高电平向低电平跳变表示开头信号)I2C_delay;if(SDA_read) return FALSE; / SDA 线为高电平则总线出错,退出SDA_L;/数据为预备好时,拉低 SCL 线I2C_delay;return TRUE;发出开头信号之后,设备在数据未预备好时,拉低SCL 线,这样主设备可知从设备未发送数据,从设备在数据预备好,可以发送的时候, 停顿拉低SCL 线,这时候才开头真正的数据传输void I2C_Stop(void)SCL

4、_L;I2C_delay; SDA_L;I2C_delay;SCL_H;/ SCL 为高电寻常,SDA 由低电平向高电平跳变,完毕传送数据I2C_delay;SDA_H;I2C_delay;STOP 在单主环境下非必要,但在多主环境就格外必要,主控总线的设备发送STOP 后,通知总线其他设备总线已经闲置.void I2C_Ack(void)SCL_L;I2C_delay; SDA_L;I2C_delay; SCL_H;I2C_delay; SCL_L;I2C_delay;当主机作为接收设备时,主机对最终一个字节不应答,以向发送设备 (从设备)标识数据传送完毕。这是由于每次传输都应得到应答信号后

5、再进展下一个字节传送。假设此时接收机应答了,那它就接收的不是最终一个字节了。假设是最终一个字节,第9 个时钟周期发送的是非应答信号(此时发送的不是应答信号就是非应答信号),最终发送停顿信号。1) 主发从收:主START-主发地址-从ACK-(主发数据-从ACK(循环)-主STOP 或主 START 启动下一次传输这一过程中,主控SCL 线,从只在ACK 时控SDA 线,其他时刻主控SDA 线。2) 主收从发:主START-从发地址-主ACK-(从发数据-主ACK(循环)-承受至最终一个字节时,主 NACK-主 STOP 或主START 启动下一次传输并非每传输 8 位数据之后,都会有ACK 信

6、号,有以下 3 中例外1. 当从机不能响应从机地址时(例如它正忙于其他事而无法响应IIC 总线的操作,或者这个地址没有对应的从机),在第 9 个SCL 周期内SDA 线没有拉低,即没有ACK 信号。这时,主机发出一个P 信号终止传输或者重发出一个S 信号开头的传输。2. 假设从机接收器在传输过程中不能接收更多的数据时,它不会发出ACK 信号。这样,主机就可以意识到这点,从而发出一个P 信号终止传输或者重发出一个S 信号开头的传输。3. 主机接收器在接收到最终一个字节后,也不会发出ACK 信号。于是,从机发送器释放SDA 线,以允许主机发出P 信号完毕传输。位传输:主机向从机发送一字节数据void I2C_SendByte(u8 SendByte) /数据从高位到低位u8 i=8; while(i-)SCL_L;I2C_delay;if(SendByte&0x80) SDA_H;elseSDA_L;SendByte按 I2C 协议发出起始讯号;-发出 7 位器件地址和写模式;-要写入的存储区首地址;-用页写入方式或字节写入方式写入数据;3、 读:检测 SDA 是否空闲;-按 I2C 协议发出起始讯号;-发出 7 位器件地址和写模式伪写;-发出要读取的存储区首地址;-重发起始讯号;-发出 7 位器件地址和读模式;-接收数据;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号