51单片机I2C总线驱动程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机I2C总线驱动程序
SI2I2C 总线是PHLIPS 公司推出的一种串行总线,是具备多主机系统所需
的包括总线裁决和高低速器件同步功能的高性能串行总线。I2C 总线只有两根
双向信号线。一根是数据线SDA,另一根是时钟线SCL。
一.I2C 系统结构每个接到I2C 总线上的器件都有唯一的地址。主机与其它器
件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。由
总线上接收数据的器件则为接收器。
二.数据位的有效性规定I2C 总线进行数据传送时,时钟信号为高电平期间,
数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线
上的高电平或低电平状态才允许变化。
三.字节传送与应答每一个字节必须保证是8 位长度。数据传送时,先传送最
高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有
9 位)。
四.驱动程序#define uchar unsigned char#define uint unsigned int#define somenop() _nop_(),_nop_(),_nop_(),_nop_(),_nop_(),_nop_()sbit SCL=P2;sb it SDA=P2;123451.起始信号和终止信号
SCL 线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号;SCL
线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。
起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用
的状态;在终止信号产生后,总线就处于空闲状态
void I2C_Start() //起始{SCL=1;somenop();SDA=1;somenop(); SDA=0;somenop();SCL=0;somenop();}void I2C_Stop() //终止{ SDA=0;somenop();SCL=1;somenop();SDA=1;somenop();}12345678910111213141