单片机交流
直播中

王静

7年用户 684经验值
私信 关注
[问答]

怎样去使用一种BMP180气压传感器

怎样去使用一种BMP180气压传感器?
源代码中几处bug主要是哪些?

回帖(1)

刘德凤

2021-9-24 18:31:51
  BMP180使用记录(AVR)
  硬件篇
  硬件按照数据手册连接到单片机的IIC接口或者任意两个IO口即可,记得要加2个4.7K左右上拉电阻。
  软件篇
  软件依照惯例百度了段AVR下的代码,下载进去后发现所读取出的数据完全不对,于是对照数据手册时序图和操作步骤修改了代码中的几处bug,同时修改了下代码命名规范什么的,修改后数据读取正常。
  源代码中几处bug主要是:
  1、从eep中读出来的校准参数是short型,后面计算气压公式中并没有将short型强制转换成long型,在winavr下面会导致计算结果错误,
  2、IIC读数据移位部分逻辑错误
  unsigned char iicRecv(void)
  {
  unsigned char i,data = 0;
  SDA_IN;
  for(i=8; i》0; i--)
  {
  SCL_H;
  _delay_us(5);
  data|= ((SDA_RD_VAL》》5)《《(i-1));
  // Be careful (PA5》》5)
  SCL_L;
  _delay_us(5);
  }
  return data;
  }
  // 注意SDA_RD_VAL移位的时候注意是几号口就移多少,本代码是PA5 3、修改代码适用于各种读取模式
  代码部分按照数据手册操作是很简单的,第一步从EEP里面读取出出厂校准参数,第二步写寄存器开启测量,按不同测量模式适当延时,第三步读取温度、大气压,第四步按照手册给定步骤计算即可。
  注意点:
  1、IIC读取连续地址数据的时候只需要写入首地址即可。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分