本帖最后由 andeyqi 于 2024-1-5 22:49 编辑
RT-thread 相对其他的RTOS 其丰富的软件包会对开发者提供很多便利,通过在线的软件包通过menuconfig 很容易部署到开发环境中去,我们在之前已经适配完成的I2C的软件基础上使用I2C-tool 工具,i2c-tool 是一个用于在命令行环境下进行 I2C 总线调试的工具。它是 RT-Thread 的一个 package 包,提供了一组命令行指令,允许用户直接在终端进行 I2C 总线的读写操作,便于调试和测试 I2C 设备。
以下是一些常见的 i2c-tool 工具指令: <bus_name>: 指定要扫描的 I2C 总线名称。
i2c read <bus_name> <dev_addr> <reg_addr> <length>
<bus_name>: I2C 总线名称。
<dev_addr>: I2C 设备地址。
<reg_addr>: 寄存器地址。
<length>: 读取数据的长度。
i2c write <bus_name> <dev_addr> <reg_addr> <data1> [<data2> ...]
<bus_name>: I2C 总线名称。
<dev_addr>: I2C 设备地址。
<reg_addr>: 寄存器地址。
<data1>, <data2>, ...: 要写入的数据。
我们在此贴中(https://www.nxpic.org.cn/module/forum/thread-802563-1-1.html)已经适配了I2C 的bus 驱动,我们以此为基础来验证I2C驱动功能。
1.更新i2c-tool 软件包
在RT-thread 的bsp 目录下输入下输入menuconfig 命令打开kconfig 配置菜单界面,在如下路径下开启i2c-tool 工具。
图 1.1 打开 i2c-tool 配置开关后,在bsp 目录下 env 环境输入,pkgs --update 命令就会从git上获取i2c-tool 的源码文件,运行输出如下。
执行成功后会在bsp 目录下多出一个packages 的目录,从git 上拉取的i2c-tool的源码会在该目录下,具体路径如下。
图 1.3
代码拉取后执行 scons --targrt=iar 命令生成工程后发现,工程目录下已经有了i2c-tool的相代码了。
图 1.4 因为i2c-tool 的package 以来了cpp 的特性会有如下的编译错误。
出现这个编译错误是因为i2c-tool工具依赖了C++的特性,软件包里的部分代码是用C++编写的所以会依赖c++,从env 环境的i2c-tool package 的kconfig 配置可知使用该工具会默认开启RT_USING_CPLUSPLUS
图 1.6
本地的开发环境编译器没有开启C++相关的特性,在IAR 的complier 配置下开启c/c++如下配置,重新编译后即可解决编译错位问题。
图 1.7
编译完成后下载到板子上运行,通过 i2c 命令可以scan 到总线上的节点地址,扫描出的地址和本地办卡上挂载到I2C的地址信息也是能匹配上的,对0x21 地址的寄存器进行写入会读试验,写入的值和会读回来的也是保持一致,i2c-tool 工具的使用方法如下。- msh >i2c
- ---------------
- i2c tools help:
- ---------------
- i2c scan bus_name [start addr] [stop addr]
- i2c read bus_name address register [len=1]
- i2c write bus_name address [register] data_0 data_1 ...
复制代码
图 1.8
至此 已经将RT-thread 的i2c-tool 软件包适配完成,也同步验证了之前的I2C总线的驱动已经能正常运行了。
|