[活动专区] 【AutoChips 7801x MCU评测报告】+BMP085气温气压测量

[复制链接]
 楼主| jinglixixi 发表于 2020-6-11 08:24 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2020-6-11 08:27 编辑

BMP085是一款基于I2C接口的数字式气温、气压传感器,具有体积少易于使用的特点。
BMP085MCU的连接关系为:
SCLK——PB7
SDIN——PB8
其余的两个引脚则接3.3V工作电源

a.png
BMP085与开发板连接图

定义GPIO口输入及输出高低电平的语句为:
#defineSCL_Set()        GPIO_SetPinLevel(GPIOB,GPIO_PIN7, GPIO_LEVEL_HIGH);  // PB7
#define SCL_Clr()        GPIO_SetPinLevel(GPIOB, GPIO_PIN7,GPIO_LEVEL_LOW);

#defineSDA_Set()        GPIO_SetPinLevel(GPIOB,GPIO_PIN8, GPIO_LEVEL_HIGH);  // PB8
#defineSDA_Clr()        GPIO_SetPinLevel(GPIOB,GPIO_PIN8, GPIO_LEVEL_LOW);

#defineIIC_SDA_IN    GPIO_GetPinLevel(GPIOB,GPIO_PIN8)

#defineIIC_INPUT_MODE_SET()   GPIO_SetDir(GPIOB,GPIO_PIN8, GPIO_IN);         
#defineIIC_OUTPUT_MODE_SET()  GPIO_SetDir(GPIOB,GPIO_PIN8, GPIO_OUT);

配置相关引脚为输出功能的函数为:
  1. void IIC_Init(void)
  2. {
  3.           GPIO_SetDir(GPIOB, GPIO_PIN7, GPIO_OUT);
  4.           GPIO_SetDir(GPIOB, GPIO_PIN8, GPIO_OUT);
  5. }

辅助BMP085读写的基本函数有:
  1. void IIC_Start(void)      
  2. {
  3.            IIC_OUTPUT_MODE_SET();
  4.            SDA_Set();
  5.            SCL_Set();
  6.            udelay(5);
  7.            SDA_Clr();
  8.            udelay(5);
  9.            SCL_Clr();
  10. }


BMP085的初始化函数为:
  1. void Init_BMP085()
  2. {
  3.          ac1 = Multiple_read(0xAA);
  4.          ac2 = Multiple_read(0xAC);
  5.          ac3 = Multiple_read(0xAE);
  6.          ac4 = Multiple_read(0xB0);
  7.          ac5 = Multiple_read(0xB2);
  8.          ac6 = Multiple_read(0xB4);
  9.          b1 =  Multiple_read(0xB6);
  10.          b2 =  Multiple_read(0xB8);
  11.          mb =  Multiple_read(0xBA);
  12.          mc =  Multiple_read(0xBC);
  13.          md =  Multiple_read(0xBE);
  14. }

气温的读取函数为:
  1. long bmp085ReadTemp(void)
  2. {
  3.          IIC_Start();               
  4.          IIC_Send_Byte(BMP085_SlaveAddress);  
  5.          while(IIC_Wait_Ack()){}  
  6.          IIC_Send_Byte(0xF4);               
  7.          while(IIC_Wait_Ack()){}  
  8.          IIC_Send_Byte(0x2E);      
  9.          while(IIC_Wait_Ack()){}  
  10.          IIC_Stop();                 
  11.          mdelay(10);              
  12.          return (long) Multiple_read(0xF6);
  13. }

气压的读取函数为:
  1. long bmp085ReadPressure(void)
  2. {
  3.     long pressure = 0;
  4.     IIC_Start();                 
  5.     IIC_Send_Byte(BMP085_SlaveAddress);
  6.     while(IIC_Wait_Ack()){}
  7.     IIC_Send_Byte(0xF4);
  8.     while(IIC_Wait_Ack()){}  
  9.     IIC_Send_Byte(0x34);
  10.     while(IIC_Wait_Ack()){}  
  11.     IIC_Stop();
  12.     mdelay(10);
  13.     pressure = Multiple_read(0xF6);
  14.     pressure &= 0x0000FFFF;
  15.     return pressure;
  16. }

实现图示输出效果的主程序为:
  1. int main(void)
  2. {
  3.            InitDelay();
  4.            InitDebug();
  5.            OLED_Init();
  6.            OLED_Clear();
  7.            OLED_ShowString(0,0,"AC8710 TEST",16);
  8.            OLED_ShowString(0,2,"OLED Display",16);
  9.            OLED_ShowString(0,4,"jinglixixi",16);
  10.            OLED_ShowString(0,6,"2020.6.6",16);
  11.            IIC_Init();      //BMP085
  12.            Init_BMP085();
  13.            while(1)
  14.            {
  15.                             bmp085Convert();  
  16.                             printf("temperature: %d C\r\n", temperature/10);
  17.                             printf("pressure: %d KPa\r\n", pressure/100);
  18.                             ConvAltitude();
  19.                             mdelay(1000);
  20.            }
  21. }

c.png
测量效果图

zeshoufx 发表于 2020-6-11 11:32 | 显示全部楼层
谢谢分享,,,,,,,,,,
 楼主| jinglixixi 发表于 2020-6-11 12:45 | 显示全部楼层
zeshoufx 发表于 2020-6-11 11:32
谢谢分享,,,,,,,,,,

感谢支持!!!
wowu 发表于 2020-7-7 14:29 | 显示全部楼层
非常感谢楼主分享
xiaoqizi 发表于 2020-7-7 14:30 | 显示全部楼层
感觉准不准呀
木木guainv 发表于 2020-7-7 14:30 | 显示全部楼层
可以测额温吗
磨砂 发表于 2020-7-7 14:31 | 显示全部楼层
楼主辛苦了
晓伍 发表于 2020-7-7 14:31 | 显示全部楼层
通讯稳定吗
 楼主| jinglixixi 发表于 2020-7-8 00:15 | 显示全部楼层

应该不行,测额有专用的模块大约40+元。
 楼主| jinglixixi 发表于 2020-7-8 00:16 | 显示全部楼层

应该没问题,出产的标称值,我们自己一般达不到。
 楼主| jinglixixi 发表于 2020-7-8 00:23 | 显示全部楼层

没问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部