I2C总线入门(很详细-很经典).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
12 C总线入门 I) 最近学习5 1单片机,学到A/D, D/A转换的时候发现我板子上的转换芯 片?不是书上所讲的ADCO 8 0 4和DACO 8 3 2而是P CF 8 591 T ,看了一下它 的数据手册,发现它并不是书上所说的并行传输数据,是使用I2C总线传输 的。搞了两天才搞懂,写出来给大家分享一下,不足之处请务必不吝指岀。 1. i?c gtt 介绍 IJC Ata (IMer IC Bu≤) Ih PHlUPS公司捡Hl?绘近束锻电FMIm控Sw皱城广泛采冊的 M标ML它肚附通信的Jlff按口仪少■控Mm*妙件MKB :仁违估JaE较扁第优点.Λ hΛ?f∣M?.砒以“7个总IUl件的时按到Fc总线上? Af?的暮件AJl川知0的按【】? Ii过淮址来谏別迪仃对叙 便它们町以性曲ljCJ^ it irdMur. IJCfitt由数飙嫂SDA和时伸饮$ci?IWi剣农购成通仙找烁Kt町发iX?.也 廨? Λ CPυ 1J?F? ICZrn]? IC IHCZrWJΛ5Oh ?l?αiX. 为 40Ok协.? 冲檢检器件均幷联比总找1:?但树个畐件秋冋 的地址?花仿息传输过程中.FC总找匕井 联的婷TsB件Bt足粧担11(咸主检as人(Λft?ah这取决F它所宴知?的 功能? CPU发出的控制仙号分为地址印和敦IK码曲挪分X 颐码用來选?L即按通;U婆控制 的电Wh數!K码足遇倚的内笫 这样#IC控财电*总饯匕 妙彼此独t 以上是I2C总线的简单介绍。 就比如说AT 2 4C0 2存储芯片,和PCF8591数模模数转换芯片都支持I 2C端 口。(如下图) 8-lead PDlP NoAlN2N3 AINVs辽叵rlF匡叵[ΣΓIJθ] vDD 回 AoUT 回 No Al N2 N3 AIN Vs 辽叵rlF匡叵[ΣΓI Jθ] vDD 回 AoUT 回 YREF 迢 AGND PCFδ591P — 卫IExT A 2 )接下来看如何使用I 2C 2 )接下来看如何使用I 2C总线进行通信 3. FC总线通信格式 图8.1.2为I2C总线上进厅一次数据传输的通信格式? 2 1 8 2 3 4 AOE Al匚 A2□ GND匚 □ VCC WP ZJS □ SDA 以上是I 2 C总线通信的格式。 } } } } 山上图可以看出进行通信需要以下儿个步骤 a.初始化I 2 C总线 就是把SDA和SCL都变成高电平。 VOid init()√/ 初始化 { OSDA= 1; DdCIay(); SCL=I; d clay() } de 1 ay ()为延时函数 VOid de 1 ay ()。〃延时45个微秒 {;;} b.发送起始信号 就是保持SCL为高电平,而SDA从高电平降为低电平(这是I 2C总线的规定, 别问我为什么) VO i Ci StartO //起始信号 { ASDA=1; delay (); SCL=I; ?5de I ay 0 : SDA=O; ^dCIay (): } } C.发送地址字(芯片的硬件地址) 7.1地址 12C总线系统”啲每一片PC比591 iβ过发送有效划Il至该器件来傲沽。该地址包括同宦部分和可缩 酬分C可绽程却分必须根摇地址引阂AO、Al和A2來设亂在I2C.他协议中地址必须足起始条 件后作为第一个字节发送?地址字节的最后一位是冃于设置以后数据传输方向的渎泻位「(见图4、 16、 17) msb ISb 1 0 0 1 A2 AI AO R/W ―Y Y fixed Part PrOgrammable Pa rt 加地址 (8591的数据手册) 前四位对同一种芯片来说是固定的,不同的芯片之间不同。就像pcf 8591 是 100 1 而 a t2 4 c 0 2 是 IoIO Idθl Id θl 1 0 A2 All Ao IR/W MSB LSB 接下来三位AO5AI,A2是可编程的三个地址位,这里说说的编程并不是通过 软件编程,而是把AO, A15A2三个引脚接不同的电压来确定数值。接VCC表示 「接GND表示0。为什么要有这三个呢?因为有可能你在I2C总线上饼联了不 止一个相同的元件(比如说接了三个85 9 1),那你如何来分辨你要操作的是哪 一个芯片呢,就是通过设置A05A1, A 2的数值,来区别。可编程的地址一个有三 位,也就是说最多可以接8个相同的芯片在同一个I 2C总线上。 最后一位是读/写位,1为读,0为写。 @如何场数据 写数据只需要按照时序图 ?先将SCL置0(只有它为0的时候S DA才允许变化) .改变SDA是数值(就是你当前要穿的一位是0还是1) 3?把SCL置1 (此时芯片就会读取总线上的数据) 下面是代码 #d Cf i ne u

您可能关注的文档

文档评论(0)

fengnaifeng + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档