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. FreeRTOS --(9)任务管理之启动调度器

    转载自 https://blog.csdn.net/zhoutaopower/article/details/107057528 在使用 FreeRTOS 的时候,一般的,先创建若干任务,但此刻任务并 ...

  2. Java学习笔记-学生管理系统

    Java学习笔记 一个Student类 public class Student { private String sid; private String name; private String a ...

  3. 【PyHacker编写指南】打造URL批量采集器

    这节课是巡安似海PyHacker编写指南的<打造URL批量采集器> 喜欢用Python写脚本的小伙伴可以跟着一起写一写呀. 编写环境:Python2.x 00x1: 需要用到的模块如下: ...

  4. drools规则属性(rule attributes)的使用

    一.介绍 规则属性是您可以添加到业务规则以修改规则行为的附加规范. 在 DRL 文件中,您通常在规则条件和操作的上方定义规则属性,多个属性位于单独的行中,格式如下: rule "rule_n ...

  5. SpringBoot线程池

    1.遇到的场景 提高一下插入表的性能优化,两张表,先插旧的表,紧接着插新的表,若是一万多条数据就有点慢了 2.使用步骤 用Spring提供的对ThreadPoolExecutor封装的线程池Threa ...

  6. 140_Power BI&Power Pivot之降维展示同类型比较

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近一段时间比较忙,几乎没有时间更新网站内容,今天刚好周末,更新一个简单的需求. 上效果图: 在我们日常做对比分 ...

  7. Docker搭建大数据集群 Hadoop Spark HBase Hive Zookeeper Scala

    Docker搭建大数据集群 给出一个完全分布式hadoop+spark集群搭建完整文档,从环境准备(包括机器名,ip映射步骤,ssh免密,Java等)开始,包括zookeeper,hadoop,hiv ...

  8. c++ 快速乘

    First 在一些数学题中,两个数相乘运算很多,同时又很容易溢出,如两个 long long 相乘 今天本蒟蒻来总结一下快速乘的两种方法 1:二进制 和快速幂的原理一样,优化一个一个加的算法,复杂度\ ...

  9. Linux系列之linux访问windows文件

    Linux永久挂载windows共享文件 Linux系统必须安装samba-client Linux服务器必须能访问到Windows的共享文件服务的(445端口) 1.Windows共享文件 2.测试 ...

  10. vivo大规模 Kubernetes 集群自动化运维实践

    作者:vivo 互联网服务器团队-Zhang Rong 一.背景 随着vivo业务迁移到K8s的增长,我们需要将K8s部署到多个数据中心.如何高效.可靠的在数据中心管理多个大规模的K8s集群是我们面临 ...