巨集康HY19系列微控制器之低功耗
阿新 • • 發佈:2019-02-06
一、前言
網上關於巨集康微控制器的資料非常的少,因為幾個專案一直在用這個微控制器,所以一直在 學習這個微控制器,這款微控制器有24bit的ADC和LCD驅動,還有就是低功耗,sleep模式手冊上寫的是2.5uA,現在的板子做到了50uA,還是比較低。
二、低功耗
手冊上關於省電模式的介紹非常少,我一開始沒看明白
一直在測功耗,發現功耗小了,覺得自己可能搞對了,現在想想是非常不應該的,後面就仔細研究了一下。
HY19系列的微控制器和STM32差不多,都是呼叫函式庫
在微控制器進入SLEEP MODE之前要設定能使其恢復 Active Mode 的中斷,我設定的外部按鍵中斷。
總的來說分以下幾步:void Sleepscale(void) { //setting IO DrvGPIO_Open(E_PT1,BIT7,E_IO_INPUT); //SET PT1.7 AS INPUT FOR KEY DrvGPIO_Open(E_PT1,BIT7,E_IO_PullHigh); //enable PT1.7 PULL HIGH; //set ADC DrvADC_Disable(); DrvADC_DisableInt(); DrvPMU_VDDA_LDO_Ctrl(0); //set UART DrvUART_Close(); DrvUART_ClrTxFlag(); //setting timer B DrvTIMER_DisableInt(E_TMB); //disable the Timer B interrupt DrvTMB_Close(); //close timer B DrvTMB_ClearTMB(); //clear the timer B counter DrvTIMER_ClearIntFlag(E_TMB); //clear the Timer B interrupt flag //enable IO interrupt DrvGPIO_IntTrigger(E_PT1,BIT7,E_N_Edge); //setting edge trigger DrvGPIO_ClearIntFlag(E_PT1,BIT7); //clear the interrupt flag; DrvGPIO_Open(E_PT1,BIT7,E_IO_IntEnable); // enable the IO interrupt SYS_EnableGIE(7,0x1FF); DrvCLOCK_EnableLowOSC (E_EXTERNAL,130000); //低速頻率源選擇外部低速晶振 DrvCLOCK_SelectMCUClock(1,0); DrvCLOCK_CloseIHOSC(); //get into low power mode asm("nop"); asm("nop"); SYS_LowPower (SYS_SleepMode);//(SYS_WaitMode); asm("nop"); asm("nop"); while(!WarkUp_flag); WarkUp_flag = 0; //setting IC CPU clock DrvCLOCK_EnableHighOSC(E_INTERNAL,1); // enable HAO DrvCLOCK_SelectMCUClock(0,0); DrvCLOCK_EnableLowOSC (E_EXTERNAL,130000); //低速頻率源選擇外部低速晶振 //disable IO interrupt DrvGPIO_Close(E_PT1,BIT7,E_IO_IntEnable); // disable the IO interrupt DrvGPIO_ClearIntFlag(E_PT1,BIT7); //clear PT1 interrupt flag DrvGPIO_IntTrigger(E_PT1,BIT7,E_DisableGPIOInt); DrvUART_Close(); DrvUART_Enable(); //使能UART功能 DrvUART_ClrRxFlag(); DrvADC_Enable(); //enable the timer B TimerBInit(); SYS_EnableGIE(7,0x1FF); }
1、關閉所有外設,定時器、ADC等,設定中斷喚醒引腳中斷
2、切換時鐘:關閉內部高速時鐘,MCU時鐘切換到外部低速(也可以是內部低速),我外部用了32768的晶震,內的低速用了之後發現如果頻繁的進入退出SLEEPMODE會出現無法喚醒的情況 3、設定標誌位,等待按鍵喚醒,這種方式的話,程式相當於死在while();這裡,總覺得會有問題,但是HY給出的一個例程中是這樣做的,測試之後發現還是比較穩定 4、按鍵喚醒後切換到內部高速時鐘、開啟外設繼續工作。 如果還需省電的話,可以把RS485的使能腳關閉,比如說18487的REN置高,DEN置低,實測的話可以省0.2個毫安。
三、總結
HY微控制器價格便宜,使用呼叫函式庫,總的來說還是比較簡單,但是技術手冊寫的比較不詳細。
要改掉自己得過且過的毛病,多測試,做到完美。