51单片机I2C总线驱动程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档