衡山派开发板I2C总线与EEPROM通信测试指南
衡山派开发板I2C总线与EEPROM通信测试指南最近在衡山派开发板上调试I2C外设发现很多朋友对如何使用RT-Thread系统自带的工具测试I2C总线和EEPROM不太熟悉。今天我就把自己实际项目中的测试流程整理出来手把手教你从环境搭建到功能验证搞定I2C通信测试。这篇教程适合正在使用衡山派平台进行硬件驱动调试的工程师特别是需要验证I2C总线是否工作正常、EEPROM读写是否准确的场景。跟着做一遍你就能掌握i2c-tools和at24cxx这两个实用工具的使用方法。1. 测试前的准备工作1.1 硬件环境搭建测试I2C通信首先得把硬件连接好。你需要准备三样东西测试板一块已经焊接好EEPROM或其他I2C从设备模块的衡山派开发板。EEPROM的型号通常是AT24Cxx系列比如AT24C02、AT24C16等它们通过I2C总线与主控芯片通信。PC个人电脑用来运行串口终端软件给开发板发送命令并查看返回结果。串口线连接开发板的调试串口通常是UART0和电脑的USB口。这是你和开发板“对话”的通道。注意在连接硬件前最好先确认一下开发板原理图找到EEPROM具体连接在哪个I2C总线比如i2c0或i2c1上以及它的设备地址是多少。这个信息后面配置时会用到。1.2 软件环境准备电脑端只需要一个串口终端软件比如Putty、MobaXterm或者SecureCRT都可以。确保软件正确识别了串口线对应的COM口并设置好波特率通常是115200、数据位8、停止位1、无校验位。开发板端的软件配置也就是RT-Thread系统的包管理是我们接下来的重点。2. 在RT-Thread中使能测试组件要让开发板支持I2C测试命令我们需要在RT-Thread的包管理器中打开相应的软件包。这就像给系统安装“测试工具套装”。2.1 使能I2C驱动测试命令首先我们需要打开RT-Thread自带的I2C驱动测试命令。这个命令在裸机环境没有操作系统或者需要将I2C配置为从机模式时特别有用。在RT-Thread的env工具中使用menuconfig命令进入配置界面找到以下路径Drivers options --- Drivers examples --- [*] Enable i2c driver test command用空格键选中这个选项前面出现[*]星号然后保存退出。2.2 安装第三方测试软件包RT-Thread社区提供了两个非常实用的第三方软件包专门用于I2C测试i2c-tools一个I2C工具集合包含扫描总线、读取数据、写入数据等功能。它主要用于测试寄存器地址为8位的I2C从设备。at24cxxAT24C系列EEPROM的专用驱动库。它主要用于测试像EEPROM这类寄存器地址为16位的从设备。在menuconfig中找到并选中它们Local packages options --- Third-party packages options --- [*] i2c-tools: a collection of i2c tools including scan/read/write [*] at24cxx: eeprom at24cxx driver library配置完成后记得使用pkgs --update命令更新软件包然后重新编译、烧写固件到开发板。3. 使用at24cxx软件包测试EEPROM如果你的从设备是EEPROM比如AT24C02那么at24cxx软件包用起来最顺手。它提供了一套简单的命令来初始化和读写EEPROM。3.1 初始化I2C与EEPROM的连接在串口终端连接到开发板后首先需要告诉系统EEPROM挂在哪条I2C总线上地址是多少。输入以下命令at24cxx probe i2c0 0x50i2c0第三个参数代表I2C总线号。根据你的硬件连接可能是i2c0、i2c1等。0x50第四个参数代表EEPROM的7位I2C设备地址。这个地址一定要根据你的EEPROM型号和原理图连接来确认。AT24C02的地址通常是0x50或0x51具体看A0/A1/A2引脚的电平。这个命令执行成功后就建立起了驱动和具体EEPROM设备的关联。3.2 进行读写测试测试通信是否正常最经典的方法就是“写入-读取-验证”。读操作先看看EEPROM里原来存着什么。at24cxx read执行后会返回读取到的数据。如果是新芯片读到的可能全是0xFF。写操作向EEPROM写入一个测试数据。at24cxx write 0x220x22第三个参数是你要写入的数据一个字节。再次读操作验证再次执行at24cxx read命令查看读出的数据。at24cxx read如果读出来的数据和你刚才写入的0x22一致那么恭喜你I2C总线与EEPROM的通信完全正常4. 使用i2c-tools进行通用I2C测试i2c-tools工具包功能更通用不仅可以操作EEPROM还能操作其他任何I2C从设备。它最常用的功能是扫描总线和直接读写。4.1 扫描I2C总线上的从机设备在操作具体设备前最好先扫描一下总线看看有哪些设备在线。这能帮你确认硬件连接和地址配置是否正确。ArtInChip / i2c scan i2c1 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ... (中间省略) ... 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --上面这个扫描结果非常清晰。它显示在i2c1总线上地址0x18的位置发现了一个设备显示为18而不是--。其他地址都是空的。这个0x18就是我们要操作的从机地址。4.2 使用i2c-tools读写数据假设我们要操作地址为0x18的从设备它的寄存器是8位宽的。写操作向设备0x18的寄存器地址0x00写入一个字节数据0。ArtInChip / i2c write i2c1 0x18 0x0 0i2c1总线号。0x18从机地址。0x0要写入的寄存器地址。0要写入的数据。读操作从设备0x18的寄存器地址0x00读取1个字节的数据。ArtInChip / i2c read i2c1 0x18 0x0 1 [ 0x00 ]返回结果[ 0x00 ]表示成功读到了数据0x00这和我们刚才写入的值一致。提示如果你记不住命令的具体用法有个万能方法——直接在命令行输入工具名然后回车。比如输入i2c并回车系统就会打印出详细的使用帮助和参数说明。5. 裸机环境下的读写测试进阶在一些深度调试或者裸机项目中你可能需要直接使用更底层的测试命令。这里以操作一个16位寄存器地址的从机为例比如某些容量较大的EEPROM。5.1 命令格式与参数详解裸机测试命令的格式比较直接但参数含义需要弄清楚# 读操作示例 ArtInChip / i2c read 0 0x50 -16 0x1234 read_data: 0xff # 写操作示例 ArtInChip / i2c write 0 0x50 -16 0x1234 0x11 write_data: 0x11我们来拆解一下每个参数0第一个参数I2C的总线号。0x50第二个参数从机设备的7位地址。-16第三个参数指定从机使用16位寄存器地址。如果是8位寄存器这里就改成-8。这个负号加位宽的形式是指定地址宽度的关键。0x1234第四个参数要读或写的具体寄存器地址16位就是像0x1234这样的值。0x11仅写命令有第五个参数要写入的数据。5.2 测试流程与注意事项测试时同样建议遵循“先读后写再读”的验证流程用i2c read命令读取某个寄存器的初始值可能是0xFF。用i2c write命令向该寄存器写入一个特定值如0x11。再次用i2c read命令读取该寄存器确认读出的值是否等于写入的值。注意根据原始资料说明目前的i2c测试工具在裸机环境下仅支持单个字节数据的收发。也就是说一次读写操作只能处理一个字节的数据。如果需要连续读写多个字节你可能需要自行编写测试代码或多次调用该命令。好了以上就是基于衡山派开发板和RT-Thread进行I2C总线与EEPROM通信测试的完整指南。实际调试中最常遇到的问题就是设备地址不对或者总线号弄错多利用i2c scan命令扫描一下能帮你快速定位问题。如果遇到通信失败先检查硬件连接和上拉电阻再核对软件配置一步步排查总能搞定。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419093.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!