查看: 75|回复: 0

[评测分享] 【ELF 2学习板】08.I2C接口编程及测试(1)

[复制链接]
  • TA的每日心情
    奋斗
    16 小时前
  • 签到天数: 207 天

    连续签到: 12 天

    [LV.7]常住居民III

    发表于 前天 22:36 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 stm1024 于 2025-1-19 22:45 编辑

    OK,今日抽空测试了一下I2C接口的功能。
    关于I2C接口,或者有时候被IIC接口,其通讯原理的硬件及协议的时序等,这里就不再重复了,相信很多单片机爱好者或者行业大佬在各种类型的MCU入门阶段就已经了然于胸了,这里直接切入正题。
    1. 基本硬件环境
    首先是可以使用i2c-tools查看咱们这个ELF2-RK3588开发板的I2C接口,i2c-tools这个工具包中提供了好几个工具,用于探测I2C总线,以及RK3588作为主控制器,向总线上的其他从设备之间交换数据。关于这个工具包的具体使用方法,我在前面RK3568、ELF-1等的评测中也有介绍到,这里不再重复凑字数,这里是传送门:I2C通讯测试:https://www.eefocus.com/forum/forum.php?mod=viewthread&tid=231513
    I2C测试:https://www.eefocus.com/forum/forum.php?mod=viewthread&tid=229700
    这里先试用i2cdetect检测一下有哪些I2C总线:
    1.jpg

    可以看到有很多路I2C总线,包括了i2c-0、 i2c-1、 i2c-2、 i2c-3、 i2c-4、 i2c-5、 i2c-7、 i2c-9、 i2c-10这9路(没有6和8)。
    根据手册,RTC挂在I2C-5总线上,因此,我们看看第5路的总线上的设备:
    11.jpg

    可以看到0x32处具有UU的标识,也就是RTC的地址,表明此地址上既有设备也有驱动,如果只有数字,则表示检测到了设备但是没有对应驱动,出现--当然是表示没检测到设备或者驱动。
    然后看看这个RTC设备的寄存器内容:
    2.jpg

    我们可以通过i2c-set或者i2c-get来修改寄存器的地址,不过之前都演示过,这里就不再重复了。

    2. C语言编程
    参考ELF提供的手册《系统应用编程》中的相关章节,以及所提供I2C驱动代码,我整理了一个C语言程序:
    33.jpg
    这个程序只是单纯的将设备的寄存器地址0x20中写入一个命令行传递的数据,然后回读。为什么是0x20呢?因为通过手册我们可以发现,这段地址是用户数据区域:
    66.jpg
    所以可以放心使用。
    然后接着使用开发板的自带的gcc,编译,并运行看看:
    44.jpg

    因为十进制170就是十六进制的0xaa,因此认为显示数据写入及回读成功,我们使用i2cdump再看一下:
    55.jpg

    可以看到这个地址中的数据已经被得到了更新。

    OK,今日测试到此为止,下次我把一些I2C的传感器翻出来以后,再整一两篇应用的测评。



    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2025-1-21 16:32 , Processed in 0.113740 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.