查看: 374|回复: 0

[原创] 【S32K146 RT-thread】之I2c-tool 工具尝鲜

[复制链接]
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 594 天

    [LV.9]以坛为家II

    51

    主题

    2222

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    7062
    最后登录
    2024-4-27
    发表于 2024-1-3 11:21:44 | 显示全部楼层 |阅读模式
    本帖最后由 andeyqi 于 2024-1-5 22:49 编辑

           RT-thread 相对其他的RTOS 其丰富的软件包会对开发者提供很多便利,通过在线的软件包通过menuconfig 很容易部署到开发环境中去,我们在之前已经适配完成的I2C的软件基础上使用I2C-tool 工具,i2c-tool 是一个用于在命令行环境下进行 I2C 总线调试的工具。它是 RT-Thread 的一个 package 包,提供了一组命令行指令,允许用户直接在终端进行 I2C 总线的读写操作,便于调试和测试 I2C 设备。
    以下是一些常见的 i2c-tool 工具指令:
    • i2c scan: 用于扫描 I2C 总线上的设备地址,检测当前连接的 I2C 设备。

          i2c scan <bus_name>
          <bus_name>: 指定要扫描的 I2C 总线名称。

    • i2c read: 用于从指定地址读取数据。

           i2c read <bus_name> <dev_addr> <reg_addr> <length>
           <bus_name>: I2C 总线名称。
           <dev_addr>: I2C 设备地址。
           <reg_addr>: 寄存器地址。
           <length>: 读取数据的长度。


    • i2c write: 用于向指定地址写入数据。
          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 工具。


    i2c-tool-config.png
    图 1.1
    打开 i2c-tool 配置开关后,在bsp 目录下 env 环境输入,pkgs --update 命令就会从git上获取i2c-tool 的源码文件,运行输出如下。

    pkg_update.png
    图 1.2

    执行成功后会在bsp 目录下多出一个packages 的目录,从git 上拉取的i2c-tool的源码会在该目录下,具体路径如下。
    pkgs_update1.png
    图 1.3


    代码拉取后执行 scons --targrt=iar 命令生成工程后发现,工程目录下已经有了i2c-tool的相代码了。


    i2c_iar.png
    图 1.4
    因为i2c-tool 的package 以来了cpp 的特性会有如下的编译错误。

    cpp_error.png
    图 1.5

    出现这个编译错误是因为i2c-tool工具依赖了C++的特性,软件包里的部分代码是用C++编写的所以会依赖c++,从env 环境的i2c-tool package 的kconfig 配置可知使用该工具会默认开启RT_USING_CPLUSPLUS

    soft_i2c.png

    i2c-tool-package.png


    图 1.6

    本地的开发环境编译器没有开启C++相关的特性,在IAR 的complier 配置下开启c/c++如下配置,重新编译后即可解决编译错位问题。
    fix_complier_error.png

    图 1.7

    编译完成后下载到板子上运行,通过 i2c 命令可以scan 到总线上的节点地址,扫描出的地址和本地办卡上挂载到I2C的地址信息也是能匹配上的,对0x21 地址的寄存器进行写入会读试验,写入的值和会读回来的也是保持一致,i2c-tool 工具的使用方法如下。
    1. msh >i2c
    2. ---------------
    3. i2c tools help:
    4. ---------------
    5. i2c scan  bus_name [start addr] [stop addr]
    6. i2c read  bus_name address  register  [len=1]
    7. i2c write bus_name address [register] data_0 data_1 ...
    复制代码

    24525.jpg

    图 1.8


    至此 已经将RT-thread 的i2c-tool 软件包适配完成,也同步验证了之前的I2C总线的驱动已经能正常运行了。










    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-28 01:30 , Processed in 0.109029 second(s), 19 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表