I2C总线被全球跨越50个公司的1000+个ICs所应用,已然是一个世界标准.别的,I2C总线与多种不合的┞菲握总线是兼容的,比如SMBus(体系治理总线),PMBus(电源治理总线),IPMI(智能平台治理总线),DDC(显示数据通道)以及ATCA(高等电信架构).如不雅没记错的话,linux中的I2C框架是完全支撑SMBus的.
经由过程i2cdump指令可导出I2C设备中的所有存放器内容,例如输入i2cdump -y 2 0x50,可获得以下内容:
要周全懂得I2C,可以大年夜《I2C-bus specification and user manual》看起.I2C最初是由Philips提出的,那么这文档就是由NXP保护的.
我们接下来要懂得I2C总线是若何工作的,在一个具体应用中若何设计.I2C的数据传输,握手以及总线仲趁机制都须要懂得.I2C总线在每种操作模式下的时序和电气特点都须要懂得,这里照样大年夜嵌入式软件工程师的角度侧重懂得时序特点.
I2C总线的特点:
在花费电子,通信以及工业电子中,看起来不相干的设计中有很多类似的处所.例如,根本膳绫强个体系都包含:
解释2:此处I2C总线共挂载两个设备——PCF8574和AT24C04,大年夜机地址0x50为board configure,大年夜机地址0x57为AT24C04。
1.一些智能控制,平日是单芯片的微控制器
2.通用的电路:LCD和LED驱动器,长途IO口,RAM,EEPROM,RTC或者DAC\ADC.
3.面向应用的电路:比如收音机和视频体系的数字调谐和旌旗灯号处理电路,温度传感器和智能卡.
为了让这些合营之处对于体系设计者和设备厂商都有效,也为了最大年夜化硬件的有效性和电路的简单性,Philips半导体开辟了一个简单的双向2线的总线,实现了IC之间的有效控制.这个总线就被称为I2C总线.所有兼容I2C总线的设备都包含一个片上的接口,许可它们直接经由过程I2C总线进行通信.这个设计解决了在设计数字控制电路时带来的很茕居口问题.
1.只须要两根线,一个串行数据线(SDA)额一个串行时钟线(SCL).
2.可以经由过程软件方法和一个独一的地址来寻找到每一个连接到总线的设备,简单的主大年夜关系一向存在.主机可以作为主机发送器或者主机接收器.
3.它是真正的多主机总线,如不雅有两个或多个主机初始化数据传输,可以经由过程冲突检测和仲裁来防止数据被破坏.
4.串行的8位双向数据传输在标准模式下达到100kb/s,快速模式下是400kb/s,超速模式下是3.4Mb/s.
5.串行的8位单向数据在快速模式下可以达到5Mb/s.
6.片上的滤波器可以保护数据完全性.
7.总线上连接的最大年夜IC数量由总线最大年夜的电容所限制.
体系设计者的好处:
因为I2C总线是个是一个标准的总线,不须要额外的接口.所以在体系进级或者修改时,可以简单的换IC.
厂商的好处:
1.I2C只有两根线,所以IC的pin脚会少,PCB的面积会小,成本会降.
2.完全的I2C总线协定不须要地址译码器或其他逻辑电路.
这只是一些好处.别的,相符I2C总线的IC会增长体系设计的灵活性.IC很轻易进级,比如须要一个更大年夜的ROM,只须要选择一个有更大年夜ROM的微控制器就可以了.
IC设计者的好处:
i2cdump -y 2 0x50指令中,
如不雅向I2C设备中写入某字节,可输入指令i2cset -y 2 0x50 0x00 0x13
微控制器的设计者经常要推敲输出pin脚.I2C协定许可在没有零丁寻址旌旗灯号和芯片使能旌旗灯号的前提下各类外设的连接.别的,带I2C接口的微控制器在市场上更受迎接,因为有很多外设可以选.
下面是I2C总线的一些特点:
相符I2C总线的IC不仅赞助了设计者,同样给设备厂商很多好处,因为:
I2c扫描
经由过程i2cdetect -l指令可以查看TX1上的I2C总线,大年夜返回的结不雅来看TX1含有七个I2C总线。
- ubuntu@tegra-ubuntu:/proc/device-tree$ i2cdetect -l
- i2c-0 unknown Tegra I2C adapter N/A
- i2c-1 unknown Tegra I2C adapter N/A
- i2c-2 unknown Tegra I2C adapter N/A
- i2c-3 unknown Tegra I2C adapter N/A
- i2c-4 unknown Tegra I2C adapter N/A
- i2c-5 unknown Tegra I2C adapter N/A
- i2c-6 unknown Tegra I2C adapter N/A
I2C设备萌芽
若总线上挂载I2C大年夜设备,可经由过程i2cdetect扫描某个I2C总线上的所有设备。可经由过程控制台输入i2cdetect -y 2,结不雅如下所示。
- ubuntu@tegra-ubuntu:/proc/device-tree$ sudo i2cdetect -y 2
- 0 1 2 3 4 5 6 7 8 9 a b c d e f
- 00: -- -- -- -- -- -- -- -- -- -- -- -- --
推荐阅读
题图:Vincent Guth注:本文所有代码均可在本人的小我项目colon中找到,本文也同步到了知乎专栏可能你已经领会到了 Vue 所带来的便捷了,信赖有一部分原因也是因为其基于 DOM 的语法简洁的>>>详细阅读
本文标题:Linux自带i2c工具使用
地址:http://www.17bianji.com/lsqh/36665.html
1/2 1