LPS25HB 气压计 的嵌入式程序开发
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                LPS25HB 气压计 的嵌入式程序开发
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                文章目錄
- LPS25HB 氣壓計(jì) 的嵌入式程序開發(fā)
 - 開發(fā)簡介:
 - 開發(fā)過程:
 
LPS25HB 氣壓計(jì) 的嵌入式程序開發(fā)
開發(fā)簡介:
雖然傳感器的檢測(cè)的物理性質(zhì)不同,但是傳感器的硬件接口一般都有一些相似。如果你做過一種一款傳感器如加速度,溫濕度,那么其他的傳感器的嵌入式程序?qū)崿F(xiàn)都差不多。主要涉及這樣幾塊相同的內(nèi)容:
 1、通用接口IIC還是SPI
 2、芯片是否支持FIFO的功能。
 3、是否支持中斷的機(jī)制。
開發(fā)過程:
下面以LPS25HB氣壓傳感器為例,簡單介紹開發(fā)過程。
 1、這里我們采用IIC的通訊方式,
 當(dāng)然首先需要對(duì)MCU的IIC接口進(jìn)行初始化。
 STM32 平臺(tái)的初始化一般如下:
2、實(shí)現(xiàn)IIC的讀寫功能,如果有啟用中斷,則配置中斷管腳及中斷優(yōu)先級(jí)
void BSP_BARO_Init(lps25hb_ctx_t *dev_ctx) {dev_ctx->write_reg = platform_write;dev_ctx->read_reg = platform_read;dev_ctx->handle = &hi2c1;BSP_BARO_IO_ITConfig(); // 使能Baro MEMS 中斷}3、調(diào)試IIC讀寫功能是否正常,我們可以讀取傳感器芯片的 whoamI 值來確認(rèn)。然后配置已基本的寄存器參數(shù),如果啟用FIFO,那相對(duì)就復(fù)雜些。默認(rèn)是ByPass 模式。
void BSP_BARO_Config(lps25hb_ctx_t *dev_ctx) { /* Check device ID */whoamI = 0;lps25hb_device_id_get(dev_ctx, &whoamI);if ( whoamI != LPS25HB_ID )while(1); /*manage here device not found *//* Restore default configuration */lps25hb_reset_set(dev_ctx, PROPERTY_ENABLE);do {lps25hb_reset_get(dev_ctx, &rst);} while (rst);/* Enable Block Data Update */lps25hb_block_data_update_set(dev_ctx, PROPERTY_ENABLE);/* Set Output Data Rate */lps25hb_data_rate_set(dev_ctx, LPS25HB_ODR_25Hz); #ifdef FIFO_BARO //如果定義的FIFO功能// lps25hb_fifo_mode_set(dev_ctx,LPS25HB_FIFO_MODE); // 設(shè)置 FIFO Mode;lps25hb_stop_on_fifo_threshold_set(dev_ctx,1);// lps25hb_fifo_set(dev_ctx,1); //啟用FIFOlps25hb_int_pin_mode_set(dev_ctx,LPS25HB_DRDY_OR_FIFO_FLAGS); //開啟中斷lps25hb_fifo_watermark_set(dev_ctx,0x0F); //開啟watermark、、 lps25hb_fifo_get(dev_ctx,&testv);//lps25hb_fifo_watermark_set_level(dev_acc,THRESH_MASK);#endif}4、ByPass 模式下的數(shù)據(jù)讀取
void BARO_Handle(lps25hb_ctx_t *dev_ctx) {lps25hb_reg_t reg;lps25hb_status_get(dev_ctx, ®.status_reg);if (reg.status_reg.p_da){memset(data_raw_pressure.u8bit, 0x00, sizeof(int32_t));lps25hb_pressure_raw_get(dev_ctx, data_raw_pressure.u8bit);pressure_hPa = lps25hb_from_lsb_to_hpa( data_raw_pressure.i32bit);}if (reg.status_reg.t_da){memset(data_raw_temperature.u8bit, 0x00, sizeof(int16_t));lps25hb_temperature_raw_get(dev_ctx, data_raw_temperature.u8bit);temperature_degC = lps25hb_from_lsb_to_degc( data_raw_temperature.i16bit);} }ByPass 模式程序簡單,適合一般地應(yīng)用場(chǎng)景。
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的LPS25HB 气压计 的嵌入式程序开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: IIC总线上挂载多个从机的程序实现
 - 下一篇: LPS25HB 气压计 参考手册中关于