郭昉 張曉宇 魏景新



摘 要: 現代電子設備越來越普及,因此為了實現人們在移動電話上方便地進行血糖監測,并為網絡醫院打下基礎,手機外掛血糖檢測模塊的設計和實現具有非常重要實際意義。通過利用新一代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.