majianjia 发表于 2012-1-2 23:07:21

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

写地址 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

Name_006 发表于 2012-1-3 08:35:07

木有玩过帮顶~~~~

racede 发表于 2012-1-3 09:43:11

读错地址返回的是0xFF……这个芯片需要发送转换命令……一段时间后去读结果……datesheet上有详细说明……

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

majianjia 发表于 2012-1-3 10:49:16

回复【2楼】racede
-----------------------------------------------------------------------

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

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

majianjia 发表于 2012-1-3 10:49:38

回复【1楼】Name_006
-----------------------------------------------------------------------

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

racede 发表于 2012-1-3 12:46:31

回复【3楼】majianjia阿嘉^_^
-----------------------------------------------------------------------

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

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

majianjia 发表于 2012-1-3 14:14:37

回复【5楼】racede
-----------------------------------------------------------------------

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

grandhero 发表于 2012-1-15 09:47:30

XLCR引脚必须拉低,你才能读出寄存器里的数据

MrLCL 发表于 2012-1-26 23:09:35

回复【楼主位】majianjia 阿嘉^_^
-----------------------------------------------------------------------

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

eblc1388 发表于 2012-2-15 21:33:25

回复【7楼】grandhero
xlcr引脚必须拉低,你才能读出寄存器里的数据
-----------------------------------------------------------------------

和资料文挡所述不符。

http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_719141CBHDMK.gif
(原文件名:BMP085_XCLR.gif)

htjgdw 发表于 2012-2-16 10:00:06

LZ调出来了吗?
BMP085只需I2C接好就可以工作的,不必考虑XCLR。

doneone 发表于 2012-2-16 11:07:30

回复【9楼】eblc1388
-----------------------------------------------------------------------

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

jojasd 发表于 2012-2-16 23:24:06

是有点怪的,I2C重新写一个吧

hecklerkwan 发表于 2012-3-25 03:23:56

救命,为何我读任何寄存器0XAA到0XBF都是239啊?郁闷死了哇!

nongxiaoming 发表于 2012-3-25 03:30:22

我是用模拟IIC的,还没有,在要求速度不是很快的情况下使用还是很爽的~~

zhuml2012 发表于 2012-3-28 13:11:45

BMP085效果没有MS5611、MS5607、MS5803好啊,不过应用场合不一样,还是很爽的,性价比高

xiaojuren 发表于 2012-5-20 19:13:46

我对bmp085初始化后程序就不往下执行了,不知道什么原因,更别说读出数据了。{:cry:}

AngryBirder 发表于 2012-6-13 20:48:34

现象跟你一样,HMC5883L没问题,BMP085出来全11111111111……,问题后来解决了么?

YimeiCan 发表于 2012-7-16 16:07:31

Mark看结果
页: [1]
查看完整版本: BMP085气压传感器,用模拟I2C总线通信,但是接受不了数据,同样的I2C程序,HMC5883L却可以通