收到X-NUCLEO-IKS01A3套件后,一直都在查找、下载资料,阅读相关的手册和分析代码。我使用的是STM32F401RE开发板,在Keil V5.28平台下测试,经过几天的反复测试,STTS751温度传感器终于测试通过了。为了测试时更直观,我还添加了LCD5110作为显示用。下面详细介绍测试过程。
一、硬件连接
开始测试之前,首先是考虑如何接线。起初我按照习惯,在下载的资料中查找传感器板上的接线定义,以便用杜邦线与开发板连接。后来才知道两块板子引脚都是遵循了Arduino UNO R3规范,只要直接插上就行。难怪传感器板子上面有个凹口,正好是留给操作开发板上按钮和观察LED灯的,起初拿到传感器板子时我还纳闷为何要做成如此不规则的形状呢。
插上传感器板子之后,凹口正对着开发板上的按钮和LED灯:
二、软件及开发平台
硬件连接解决之后,紧接着就是软件及开发平台。在下载解压和查看了多个软件包之后,发现STM32CubeExpansion_MEMS_V6.20这个软件包是最新的版本。
在这个软件包的projects子文件夹下有四种STM32的开发板资料,其中就包括了STM32F401RE-Nucleo开发板,这对于我这个初学者来说无疑是一个好消息,可以让我少走不少弯路。
点击进入后又有Applictions和Examples两个子文件夹,我的英文差,于是分别将这两个文件夹截图并标注上中文,以方便使用。
我从“ST_Open_MEMS教程”中看到首先要在线接受软件许可使用协议后,取得开发板密钥后方能解锁使用(如下图所示),弄得我到处去找在线接受许可的界面,好不容易找到一个界面,可点击之后老半天没有反映。然后又看到需要一个“Sensor Fusion GUI”软件来配合调试,可找了许久也没有下载到此软件。最后还是决定自己添加一块LCD5110显示屏来作测试过程的显示用。
三、添加LCD5110显示屏
这个添加对我来说不算难事,选定了驱动LCD的引脚之后,用杜邦线连接好LCD,然后再将相应的代码移植过来就行了。
我是将LCD驱动及显示文件和字库文件全部放在mydrive文件夹里,只需要将这个文件夹复制过来,再设置好搜索路径,在主程序里写上下面的代码:
LCD_init(); //初始化LCD5110
display_main();
下图是准备添加的LCD显示屏:
下图是测试的照片:
下图是初始屏幕上显示的内容:
四、STTS751温度传感器测试
首次使用,我理所当然地先打开了“示例”文件夹,选择“IKS01A3”子文件夹后,然后在打开了STTS751的工程示例。为了能在LCD显示屏上显示当前温度,在main()函数的主循环里,顺藤摸瓜找到MX_MEMS_Process()函数,然后再找到Send_Temperature()函数,从而得到温度的变量名,弄清楚了系统是用out_value.sign变量来表示温度值的正负(0为正数,大于0为负数),然后out_value.int变量表示温度值的整数部分,out_value.dec变量表示小数部分,至此,显示在LCD屏幕上就容易了,下面是显示的代码:
if(out_value.sign > 0)
LCD_write_ASCII(0,5,(uint8_t *)"TEMP:-");
else
LCD_write_ASCII(0,5,(uint8_t *)"TEMP:+");
LCD_write_ASCII(54,5,(uint8_t *)".");
LCD_write_value(36,5,3,0,0,(int)out_value.out_int);
LCD_write_value(59,5,2,0,1,(int)out_value.out_dec);
这是测试过程:
下图是动态显示的实时温度:
下图是屏幕显示与串口通讯的数据对比: