基于STM8L单片机的手机外挂血糖检测模块
2017-04-10郭昉张晓宇魏景新
郭昉 张晓宇 魏景新
摘 要: 现代电子设备越来越普及,因此为了实现人们在移动电话上方便地进行血糖监测,并为网络医院打下基础,手机外挂血糖检测模块的设计和实现具有非常重要实际意义。通过利用新一代STM8L超低功耗单片机以及超低功耗方案和技术,设计并实现了一种用在移动电话上的外挂血糖检测模块。产品测试结果表明完全适合在手机上进行外挂,实现了移动电话血糖检测。
关键词: 血糖检测; 移动电话; STM8L; 血糖手机
中图分类号: TN99?34 文献标识码: A 文章编号: 1004?373X(2017)06?0151?04
Abstract: In order to monitor the blood glucose on mobile phone conveniently and lay a foundation for network hospitals, the design and implementation of the blood glucose detection module stored in the mobile phone have a very important practical significance. A new generation STM8L with ultra?low power consumption, ultra?low power consumption scheme and technology are used to design and implement a blood glucose detection module stored in the mobile phone. The product test results show that the blood glucose detection module is perfectly suited to storing in the mobile phone. The blood glucose monitoring was realized by means of the mobile phone with the module.
Keywords: blood glucose detection; mobile phone; STM8L; blood glucose mobile
0 引 言
血糖监测是医疗健康工程中非常重要的一项健康指标。便携式血糖仪已经非常普及[1?3]。而网络医院的概念和实际应用已经逐步在推行。网络医院的重要基础设施之一就是各类常见医疗设备的家庭化、便携化。将常见血糖仪,即血糖检测功能和智能手机结合,产生了血糖手机的概念。本文以血糖手机的概念为应用背景,进行了一种用于手机外挂的血糖检测模块设计。提出了血糖检测模块手机外挂方案,进行了模块的硬件电路设计以及软件设计,最终实现了产品化。该产品采用STM8L系列MCU,进行了适用于手机的超低功耗设计,整体超低功耗微型化,满足了产品各项设计指标[1?2]。
经过调研和反复研究,产品设计功能目标如下:测试品种,5D血糖、酮体、尿酸;采用STM8L151K6U6芯片当作主控核心;内嵌12 b/A/D?D/A转换器,确保测试精度输出;所有功能采用1.8 V串口(UART)通信访问的形式;温度测试为0~45 ℃,分辨率为0.5 ℃;外部供电电压为3~4.2 V(用于模块工作)和1.8 V(用于串口电平转换);模块工作电流不大于3 mA,睡眠电流不大于3 μA。
而要实现这个设计目标,超低功耗是关键之一。因为手机的电池续航时间不足以支撑常见的便携式血糖仪。这个问题表明,系统如果在测试状态,功耗可以短时间较大,但是在非测试状态,系统必须进入睡眠或停机状态,以将平均功耗限制在很小范围。近年来,为实现超低功耗的应用目标,市场出现了很多微功耗MCU,比如TI公司的MSP430[4?6]及意法的STM8[7?10]。
意法半导体公司(ST)采用了全新的超低漏电工艺和优化的体系结构,研发了超低功耗系列微控制器STM8L。它基于8位STM8内核,集成了各种高性能外围器件及超低功耗功能[1?2]。STM8L系列MCU有三个子系列品种,基本上能够全面应用于低功耗要求的多种场合。已经有好多工程师们应用STM8L系列单片机对许多超低功耗产品进行设计应用[11?13]。STM8L系列微控制器的主要特征可以参见STM8L数据手册等[1?2]。
1 系统方案
系统方案如图1所示。主控以STM8L单片机为核心,电源供电使用线性稳压电源(LDO)对系统3.3 V供电,供电浮动范圍为2.5~3.3 V。由于手机只能接收1.8 V的串口通信,因此必须设计1.8 V串口通信电平转换电路。血糖监测温度是重要参数,因此设计最简单有效的低功耗测温电路,精度0.5 ℃。
由于手机的外挂要求功耗是超低功耗,耗电量是重要参数。因此设计方案中,必须在非测试状态下让主控、功能电路等进入睡眠。模块的睡眠、通信方案设计如图2所示。当模块已经进入睡眠状态,用INTMCU引脚给一个上升沿唤醒模块。当模块在睡眠状态时,用户先插入到测试座试条,此时模块自动从睡梦中唤醒,并通过INTBB给主机一个1 ms脉冲,用于通知主机,有用户想测试。
2 硬件电路设计
2.1 主控电路原理
系统主控电路原理图如图3所示。设计使用16 MHz晶振,单片机工作时,使之工作在16 MHz频率,睡眠时,晶振停振,内部RC振荡工作在非常低的频率下。J2是程序烧写口,设计为上电复位。R3~R5为温度测量电路电阻,精度都在1%以上,RT是高精度热敏电阻。这样能用最精简的硬件实现0.5 ℃分辨率的温度监测。TEMP和TEMP0均使用内部12位ADC实现模拟电压测试。
2.2 通信電路原理
系统通信电路原理图如图4所示。设计使用德州仪器的TXB0102数字芯片,实现3.3 V串口转1.8 V串口的双向电平转换。TXB0102采用两个独立可配置的供电轨道:A端口是分配跟随电源VCCA的,电压范围为1.2~3.6 V;B端口是分配跟随电源VCCB的,电压范围为1.65~5.5 V。这就给低压双向通信电平转换带来了方便,使用时VCCA应低于VCCB。TXB0102芯片采用了纳米技术封装,使得封装极小,适合手机外挂通信使用。基于此,本设计中,B端口接STM8L单片机的UART端口(3.3 V);而A端口接手机串口(1.8 V)。由于不需要控制通信中断而芯片功耗极低,芯片的控制端(OE端)直接接高电平以使之始终有效。
3 低功耗设计原理
血糖手机携带的外挂设备必须超低功耗。为了实现模块工作时电流不大于3 mA,睡眠时电流不大于3 μA的设计目标,低功耗设计是设计难点。本文详细研究了STM8L单片机的超低功耗应用,首先应考虑工作时、睡眠时的各个配置如下所述[1?2]。
3.1 主控低功耗设计
主控低功耗设计应考虑问题如下。
活动等级配置:CFG_GCR寄存器的AL位控制STM8L MCU的活动等级配置。对便携式设备(低功耗设备)来说,很大部分时间设备是处于待机状态,也就是WFI/HALT模式下。设备的许多重复任务并不需要唤醒,设备的很多任务并不需要中断返回,只是在特定状态下通过中断返回即可。这样,在设备进入低功耗模式前如果置位AL位,再执行WFI/HALT命令,中断子程序返回时,设备会自动回到低功耗模式[2]。
I/O设置:所有默认的I/O状态都是浮空输入,如果STM8L的I/O引脚没有连接,那么就必须在进入低功耗模式前予以设置。可以选择的I/O设置:带上拉的输入;输出逻辑低/高;推挽输出低/高。
因为内部Schmitt触发器能检测到噪声的交变。浮空的I/O会增加大概10 μA额外的功耗[2]。
时钟关闭:HALT模式下,系统时钟源、CPU及所有外设都将关闭。但是如果:由于SWIM口在工作,使HSI未关闭[2];由于FLASH/Data E2PROM写操作正在执行,系统时钟未关闭[2];由于SWIM口或IWDG在选项字节设置中,IWDG_HALT位被禁止而必须使用LSI时钟,这样LSI无法关闭[2]。这样情况下系统时钟关不掉,功耗也不会降到最低。因此必须确认进入HALT前上述三种情况没有发生[2]。
进入HALT模式速度:如果下列标志位置位,将延缓MCU进入HALT模式的速度。CLK_SWCR 寄存器中的SWBSY 位;CLK_REGCSR寄存器中的EEBUSY位; CLK_CRTCR 寄存器中的RTCSWBSY位; 当Beep被使能,在Active HALT模式下,CLK_CBEEPR寄存器中BEEPSWBSY位[2]。
进入HALT模式:执行halt()指令后, MCU进入HALT模式。在进入HALT模式之前,应用程序必须通过清除中断标志位清除所有外设中断,否则因为中断的存在,halt()指令虽然执行但MCU马上会唤醒,程序继续执行[2]。
退出HALT模式:MCU进入HALT模式后只能由外部中断和复位唤醒。因此在进入HALT模式之前,应用程序必须设置好外部中断唤醒I/O及相应软件处理程序。唤醒后,系统时钟源的选择由CLK_ICKCR寄存器的FHW位决定。当FHW置位时,系统由HSI/8的时钟重新启动,否则系统自动选择停机之前的系统时钟重新启动[2]。
本系统的低功耗设置及进入HALT流程参见文献[2]。
3.2 低功耗设计代码
进入HALT模式前的GPIO设置程序是子函数GPIO_Low_Power_ Config(),代码如下:
void GPIO_LowPower_Config(void)
{ /* Port A in output push?pull 0 */
GPIO_Init(GPIOA,GPIO_Pin_All, GPIO_Mode_Out_PP_
Low_Slow);
/* Port B in output push?pull 0 */
GPIO_Init(GPIOB,GPIO_Pin_All, GPIO_Mode_Out_PP_
Low_Slow);
/* Port C in output push?pull 0 except Button pins */
GPIO_Init(GPIOC,GPIO_Pin_0|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7,GPIO_Mode_Out_PP_Low_Slow);
/* Port D in output push?pull 0 */
GPIO_Init(GPIOD,GPIO_Pin_1|
GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7,GPIO_Mode_Out_PP_Low_Slow);
/* Port E in output push?pull 0 */
GPIO_Init(GPIOE,GPIO_Pin_All,GPIO_Mode_Out_PP_
Low_Slow);
/* Port F in output push?pull 0 */
GPIO_Init(GPIOF,GPIO_Pin_All,GPIO_Mode_Out_PP_
Low_Slow);
}
进入HALT模式前,关闭MCU所有外设时钟程序是Close_Peri ()子函数,代码如下:
void Close_Peri(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_COMP,ENABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1,ENABLE);
ADC_VrefintCmd(DISABLE);
COMP_VrefintOutputCmd(DISABLE);
SYSCFG_RIIOSwitchConfig(RI_IOSwitch_8,DISABLE);
SYSCFG_RIIOSwitchConfig(RI_IOSwitch_15,DISABLE);
ADC_Cmd(ADC1, DISABLE);
DAC_Cmd(DAC_Channel_1, DISABLE);
USART_Cmd(USART1, DISABLE);
TIM1_Cmd(DISABLE);
TIM2_Cmd(DISABLE);
TIM3_Cmd(DISABLE);
TIM4_Cmd(DISABLE);
PWR_PVDITConfig(DISABLE);
PWR_PVDCmd(DISABLE);
CLK_BEEPClockConfig(CLK_BEEPCLKSource_Off);
CLK_HALTConfig(CLK_HALT_FastWakeup,DISABLE);
…
}
进入HALT模式将执行StepIntoHALT()子函数,代码如下:
void StepIntoHALT(void)
{
/* Set STM8L in low power */
PWR?>CSR2 = 0x02; //设置STM8L电源管理寄存器
/* Set GPIO in low power*/
GPIO_LowPower_Config(); //进入HALT前设置GPIO
/*Stop RTC*/
CLK_RTCClockConfig(CLK_RTCCLKSource_Off,
CLK_RTCCLKDiv_1); //停止RTC时钟
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, DISABLE);
halt();
}
4 产品测试
4.1 电气参数
在VBAT=3.3 V,TA=20 ℃测试条件下,得到产品电气参数表见表1。
4.2 联机测试
将调试好的手机外挂血糖检测模块进行联机产品测试。上位机开发一种测试软件如图5所示。
测试软件用1.8 V串口进行通信,利用设计好的通信协议测试校正电压、校正温度、读取环境温度、设备工作状态;并且在上位机界面控制下进行选择血糖、血尿酸和酮体测试,在右侧操作日志观测手机外挂血糖检测模块的测试值。
打开串口后,操作如下:
(1) 点击“读取设备信息”功能框内的“读取”,应能读出设备ID、版本号等。
(2) 点击“测试过程”功能框内的“环境温度值:”后面的“读取”,应能读出当前温度。
(3) 点击“测试过程”功能框内的“设备工作状态:”后面的“读取”,应能读出当前工作状态正常。
(4) 点击“测试品种选择”功能框内的“开始测试”,用户配合进行取血测试,在操作日志中有测试值回馈。
经过研发成功后,对外挂模块进行了功耗(电流)重点测试,如表2所示。
抽取了4台模块产品,每个模块进行10次测试。表2数据表明,处于工作时的模块电流都在3 mA以下,处于睡眠状态的模块电流都在1.3 μA以下,产品的超低功耗得以实现,适用于手机外挂应用。
5 结 语
设计并实现了一种用于手机外挂的血糖检测模块。应用了STM8L单片机为主控核心,运用了其超低功耗技术,实现了模块功耗适合手机外挂。手机主机采用1.8 V串口与外挂模块进行通信,实现了手机可以用APP进行模块控制应用。模块测试结果表明了产品设计达到了预期目标。模块具备超低功耗、串口通信及满足精度的血糖测试功能,表明产品具备很强实际应用前景。
参考文献
[1] 张晓宇,田奕.基于STM8L单片机的微型血糖仪设计与开发[J].自动化与仪表,2014(4):15?18.
[2] 张晓宇.基于STM8L单片机超低功耗设计的微型血糖仪[J].华北科技学院学报,2014(7):56?60.
[3] 邹向阳,刘戎.基于STC单片机的便携式快速血糖仪的设计与实现[J].传感器与微系统,2008(2):96?97.
[4] 焦冰,叶松,温雅婷.MSP430低功耗原理及其在海温测量中的应用[J].现代电子技术,2011,34(10):189?192.
[5] 王洪刚,单志勇,李明.超低功耗粮仓无线实时监测系统设计[J].现代电子技术,2011,34(21):46?48.
[6] 陈世夏,吴凌燕,丁国臣.基于SPCE061A的超低功耗电子温度计设计[J].现代电子技术,2011,34(13):175?178.
[7] 陈国照.STM8系列单片机的开发与应用[J].甘肃冶金,2011(2):113?114.
[8] 陈上挺,谢文彬,游颖敏.基于STM8的红外与超声波测距仪设计[J].电子技术应用,2011(9):32?34.
[9] 周伯俊,姜平.基于STM8S207SB的远程无线通信模块设计[J].仪表技术,2012(10):33?35.
[10] 张升,王立峰,王爽.基于STM8S105的直流永磁无刷电机控制器设计[J].工业控制计算机,2012(9):123?124.
[11] 胡权林,秦会斌.基于STM8L单片机的高精度数字压力表的设计[J].无线互联科技,2014(8):133.
[12] 徐又又,韦政.基于STM8L单片机的动态密码电子锁设计[J].现代计算机,2015(17):45?50.
[13] 杨镇遥,胡越黎,杨文荣,等.基于STM8L系列单片机的电量显示系统设计[J].仪表技术,2014(9):5?8.