資源簡介
已經(jīng)調(diào)試好的壓力傳感器bmp180程序,測試成功 溫度和壓力都準(zhǔn)確。
單片機(jī)STM32F100
在主程序中#include "bmp180.h"
定義IO口:
#define I2C_SDA_PIN 7
#define I2C_SCL_PIN 6
#define I2C_GPIO GPIOB
gpio_init(I2C_GPIO,I2C_SDA_PIN, GPIO_Mode_AF_OD | GPIO_Speed_50MHz);
gpio_init(I2C_GPIO,I2C_SCL_PIN, GPIO_Mode_AF_OD | GPIO_Speed_50MHz);
定義全局變量:
s32 bmp180_temp,bmp180_presure; //bmp180
主程序調(diào)用:
test_pressure_main();
即得到
溫度bmp180_temp值
壓力bmp180_presure值
代碼片段和文件信息
#include?“bmp180.h“
short?ac1;
short?ac2;?
short?ac3;?
unsigned?short?ac4;
unsigned?short?ac5;
unsigned?short?ac6;
short?b1;?
short?b2;
short?mb;
short?mc;
short?md;
/*?Private?function?prototypes?-----------------------------------------------*/
void??Delay(u32?nCount);
//void?GPIO_Configuration(void);
extern?void?I2C_delay(uint32_t?cnt);
/**
??*?@brief??Main?program
??*?@param??None
??*?@retval?None
??*/
?////Read?calibration?data?from?the?E2PROM?of?the?BMP180
?////read?out?E2PROM?registers?16?bit?MSB?first
void?temp_calibration(void)
{
??uint8_t?buf[2];
??I2C_Read(Open_I2CADDR_24LC020xaabuf?2);
??ac1?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xacbuf?2);
??ac2?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xaebuf?2);
??ac3?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xb0buf?2);
??ac4?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xb2buf?2);
??ac5?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xb4buf?2);
??ac6?=?buf[0]?<8?|buf[1];?
??I2C_Read(Open_I2CADDR_24LC020xb6buf?2);
??b1?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xb8buf?2);
??b2?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xbabuf?2);
??mb?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xbcbuf?2);
??mc?=?buf[0]?<8?|buf[1];
??I2C_Read(Open_I2CADDR_24LC020xbebuf?2);
??md?=?buf[0]?<8?|buf[1];
??////printf(“ac1=%dac2=%dac3=%dac4=%dac5=%dac6=%db1=%db2=%dmb=%dmc=%dmd=%d\r\n“ac1ac2ac3ac4ac5ac6b1b2mbmcmd);
}
void?test_pressure_main(void)
{
??long?x1x2x3b3b5b6b7press_regpressuretemp_regtemp;
//long?x1x2x3b3b5b6b7press_regpressuretemp_reg;
??unsigned?long?b4;
??//int?reti;
??uint8_t?ReadBuffer[10];
//unsigned?short?;
??//unsigned?int?;
??char?oss?=?0;??//這個值在讀氣壓時(shí)可以置進(jìn)寄存器
//GPIO_Configuration();
////USART_Configuration();
??I2C_Configuration();
////printf(“\r\n****************************************************************\r\n“);
//while?(1)
//{
////printf(“\r\n?Read?start?\r\n“);
?
??temp_calibration();
??
??//read?uncompensated?temperature
??I2C_WriteOneByte(Open_I2CADDR_24LC020xf40x2e);
??I2C_delay(200000);//delay?4.5ms
??//ret?=?I2C_Read(Open_I2CADDR_24LC020xf6ReadBuffer2);
??I2C_Read(Open_I2CADDR_24LC020xf6ReadBuffer2);
??temp_reg?=?ReadBuffer[0]?<8?|?ReadBuffer[1];
??////printf(“temp_reg?%d?\r\n“temp_reg);
??
??//calculate?true?temperature
??x1?=?((temp_reg?-?ac6)?*?ac5)?>>?15;
??x2?=?((long)?mc?<11)?/?(x1?+?md);
??b5?=?x1?+?x2;
??temp?=?(b5?+?8)?>>?4;
??bmp180_temp=temp;
??////printf(“x1:%d?x2:%d?b5:%d?temp(*0.1):%d?\r\n“x1x2b5temp);
??
??//read?uncompensated?pressure
??
??//////write?0x34+(oss<<6)?into?reg?0xF4?wait?4.5ms
??I2C_WriteOneByte(Open_I2CADDR_24LC020xf4(0x34?+(oss<<6)));
??
??//I2C_WriteOneByte(Open_I2CADDR_24LC020xf4(0x3e?+?oss<<6));
??//I2C_WriteOneByte(Open_I2CADDR_24LC020xf4
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????5325??2014-03-24?17:51??bmp180\bmp180.c
?????文件????????369??2014-03-24?17:53??bmp180\bmp180.h
?????文件???????8175??2014-03-20?16:12??bmp180\bmpi2c.c
?????文件???????2317??2014-03-24?10:57??bmp180\bmpi2c.h
?????目錄??????????0??2014-03-24?17:54??bmp180
-----------?---------??----------?-----??----
????????????????16186????????????????????5
評論
共有 條評論