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. 研讨会回放视频:如何提升Jenkins能力,使其成为真正的DevOps平台

    "如何实现集中管理.灵活高效的CI/CD"在线研讨会精彩分享 演讲嘉宾:杨海涛 在2022年3月29日举办的"如何实现集中管理.灵活高效的CI/CD"在线研讨会 ...

  2. stm32F103RCT6使用FFT运算分析波形详解(非常新手)

    最近学校电赛院队招新,出的招新题就是低频示波器的.之前一直没有弄懂FFT,借着这次机会实现了一下. FFT原理详解 FFT,就是快速傅里叶变换,这个操作能够将时域信号转化成频域信号,然后对信号进行分析 ...

  3. SoftPool:基于Softmax加权的池化操作 | 2021新文

    SoftPool使用softmax进行加权池化,能够保持特征的表达性并且是可微操作.从性能和准确率来看,SoftPool是目前的常规池化方法的一个不错的替代品   来源:晓飞的算法工程笔记 公众号 论 ...

  4. Git 使用心得 & 常见问题整理

    开源Linux 回复"读书",挑选书籍资料~ Git 流程图 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remot ...

  5. 攻防世界web进阶题—unfinish

    攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...

  6. 【拖拽可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!

    "整篇文章较长,干货很多!建议收藏后,分章节阅读." 一.设计方案 整体设计方案思维导图: 整篇文章,也将按照这个结构来讲解. 若有重点关注部分,可点击章节目录直接跳转! 二.项目 ...

  7. Git命令行提交代码步骤

    先进入对应的项目目录 1.拉取服务器代码,避免覆盖他人代码 git pull 2.查看当前项目中有哪些文件被修改过 git status 具体状态如下: 1:Untracked: 未跟踪,一般为新增文 ...

  8. 706. Design HashMap - LeetCode

    Question 706. Design HashMap Solution 题目大意:构造一个hashmap 思路:讨个巧,只要求key是int,哈希函数选择f(x)=x,规定key最大为100000 ...

  9. SpringBoot进阶教程(七十四)整合ELK

    在上一篇文章<SpringBoot进阶教程(七十三)整合elasticsearch >,已经详细介绍了关于elasticsearch的安装与使用,现在主要来看看关于ELK的定义.安装及使用 ...

  10. AWD平台搭建及遇到的问题分析

    1.安装docker环境 a.使用的是ubuntu系统,通过sudo apt install docker.io进行docker得安装,此方式会自动启动docker服务. b.通过curl -s ht ...