求教MS5837的问题(已更新STM32程序)

这个问题太大,不知道有多少环节可以出问题。你先把你的实物接线图发上来看一下吧,一步一步排除。

我的mcu是stm32f103ZGT,SDA接的是PB7,SCL接的是PB6。
例程:
#define SDA_IN() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
#define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}
修改的程序主要是这个:
#define SDA_IN() {GPIOB->CRL&=0XFFFF0FFF;GPIOB->CRL|=0x80000000;}
#define SDA_OUT() {GPIOB->CRL&=0XFFFF0FFF;GPIOB->CRL|=0x30000000;}
把例程里面的PC11和PC12改成了PB6和PB7,但是测出来的数据就是一直不变,会不会那个只是一个初始化的数据还是什么的?我就很纳闷为什么数据一直没修改。

请问你的程序问题解决了吗?我的例程也是直接在这里下的,原封不动调试都出现了11个错误,请问你是怎么解决的?

程序我测了一遍,好像没问题。

你上次发的20度,15886什么来的应该是线没接好还是IIC口没配置好。你可以仿真一下,应该是CAL那几个数组的数据都没读到。

原来的程序是基于stm32f103rct6的,和ZGT6还是有点不同的(起码引脚数量多了),你得修改修改

我用了stm32f103rct6芯片后测出来的数据还是不行,也是不变的。请问有谁用stm跑一下例程是行的吗?

嗯嗯,但是我用stm32f103RCT6现在测出来的是61度,56649或者55613。感觉挺奇怪的。请问你是用这里发的例程的吗?没修改吗?

没修改过,你仿真下,首先确认CAL数组数据正常与否,这个是6个固定的数据。有一定的参考值,具体看5837的datasheet。另外我拿了一块最小系统板,原先数据也不正常,加了两个上拉电阻就好了。

哦哦,我试试,上拉电阻的阻值是多少来着?麻烦你了。

一般4.7K。多仿真就好了

虽然不是我们家的产品,希望以后多支持我们家的东西。

也买了你们家的呀,红色的,都有买。请问我接了个10k的上拉电阻后,发现数据温度是53,pressure是56135。奇怪的是数据是不会变的,放在水里面,会变成温度61,pressure是56649,而且无论我放多深的水,数据pressure是不变的,这是怎么回事呀?麻烦你们能试一试吗?放在水中,看看测出来的数据是不是不变。之前你们的测出来的数据是不变的


这是硬件接线图,芯片用的是stm32f103rct6,接了10k的上拉电阻。深度传感器是只要放进水里就可以了吗?为什么数据是不变的呀?

深度传感器在空气中当然不变的呀,你用气枪吹吹那个口子,我试过有示数变化的。
放在水里不是整个放进去,下图这样使用的
image

那把那一点点放在水中也没变呀。对着口子用嘴吹,也没变化呀,只在温度53,pressure56155和温度61,pressure56649之间变动。这是为什么呀?你们能放在水中一点点,测出数据跟在空气中的变化吗?

你看下精度就知道了,放一点点估计没啥效果

请问有教程吗?对这个传感器的操作还有采集到的数据很懵逼。

其实就是IIC的一个读写操作,推荐下“正点原子STM32”,有个论坛:OpenEDV.com
aohi试过可以,你应该也可以,好像唯一的区别你要不也用4.7k试试?
我们近期也在筹备一个B30套件,到时候拿回去就可以使用,敬请关注。

不是哦,我只是在调试一下这个深度传感器,本以为放在水中pressure的数据就会变化的,没想到没变,所以我才请求帮助的呀。找不出解决的方案。