1.简介

  • 项目中需要控制各种外设的电源,正常应该是通过GPIO进行控制,但是树莓派CM4的GPIO管脚有限,因此需要使用i2c扩展IO
  • 查阅CM4-datesheet发现GPIO22GPIO23可以复用为i2c,当然也有其它的GPIO可以复用为i2c,这里只是选用了i2c-6
  • 本次调试使用的镜像为raspios-arm64-lite.img,也使用过ubuntu 18.04进行调试,调试方法相同

2. 启用i2c-6

2.1 启用i2c协议

  • 默认情况下,树莓派并没有启用i2c,参考下面的链接,使用raspi-config开启i2c

https://pimylifeup.com/raspberry-pi-i2c/

2.2 修改/boot/config.txt

  • 在/boot/config.txt中添加如下内容
dtparam=i2c_vc=on

2.3 将GPIO22GPIO23复用为i2c

  • 在/boot/config.txt中添加如下内容,表示将GPIO22复用为i2c-6的SDA,GPIO23复用为i2c-6的SCL
dtoverlay=i2c-gpio,bus=6,i2c_gpio_sda=22,i2c_gpio_scl=23
  • 添加完成后重启设备

2.4 验证是否配置成功

  • 查看所有i2c,正常情况下能够看到多出了一个i2c-6
i2cdetect -l
  • 使用i2cdetect进行检测,结果如下,i2c-6就是GPIO复用而来的

  • 查看dmesg信息,进一步确认,可以明确看到SDA对应GPIO22,SCL对应GPIO23

  • 至此i2c-6配置成功,同样的方法可以开启其他GPIO复用的i2c

3. 读写i2c器件寄存器测试

3.1 挂载i2c器件

  • 手头上正好有一个带24c04芯片扩展板
  • 器件地址:0x50h

3.2 扫描i2c-6上的器件

i2cdetect -y 6

  • 可以看到成功识别到了地址为0x50h的器件

3.3 读写寄存器测试

  • 24C02就是个存储芯片,就随便读写一片地址进行测试吧,这里以0x10h为例
  • 设置0x10寄存器值为0x55,测试正常
## 设置0x10寄存器值 0x55
i2cset -f -y 6 0x50 0x10 0x55 ## 读取0x10寄存器,正常
i2cget -f -y 6 0x50 0x10

NOTES

  • 本人原创文章,转载请注明出处
  • 禁止转载到CSDN!!!

[原创]树莓派CM4配置GPIO复用为i2c的更多相关文章

  1. 树莓派Zero W GPIO控制

    作者:陈拓 chentuo@ms.xab.ac.cn 2018.06.09/2018.07.05 0.  概述 本文介绍树莓派 Zero W的GPIO控制,并用LED看效果. 0.1 树莓派GPIO编 ...

  2. Linux 内核层和 用户层 配置 GPIO 引脚

    Linux BSP 开发的基础就是和GPIO打交道, 下面总结下这几天对某家开发板的GPIO控制的知识. 公司的开发板用的是 DTB  模式 ,首先,进入 dts,dtsi文件查看关于GPIO 的模块 ...

  3. 【.NET 与树莓派】使用 GPIO 库

    上回老周在说准备工作的时候,提到过树莓派用金属盒散热的事情.有朋友会说,加了金属盒子接线不方便,就算用了"T"形板,毕竟是把导线延长了的.其实扩展板就是把原有的引脚引出(类似于延长 ...

  4. 在4418平台上如何配置GPIO口的状态

    硬件 ------------------------------------------------------------------------------------------------- ...

  5. 树莓派4硬件---GPIO篇

    树莓派拿到手已经两个多月了,其实从最开始的期待安装好ROS,到前几天完成了ROS的源码编译安装,对linux的调教也时花了些时间的.现在终于想起来,树莓派上还有GPIO,还没有用过了.说干就干,开始. ...

  6. STM32配置GPIO前须先打开其时钟,否则配置失败

    @2018-5-9 17:11:38 STM32配置GPIO前须先打开其时钟,否则配置失败

  7. 树莓派进阶之路 (012) - 关于Raspberry Pi树莓派无线网卡配置

    Raspberry Pi树莓派无线网卡配置[多重方法备选] 要想让树莓派方便操作,肯定需要配置无线网卡,这样可以大大增强树莓派的移动性和便利性,其实配置无线网卡基本就是和普通linux平台下配置无线网 ...

  8. 树莓派 Learning 003 --- GPIO 001 --- 点亮LED

    树莓派 Learning 003 - GPIO 001 - 点亮LED 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 树莓派 Learni ...

  9. 树莓派 Learning 003 --- GPIO 000 --- GPIO引脚图

    树莓派 Learning 003 - GPIO 000 - GPIO引脚图 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 Raspberr ...

随机推荐

  1. Django视图函数:CBV与FBV (ps:补充装饰器)

    CBV 基于类的视图  FBV 基于函数的视图 CBV: 1 项目目录下: 2 urlpatterns = [ 3 path('login1/',views.Login.as_view()) #.as ...

  2. 团队Arpha6

    队名:观光队 链接 组长博客 作业博客 组员实践情况 黄恒杰 - **过去两天完成了哪些任务 ** - 文字/口头描述 地图功能增加.博客 - 展示GitHub当日代码/文档签入记录 - 接下来的计划 ...

  3. 请收藏,Linux 运维必备的 40 个命令总结,收好了~

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 1.删除0字节文件 find -type f -size ...

  4. Java安全之SnakeYaml反序列化分析

    Java安全之SnakeYaml反序列化分析 目录 Java安全之SnakeYaml反序列化分析 写在前面 SnakeYaml简介 SnakeYaml序列化与反序列化 常用方法 序列化 反序列化 Sn ...

  5. Redis 为何使用近似 LRU 算法淘汰数据,而不是真实 LRU?

    在<Redis 数据缓存满了怎么办?>我们知道 Redis 缓存满了之后能通过淘汰策略删除数据腾出空间给新数据. 淘汰策略如下所示: 设置过期时间的 key volatile-ttl.vo ...

  6. vc2010以及VS2019安装使用教程

    一.vc2010的安装教程. ①下载(由于是一个离线文件,可关注后找我) ②下载好并解压安装文件后,打开解压后的文件进行运行安装. 点击"setup"根据提示安装即可. ③安装后点 ...

  7. 设置VisualStudio以管理员身份运行

    以vs2013为例 vs右键属性 ----- 找到目标位置如下 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\ID ...

  8. 对 Python 中 GIL 的一点理解

    GIL(Global Interpreter Lock),全局解释器锁,是 CPython 为了避免在多线程环境下造成 Python 解释器内部数据的不一致而引入的一把锁,让 Python 中的多个线 ...

  9. 13.LAMP架构介绍及配置

    LAMP架构介绍及配置 LAMP简介与概述 LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境. LAMP是一 ...

  10. windows下安装和使用virtualenvwrapper-win

    安装 pip安装 pip install virtualenv pip install virtualenvwrapper-win 修改默认创建环境的位置 创建环境变量 新建环境变量:WORKON_H ...