NVIDIA Jetson之I2C测试

科技 科技 1471 人阅读 | 0 人回复

<
0 布景

Jetson 开辟板具有 I2C 接心,本文对该接心的利用办法做一引见。以 Jetson TX2 为例,别的装备的办法相似,次要是硬件接心区分
1 硬件毗连

145751pap55mhqxuzlpl55.jpg

经由过程《Jetson TX1-TX2 Developer Kit Carrier Board Specification 》能够看到,TX2 的 J21 排针中,第 3 战第 5 个引足,别离表现 SDA 战 SCL 接心,经由过程杜邦线取装备相连便可。同时,取装备要共天毗连。(别的装备如 nano/NX 可检察其对应的载板文档)
145751hkkebkep16nj6pj6.jpg

 J21 引足界说以下
145751y3yh36h0xc6y33tt.jpg

大要间接检察该链接,能够看到第 3 战 第 5 引足为 I2C BUS 1 的 SDA 取 SCL 引足
145752mnp7dpqqcz7x8yuk.jpg


2 i2c-tools东西

2.1 装置办法

正在 jetpack 中,曾经装置好了 i2c-tools 东西,用去停止 i2c 指令查询。假如出有的话,可使用 apt 装置
  1. $ sudo apt-get update
  2. $ sudo apt-get install -y i2c-tools
复造代码
i2c-tools 东西包罗以下几部分
  i2cdetect----用去查找所毗连的装备的地点
  i2cdump----用去读出特定地点中一切存放器中的内乱容
  i2cset--------对特定存放器写进内乱容
  i2cget-------从特定存放器中读值
2.2 i2cdetect

i2cdetect 指令用于检测体系上的 I2C 总线状况
  1. $ sudo i2cdetect -l
  2. i2c-3   i2c             3190000.i2c                             I2C adapter
  3. i2c-1   i2c             c240000.i2c                             I2C adapter
  4. i2c-8   i2c             31e0000.i2c                             I2C adapter
  5. i2c-6   i2c             31c0000.i2c                             I2C adapter
  6. i2c-4   i2c             Tegra BPMP I2C adapter                  I2C adapter
  7. i2c-2   i2c             3180000.i2c                             I2C adapter
  8. i2c-0   i2c             3160000.i2c                             I2C adapter
  9. i2c-7   i2c             c250000.i2c                             I2C adapter
  10. i2c-5   i2c             31b0000.i2c                             I2C adapter
复造代码
能够看到,TX2 上具有 9 组 I2C 接心,别离对每条总线停止扫描,获得挂载疑息
  1. i2cdetect -y -r -a 1
复造代码
其中:


  • -y 表现忽视交互成绩
  • -r 是 SMBus read byte 命令
  • -a 是一切地点,1 表现 TX2 开辟板的 i2c-1
2.3 i2cdump

i2cdump 用于检察装备存放器的值
  i2cdump [-f] [-y] [-r first-last] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
检察 7 号总线上装备 0x50 局部存放器的值
  1. $ i2cdump -y 7 0x50
  2. No size specified (using byte-data access)
  3.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
  4. 00: 01 00 0d 00 ee 0c e8 03 42 44 00 00 00 00 00 00    ?.?.????BD......
  5. 10: 00 00 00 00 36 39 39 2d 38 33 33 31 30 2d 31 30    ....699-83310-10
  6. 20: 30 30 2d 42 30 32 20 44 2e 30 00 00 00 00 00 00    00-B02 D.0......
  7. 30: 00 00 a5 04 a8 4b 04 00 a6 04 a8 4b 04 00 00 00    ..???K?.???K?...
  8. 40: 00 00 00 00 a7 04 a8 4b 04 00 30 33 32 30 32 31    ....???K?.032021
  9. 50: 38 31 36 39 30 39 39 00 00 00 00 00 00 00 00 00    8169099.........
  10. 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
  11. 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
  12. 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
  13. 90: 00 00 00 00 00 00 4e 56 43 42 1c 00 4d 31 00 00    ......NVCB?.M1..
  14. a0: a5 04 a8 4b 04 00 a6 04 a8 4b 04 00 a7 04 a8 4b    ???K?.???K?.???K
  15. b0: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ?...............
  16. c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
  17. d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
  18. e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
  19. f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b9    ...............?
复造代码
2.4 i2cset

i2cset 用于设置装备单个存放器的值
  i2cset [-f] [-y] [-m MASK] [-r] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
例如:设置地点为 0x50 装备里 0x20 存放器的值为 0x04。
  1. $ sudo i2cset -f -y 2 0x50 0x20 0x04
复造代码
2.5 i2cget

i2cget 用于检察装备单个存放器值
  1. i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
  2. I2CBUS is an integer or an I2C bus name
  3. ADDRESS is an integer (0x03 - 0x77)
  4. MODE is one of:
  5.     b (byte, default)
  6.     w (word)
  7.     W (word on even register addresses)
  8.     s (SMBus block)
  9.     i (I2C block)
  10.     c (consecutive byte)
  11.     Append p for SMBus PEC
复造代码
例如:读与地点为0x50装备里0x20存放器的值。
  1. $ sudo i2cget -y 2 0x50 0x20
  2. 0x30
复造代码
2.6 i2ctransfer

i2ctransfer 用于读写装备存放器值(可用于单字节存放器)
  sudo i2ctransfer -f -y [总线序号] w[待写进数据少度]@[装备地点] [存放器地点下字节] [存放器地点低字节] r[待读出数据少度]。
例如:背1号总线上,装备地点0x10,存放器地点0x0101开端,读与少度为16个字节的数据。
  1. $ sudo i2ctransfer -f -y 1 w2@0x10 0x01 0x01 r16
  2. 0x80 0x80 0x00 0x08 0x10 0x1a 0x00 0x00 0x00 0x10 0x27 0x00 0x00 0x40 0x79 0x0d
复造代码
3 i2c 代码示例

正在 github 上有针对 linux 的 i2c 库,地点:https://github.com/amaork/libi2c
下载后经由过程剧本装置便可利用
  1. git clone https://github.com/amaork/libi2c.git
  2. cd libi2c
  3. sudo python setup.py install
复造代码
测试剧本
  1. cd example
  2. python pylibi2c_tools.py -b /dev/i2c-1 -d 0x1b --iaddr 0x0b --data 0x00
复造代码
表现背 1 号 bus 上地点为 0x1b 的装备给存放器 0x0b 写值 0x00,别的利用办法相似, 参考代码分析便可 
参考


免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作!
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
回复 关闭延时

使用道具 举报

 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则