Linux Kernel 4.19+内核使用GPIO模拟I2C的方法

1.修改内核配置文件,使内核支持GPIO模拟I2C

复制代码
//开启方式
make menuconfig
Device Drivers --->
	<*> I2C support  --->
		I2C Hardware Bus support  ---> 
			<*> GPIO-based bitbanging I2C

2.对应的dts里面增加GPIO模拟I2C的设备树

复制代码
注意头文件:#include <dt-bindings/gpio/gpio.h>
	i2c@0 {
		compatible = "i2c-gpio";
		sda-gpios = <&gpio_chip16 3 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		scl-gpios = <&gpio_chip16 4 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
		i2c-gpio,delay-us = <2>;	/* ~100 kHz */
		#address-cells = <0>;
		#size-cells = <0>;
	};

编译后烧写,会发现/dev下多了一个i2c总线,多出来的那个就是了。

相关推荐
zl_dfq8 小时前
Linux 之 【进程间通信】(匿名管道与命名管道、pipe、进程池、mkfifo、unlink)
linux
UP_Continue8 小时前
Linux--进程优先级和进程切换
linux·运维·服务器
Maggie_ssss_supp8 小时前
Linux-MGR单主集群部署
linux·运维·服务器
YuTaoShao8 小时前
【LeetCode 每日一题】3510. 移除最小数对使数组有序 II
linux·算法·leetcode
一生只为赢8 小时前
通俗易懂:ARM指令的寻址方式(二)
arm开发
zhangrelay8 小时前
如何更环保(更省钱)的使用各类电子耗材/消耗品/易损件~电池为例
linux·笔记·学习
dustcell.9 小时前
高级课前复习2--RHCSA
linux·运维·服务器
胖少年9 小时前
Ubuntu 24.04 LTS apt autoremove 误删依赖致程序崩溃 解决与预防笔记
linux·笔记·ubuntu
Controller-Inversion9 小时前
k8s服务部署相关问题
linux·容器·kubernetes
梁洪飞9 小时前
使用rockchip sdk提供的uboot调通网络
linux·网络·arm开发·嵌入式硬件·arm