EIO翻译过来就是IO ERROR,但造成这个的原因可能是系统没有找到IIC的从机设备,所以会报这个错,我这次遇到的问题就是找不到从机然后只要一发送数据返回值就是-5
Linux iic的从机地址规则
linux iic从机地址有个很恶心的东西,如果IIC设备在数据手册中说明了该设备的地址是7位的,则在设备树中设置的地址就是数据手册中的地址
但是,如果数据手册中给的设备地址是8位的,刚在设备树的地址是要右移一位的,比如OLED的地址是8位的,0x78,0111 1000
,其右移一位是0011 1100
,也就是0x3c
感谢一位大佬的无私分享,才让我找到原因,我已经为这个问题困扰了好多天了参考链接