|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\95_章节使用资料。
! i6 U; N: t% T( E! k' I95.1 移植
3 `! P0 [; f6 @I2c 测试工具下载地址 https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/,; S w) B3 f! E8 D" L$ U
这里下载的 4.1 版本,下载完后拷贝后 Ubuntu,
f8 D. O, n! F/ ~ " ]$ j) z8 g7 [% M$ {' t! E1 ]; ~
![]()
) o7 Q0 J* ^$ x' b2 a/ u: p# s解压 tar -vxf i2c-tools-4.1.tar.gz,# b$ C2 C* ?( X
8 F5 O+ f5 P% D' k% p' q, b( X
清理工程,make clean,
' m. ^6 s: D5 T2 }# _# B8 X导入交叉编译工具链环境,根据实际情况填写路径:export# Z" e" R) a3 M2 z
CC=/usr/local/ARM/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc: Q- \1 O, E+ p3 x4 H
执行 make 编译,进入 tools 目录:
" s R1 b& r! O9 c2 a# F4 V ) t# ~/ N4 Z* q/ D2 Z# c* e7 m
将生成的工具“i2cdetect i2cdump i2cget i2cset i2ctransfer”拷贝到开发板的/bin/目录下9 z8 c( J8 u1 Q) o. i& z5 P
![]()
; g$ @9 m. |5 J% C4 S" d5 p) U& w将源码顶层目录 lib/下的 libi2c.so.0.1.1 复制到开发板的/usr/bin/目录下,修改名字为 libi2c.so.0,
9 g5 y/ \ n" S- W: t: }5 F* \mv libi2c.so.0.1.1 libi2c.so.06 m/ h/ E9 K4 V, J$ S O7 C
; f& U' j% w6 a [3 W+ q2 @) i/ [
到此移植成功。0 q4 S& J7 M8 q2 S4 D) F* M
95.2 测试
! q/ |- R, E, u7 N2 F: P查看挂载的 i2c 设备:i2cdetect -l5 C$ I& M! f! M! @ ~: d
![]()
: k$ }9 K) g, P/ k Y查看 i2c 总线上的设备:i2cdetect -y <总线号>,例如输入 i2cdetect -y 0,UU 代表系统已经加载了此设% l3 [# p9 l5 n" ]5 N) l9 o4 v
备,如果是数值下表示在 driver 中没有加载。图中表示 0x1E,0x50,0x68 已经被加载,分别对应 mpu6050,, S+ F A% x% o$ u: U4 E
at24c02,ap3216c。
# h# C- J @$ Y* b, r 9 H c" y/ W8 V) i8 g
" C( c8 z. p, ~5 n% u$ g9 W, M
读取 i2c 设备所有寄存器值:i2cdump -f -y <总线号> <设备地址>,i2cdump -f -y 0 0x50,0 为 i2c 总线号,
! x. R' x% }! J" j# J7 x* Y0x50 为 AT24C02 的地址值,
7 R( o) y! V8 x; @. ^测试结果如图 95.2.4: w( t, r0 G, N7 q
. U* V) c$ J8 I3 g$ U x
向寄存器写数据:i2cset -f -y <总线号> <设备地址> <寄存器地址> <数据>
3 \3 l% e' Y8 q例如:i2cset -f -y 0 0x50 0x00 0x226 h; G* O8 Y: ~5 X& N
+ i* O |1 M' E& |) W8 Z
写入多个数据:i2ctransfer -f -y <总线号> w<数据个数>@<寄存器> <数据><数据>
7 R4 y8 R5 ?5 yi2ctransfer -f -y 0 w3@0x50 0x00 0x0a 0x0b
& Y/ A5 a5 x6 m0 i![]()
! Y P& M" i' w9 N+ i3 z
! Y& f" d6 M. D* o- b' c$ ^![]() |
|