电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

I2C通信原理

I2C通信原理_第1页
1/8
I2C通信原理_第2页
2/8
I2C通信原理_第3页
3/8
I2C 通信原理 一、 I2C 的时序是比较复杂的,你如果能把 I2C 的时序弄清,那其他器件的时序都不成问题了。 我就按照我的理解来跟你讲吧。 直接用程序来说明吧。 NOP(),一个机器周期时间的延迟,12M 晶振时为 1 微秒 NOPS(),4 个 NOP()。 sbit SDA P2^0; sbit SCL P2^1; 定义数据线和时钟线接口 首先,I2C 有 2 个重要的线,SDA 数据线 SCL 时钟线,当总线上没有进行信息传送时,SDA和 SCL 都为高电平,我们称之为释放总线。 开始传送信息时,要有一个开始信号, 开始信号 :定义为在 SCL 为高电平的时候,SDA 从高电平拉低。 start() { SDA=1; NOP(); //同你图中 SDA/SCL 上升/下降所用时间 1US SCL=1; NOPS(); //建立开始信号(同你图中 TSU 起始信号建立时间一样 4US) SDA=0; //SDA 拉低 NOPS(); SCL=0; //SCL 拉低, 钳住总线,准备发送或接收数据 NOP(); } 结束信号:与开始信号相反,在 SCL 为高电平时,SDA 从低拉高 stop() { SDA=0; NOP(); SCL=1; NOPS(); //建立信号时间 SDA=1; //拉高 结束。 NOPS(); } 我晕,发现写了半天还有好多。。算了 帮人帮到底了 发送/接收一个数据:数据的发送和接收都是在 SCL 为低电平的时候发生,因为 SCL 为高电平时已给了开始和结束信号。发送数据时,当数据准备读入时,将 SCL 线暂时拉高(SCL为高时,SDA 无法改变状态),保持一段时间然后拉低(同你图中的 TDH,数据输出保持时间),这时数据则发送完毕到 SDA 上。接收则与之大同小异。当 SDA 线上有数据过来时,先将 SCL 拉高,建立好时间,然后拉低,数据则被读入。(关于如何被发出以及如何被读入则是芯片做的事,我们不用管,只需记住SCL 拉低,数据发出/读入) 用程序来讲就是: send(uchar c) //发送一个字节 { uint i; for(i=0;i<8;i++) //该字节8 位从高往低发送 { if((c<

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群