新手上路
- 积分
- 41
- 金钱
- 41
- 注册时间
- 2020-12-9
- 在线时间
- 8 小时
|
2金钱
本帖最后由 1721521125 于 2021-8-4 11:30 编辑
1、测试条件
A. 开发板教程对应的uboot和linux源码,mx6ull的mini板,网络启动内核和设备树
B. 正点原子提供的AP3216C驱动程序和linux应用APP测试程序更改的sht30代码
2.已进行的更改
A.iO设置
pinctrl_i2c1: i2c1grp {
fsl,pins = <
MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x4001b8b0
MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x4001b8b0
>;
}
B.设备树在i2c1节点追加sht30节点
sht30@44 compatible = "xhc,sht30";
reg = <0x44>;
C./sys/bus/i2c/devices 目 录 下已经有0x44这个i2c设备
/sys/bus/i2c/devices # cat 0-0044/name
sht30
3.驱动编写思路
A.sht30没有寄存器操作,在stm32上只需要发送7位地址加1位读写操作,地址0x44加1位读写操作,发送0x88开启写操作,在发送0x2c和0x06开启一直发的模式,然后发送0x89开启读模式,然后接收到6个8位数据,buf[1]和buf[2]拼接成温度,4和5拼接成湿度,3和6是crc校验,根据这个思路改写,先不管crc校验和温湿度转换
4.错误
i2c-transfer函数一直报错-5,在写和读的时候都是报错
write=88
ret =-5
write=2c
ret =-5
write=06
ret =-5
write=89
ret =-5
i2c rd failed=-5 len=1
i2c rd failed=-5 len=1
i2c rd failed=-5 len=1
i2c rd failed=-5 len=1
i2c rd failed=-5 len=1
i2c rd failed=-5 len=1
temp = 0, humi = 0
5.附件为sht30.c和APP还有设备树
|
|