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 木有玩过帮顶~~~~ 读错地址返回的是0xFF……这个芯片需要发送转换命令……一段时间后去读结果……datesheet上有详细说明……
还有就是有个释放总线的引脚要注意…… 回复【2楼】racede
-----------------------------------------------------------------------
释放总线的引脚 XCLR一定要接么?...
我只接了EOC,就是DataReady...
那么说可能是我写入的地方有问题...写错地址,所以读不出来。。 回复【1楼】Name_006
-----------------------------------------------------------------------
感谢帮顶~然后继续郁闷。。 回复【3楼】majianjia阿嘉^_^
-----------------------------------------------------------------------
这是bosch提供的API...不用郁闷...lol~
http://www.bosch-sensortec.com/content/language4/downloads/API_BMP085.zip 回复【5楼】racede
-----------------------------------------------------------------------
还是要先感谢你~~
不过这里面是计算温度和气压的API...I2C方面应该是STM32的问题,应该是我程序的问题。。唉。 XLCR引脚必须拉低,你才能读出寄存器里的数据 回复【楼主位】majianjia 阿嘉^_^
-----------------------------------------------------------------------
我刚看到有说STM32I2C有问题的一个帖子,实在不行就用IO模拟把。再一个是不是I2C的频率过高啊 回复【7楼】grandhero
xlcr引脚必须拉低,你才能读出寄存器里的数据
-----------------------------------------------------------------------
和资料文挡所述不符。
http://cache.amobbs.com/bbs_upload782111/files_52/ourdev_719141CBHDMK.gif
(原文件名:BMP085_XCLR.gif) LZ调出来了吗?
BMP085只需I2C接好就可以工作的,不必考虑XCLR。 回复【9楼】eblc1388
-----------------------------------------------------------------------
是,我就被这哥们坑了~~ 是有点怪的,I2C重新写一个吧 救命,为何我读任何寄存器0XAA到0XBF都是239啊?郁闷死了哇! 我是用模拟IIC的,还没有,在要求速度不是很快的情况下使用还是很爽的~~ BMP085效果没有MS5611、MS5607、MS5803好啊,不过应用场合不一样,还是很爽的,性价比高 我对bmp085初始化后程序就不往下执行了,不知道什么原因,更别说读出数据了。{:cry:} 现象跟你一样,HMC5883L没问题,BMP085出来全11111111111……,问题后来解决了么? Mark看结果
页:
[1]