搜索
bottom↓
回复: 18

BMP085气压传感器,用模拟I2C总线通信,但是接受不了数据,同样的I2C程序,HMC5883L却可以通

[复制链接]

出0入0汤圆

发表于 2012-1-2 23:07:21 | 显示全部楼层 |阅读模式
写地址 0xee 有回复,写0xef 也有回复。但是任何一个寄存器读取出来都是0xFF。是不是这个芯片还需要初始化?

//bmp 读取一个字节
char bmp_read_reg(unsigned char addr)
{
        unsigned char temp;

        i2c_start();
        i2c_sendbyte(0xee);       
        i2c_re_ack();
        i2c_sendbyte(addr);
        i2c_re_ack();
        i2c_start();
        i2c_sendbyte(0xef);
        i2c_re_ack();
        temp = i2c_readbyte();
        i2c_se_nack();
        i2c_stop();

        return temp;
}

所有的ack都是有回复的,ack是没错的。因为同样的程序我用在HMC5883L(I2C的磁阻传感器)上是没问题的。
单片机是STM32

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-1-3 08:35:07 | 显示全部楼层
木有玩过  帮顶~~~~

出0入0汤圆

发表于 2012-1-3 09:43:11 | 显示全部楼层
读错地址返回的是0xFF……这个芯片需要发送转换命令……一段时间后去读结果……datesheet上有详细说明……

还有就是有个释放总线的引脚要注意……

出0入0汤圆

 楼主| 发表于 2012-1-3 10:49:16 | 显示全部楼层
回复【2楼】racede  
-----------------------------------------------------------------------

释放总线的引脚 XCLR一定要接么?...
我只接了EOC,就是DataReady...

那么说可能是我写入的地方有问题...写错地址,所以读不出来。。

出0入0汤圆

 楼主| 发表于 2012-1-3 10:49:38 | 显示全部楼层
回复【1楼】Name_006  
-----------------------------------------------------------------------

感谢帮顶~然后继续郁闷。。

出0入0汤圆

发表于 2012-1-3 12:46:31 | 显示全部楼层
回复【3楼】majianjia  阿嘉^_^
-----------------------------------------------------------------------

这是bosch提供的API...不用郁闷...lol~

http://www.bosch-sensortec.com/content/language4/downloads/API_BMP085.zip

出0入0汤圆

 楼主| 发表于 2012-1-3 14:14:37 | 显示全部楼层
回复【5楼】racede  
-----------------------------------------------------------------------

还是要先感谢你~~
不过这里面是计算温度和气压的API...I2C方面应该是STM32的问题,应该是我程序的问题。。唉。

出0入0汤圆

发表于 2012-1-15 09:47:30 | 显示全部楼层
XLCR引脚必须拉低,你才能读出寄存器里的数据

出0入0汤圆

发表于 2012-1-26 23:09:35 | 显示全部楼层
回复【楼主位】majianjia 阿嘉^_^
-----------------------------------------------------------------------

我刚看到有说STM32  I2C有问题的一个帖子,实在不行就用IO模拟把。再一个是不是I2C的频率过高啊

出0入0汤圆

发表于 2012-2-15 21:33:25 | 显示全部楼层
回复【7楼】grandhero  
xlcr引脚必须拉低,你才能读出寄存器里的数据
-----------------------------------------------------------------------

和资料文挡所述不符。


(原文件名:BMP085_XCLR.gif)

出0入0汤圆

发表于 2012-2-16 10:00:06 | 显示全部楼层
LZ调出来了吗?
BMP085只需I2C接好就可以工作的,不必考虑XCLR。

出0入0汤圆

发表于 2012-2-16 11:07:30 | 显示全部楼层
回复【9楼】eblc1388
-----------------------------------------------------------------------

是,我就被这哥们坑了~~

出0入0汤圆

发表于 2012-2-16 23:24:06 | 显示全部楼层
是有点怪的,I2C重新写一个吧

出0入0汤圆

发表于 2012-3-25 03:23:56 | 显示全部楼层
救命,为何我读任何寄存器0XAA到0XBF都是239啊?郁闷死了哇!

出0入0汤圆

发表于 2012-3-25 03:30:22 | 显示全部楼层
我是用模拟IIC的,还没有,在要求速度不是很快的情况下使用还是很爽的~~

出0入0汤圆

发表于 2012-3-28 13:11:45 | 显示全部楼层
BMP085效果没有MS5611、MS5607、MS5803好啊,不过应用场合不一样,还是很爽的,性价比高

出0入0汤圆

发表于 2012-5-20 19:13:46 | 显示全部楼层
我对bmp085初始化后程序就不往下执行了,不知道什么原因,更别说读出数据了。

出0入0汤圆

发表于 2012-6-13 20:48:34 | 显示全部楼层
现象跟你一样,HMC5883L没问题,BMP085出来全11111111111……,问题后来解决了么?

出0入0汤圆

发表于 2012-7-16 16:07:31 | 显示全部楼层
Mark看结果
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 03:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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