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总线,多出来的那个就是了。

相关推荐
何达维11 分钟前
`kubectl top nodes` 或 `kubectl top pods` 返回 `metrics not available yet` 的排查、解决
linux
东皇太星38 分钟前
linux 内存管理详解
linux·运维·服务器
JY.yuyu43 分钟前
Linux计划任务进程
linux·运维·服务器
single-life43 分钟前
Linux 下 部署es+nebula(附带内网部署方式)
linux·运维·elasticsearch·nebula
ICT董老师1 小时前
kubernetes中operator与helm有什么区别?部署mysql集群是选择operator部署还是helm chart部署?
linux·运维·mysql·云原生·容器·kubernetes
wjhx1 小时前
对ubuntu22.04版本日志的处理
linux·ubuntu
情缘晓梦.1 小时前
Linux指令和权限
linux·运维·服务器
autho1 小时前
conda
linux·python·conda
小菜鸟阿呆yu1 小时前
【linux】配置网络桥接,主机可ping通linux,linux不能ping通主机的解决办法
linux·网络
柳鲲鹏2 小时前
断电重启和reboot,还是有很大差异
linux·运维·服务器