|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\95_章节使用资料。
, O7 L- t* Q% C1 r4 M2 J/ R$ L" ~2 E' k95.1 移植
0 c7 k6 n( X3 ]; zI2c 测试工具下载地址 https://mirrors.edge.kernel.org/pub/software/utils/i2c-tools/,
- A N4 ^2 ~8 U3 G9 `+ o7 [这里下载的 4.1 版本,下载完后拷贝后 Ubuntu,
/ e H! I! r/ Z5 m$ F) T2 s+ Q% j![]()
8 E& l1 A0 R& g9 i& I7 \![]()
3 l; a+ X+ u7 v! y' D解压 tar -vxf i2c-tools-4.1.tar.gz,
, r8 T+ R! v" x9 A Q6 ?![]()
5 o; _9 V: F9 R) N清理工程,make clean, j4 @ l/ m& h* U! ^% j: I. q2 d
导入交叉编译工具链环境,根据实际情况填写路径:export
+ k, @' z; g8 C( qCC=/usr/local/ARM/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
' g/ U0 s& x. {1 f执行 make 编译,进入 tools 目录:
2 T' @' q" V7 @![]()
2 g# h" T6 q7 v6 V将生成的工具“i2cdetect i2cdump i2cget i2cset i2ctransfer”拷贝到开发板的/bin/目录下
0 q% |: q B8 z. F! x, D6 Q8 s, y 9 P) ?, Y5 L, ~# X6 z1 `- i S' P
将源码顶层目录 lib/下的 libi2c.so.0.1.1 复制到开发板的/usr/bin/目录下,修改名字为 libi2c.so.0,
5 @8 w: N) }+ j8 ^9 |mv libi2c.so.0.1.1 libi2c.so.0
8 G, ~5 h1 }, }# j$ O* k ; f1 d4 i& t, f% m
到此移植成功。
6 t% R! N% b1 [- U6 _, G: G& h) ?95.2 测试
6 T& }$ |4 B* L$ b2 M4 L6 ]; `查看挂载的 i2c 设备:i2cdetect -l
! n7 Z4 W3 s/ O/ ^, P![]()
& `5 [2 E! G9 w! s8 i% C查看 i2c 总线上的设备:i2cdetect -y <总线号>,例如输入 i2cdetect -y 0,UU 代表系统已经加载了此设$ ^+ x! O& g4 C% D
备,如果是数值下表示在 driver 中没有加载。图中表示 0x1E,0x50,0x68 已经被加载,分别对应 mpu6050,
) e: i' Y1 u% B4 w, vat24c02,ap3216c。; `: R, S: z0 ]# r$ V
![]()
- D; s; n3 t+ v$ ~% b 7 `" |: y8 M1 E' r) t8 ?' D$ O/ c/ @
读取 i2c 设备所有寄存器值:i2cdump -f -y <总线号> <设备地址>,i2cdump -f -y 0 0x50,0 为 i2c 总线号,* _- {' j! V1 `# i0 R9 Z' i
0x50 为 AT24C02 的地址值,
1 `* |5 z2 ^, I; P6 O测试结果如图 95.2.4:
% S1 N* |6 Z. M3 F3 G% X( B- T " P! H# E2 ^6 _7 w# `
向寄存器写数据:i2cset -f -y <总线号> <设备地址> <寄存器地址> <数据>/ r3 [7 V- ]8 B+ \% ?+ j: F
例如:i2cset -f -y 0 0x50 0x00 0x22: d& [/ ` C) v8 B
1 U) N* J, p2 x' f
写入多个数据:i2ctransfer -f -y <总线号> w<数据个数>@<寄存器> <数据><数据>8 l! U) |4 w- ]8 J" D
i2ctransfer -f -y 0 w3@0x50 0x00 0x0a 0x0b
- H$ n2 C( i0 Q8 d* [+ {5 B. I![]()
' r: M- n$ F) x! }- G, i) r% C2 s
/ G3 G7 f# ^9 O% b0 {![]() |
|