OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4775|回复: 2

i2c读取sht30温湿度i2c-transfer一直报错-5

[复制链接]

0

主题

3

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-12-9
在线时间
8 小时
发表于 2021-8-3 15:32:16 | 显示全部楼层 |阅读模式
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还有设备树

2715699fabf27fb481dea429e6d1dc9.jpg
4e0a6eca63c05bff323267d0259844d.jpg
ec10525e7a9b12b32fd6de4f72356d2.png

test.zip

4.64 KB, 下载次数: 5

imx6ull-mini-emmc.zip

4.56 KB, 下载次数: 2

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2021-8-4 02:11:34 | 显示全部楼层
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2020-12-9
在线时间
8 小时
 楼主| 发表于 2021-8-4 11:26:31 | 显示全部楼层
本帖最后由 1721521125 于 2021-8-4 11:35 编辑

用逻辑分析仪读到0x88(写)和0x89(读),i2c-transfer函数报错,0x2c06没有发送出去,只发了0x2c00,猜想应该是发送06的时候,发送了写操作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 16:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表