关于 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 的解决方案。
学习、研究示例程序,是进阶必经之路。