關於 STMicroelectronics mems傳感器開發的一些技術分享
ST 的傳感器芯片家族也非常強大,開發包資料全,開發效率高。
實驗材料:
1、ST Nucleo 開發板系列 開發板
2、X-Nucleo-IKSO1A2 擴展板
3、ST 官方技術文檔(包括軟件、參考手冊等)
實驗步驟及技術要點:
1、將Mems擴展板安放在Nucleo 開發上,通過開發板自帶的usb虛擬串口連接電腦。當然實現與電腦的連接,必須首先安裝st 虛擬串口的驅動程序。安裝完成後,電腦會自動識別開發板上的串口。
2、安裝unicleo-GUI 上位機軟件
3、官網下載開發軟件包STM32CubeExpansion_MEMS1_V4.4.1,將對應的軟件通過Keil 或 IAR 開發工具下載到開發板上。
4、串口連接後,通過unicleo-GUI 上位機軟件 可以觀察到傳感器數據窗口
地磁傳感器:
溫溼度、氣壓傳感器:
加速度傳感器:
開發板嵌入式端的關鍵代碼分析:
1、main()函數分析:
開發板是利用HAL庫開發,首先還是
/* STM32F4xx HAL library initialization:
- Configure the Flash prefetch, instruction and Data caches
- Configure the Systick to generate an interrupt each 1 msec
- Set NVIC Group Priority to 4
- Global MSP (MCU Support Package) initialization
*/
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
然後是串口、RTC、Sensors 的配置初始化:
/* Initialize UART */
USARTConfig();
/* Initialize RTC */
RTC_Config();
RTC_TimeStampConfig();
/*Initialize Sensors*/
initializeAllSensors();
enableAllSensors();
2、主體程序while(1)部分:
- 與上位機的通訊指令交互:
if (UART_ReceivedMSG((TMsg*) &Msg))
{
if (Msg.Data[0] == DEV_ADDR)
{
HandleMSG((TMsg*) &Msg);
if ( DataLoggerActive )
{
AutoInit = 0;
}
}
}
- 利用RTC進行時間數據上報:
RTC_Handler(&Msg);
- 傳感器處理函數:
Pressure_Sensor_Handler(&Msg);
Humidity_Sensor_Handler(&Msg);
Temperature_Sensor_Handler(&Msg);
Accelero_Sensor_Handler(&Msg);
Gyro_Sensor_Handler(&Msg);
Magneto_Sensor_Handler(&Msg);
總結:
STMicroelectronics 提供了完整的Mems 的解決方案。
學習、研究示例程序,是進階必經之路。