宏康HY19系列单片机之低功耗
来源:互联网 发布:qq空间推广淘宝店铺 编辑:程序博客网 时间:2024/05/13 23:25
一、前言
网上关于宏康单片机的资料非常的少,因为几个项目一直在用这个单片机,所以一直在 学习这个单片机,这款单片机有24bit的ADC和LCD驱动,还有就是低功耗,sleep模式手册上写的是2.5uA,现在的板子做到了50uA,还是比较低。
二、低功耗
手册上关于省电模式的介绍非常少,我一开始没看明白
一直在测功耗,发现功耗小了,觉得自己可能搞对了,现在想想是非常不应该的,后面就仔细研究了一下。
HY19系列的单片机和STM32差不多,都是调用函数库
在单片机进入SLEEP MODE之前要设置能使其恢复 Active Mode 的中断,我设置的外部按键中断。
void Sleepscale(void){//setting IODrvGPIO_Open(E_PT1,BIT7,E_IO_INPUT); //SET PT1.7 AS INPUT FOR KEYDrvGPIO_Open(E_PT1,BIT7,E_IO_PullHigh); //enable PT1.7 PULL HIGH;//set ADCDrvADC_Disable();DrvADC_DisableInt();DrvPMU_VDDA_LDO_Ctrl(0);//set UARTDrvUART_Close();DrvUART_ClrTxFlag();//setting timer BDrvTIMER_DisableInt(E_TMB); //disable the Timer B interruptDrvTMB_Close(); //close timer BDrvTMB_ClearTMB(); //clear the timer B counterDrvTIMER_ClearIntFlag(E_TMB); //clear the Timer B interrupt flag//enable IO interruptDrvGPIO_IntTrigger(E_PT1,BIT7,E_N_Edge); //setting edge triggerDrvGPIO_ClearIntFlag(E_PT1,BIT7); //clear the interrupt flag;DrvGPIO_Open(E_PT1,BIT7,E_IO_IntEnable); // enable the IO interruptSYS_EnableGIE(7,0x1FF);DrvCLOCK_EnableLowOSC (E_EXTERNAL,130000); //低速频率源选择外部低速晶振DrvCLOCK_SelectMCUClock(1,0);DrvCLOCK_CloseIHOSC();//get into low power modeasm("nop");asm("nop");SYS_LowPower (SYS_SleepMode);//(SYS_WaitMode);asm("nop");asm("nop");while(!WarkUp_flag);WarkUp_flag = 0;//setting IC CPU clockDrvCLOCK_EnableHighOSC(E_INTERNAL,1); // enable HAODrvCLOCK_SelectMCUClock(0,0);DrvCLOCK_EnableLowOSC (E_EXTERNAL,130000); //低速频率源选择外部低速晶振//disable IO interruptDrvGPIO_Close(E_PT1,BIT7,E_IO_IntEnable); // disable the IO interruptDrvGPIO_ClearIntFlag(E_PT1,BIT7); //clear PT1 interrupt flagDrvGPIO_IntTrigger(E_PT1,BIT7,E_DisableGPIOInt);DrvUART_Close();DrvUART_Enable(); //使能UART功能DrvUART_ClrRxFlag();DrvADC_Enable();//enable the timer BTimerBInit();SYS_EnableGIE(7,0x1FF);}
总的来说分以下几步:
1、关闭所有外设,定时器、ADC等,设置中断唤醒引脚中断
2、切换时钟:关闭内部高速时钟,MCU时钟切换到外部低速(也可以是内部低速),我外部用了32768的晶震,内的低速用了之后发现如果频繁的进入退出SLEEPMODE会出现无法唤醒的情况
3、设置标志位,等待按键唤醒,这种方式的话,程序相当于死在while();这里,总觉得会有问题,但是HY给出的一个例程中是这样做的,测试之后发现还是比较稳定
4、按键唤醒后切换到内部高速时钟、打开外设继续工作。
如果还需省电的话,可以把RS485的使能脚关闭,比如说18487的REN置高,DEN置低,实测的话可以省0.2个毫安。
三、总结
HY单片机价格便宜,使用调用函数库,总的来说还是比较简单,但是技术手册写的比较不详细。
要改掉自己得过且过的毛病,多测试,做到完美。
0 0
- 宏康HY19系列单片机之低功耗
- Freescale KLxx系列单片机低功耗
- PIC单片机之探讨低功耗
- 单片机低功耗
- 基于C8051F系列单片机的低功耗设计
- 单片机低功耗设计杂谈
- 单片机低功耗设计杂谈
- 单片机低功耗设计小结
- IC设计基础系列之低功耗篇1:(数字IC)低功耗设计入门(一)——低功耗设计目的与功耗的类型
- 关于PIC单片机18系列超低功耗软件编程的关键点
- MSP430G2553与MSP430F5336系列单片机总结[1]——时钟说明与低功耗模式简介
- 单片机系统的低功耗设计策略
- 低功耗单片机系统的设计策略
- TI CC2540单片机裸机低功耗 测试
- IC设计基础系列之低功耗篇3:数字IC)低功耗设计入门(三)——系统与架构级低功耗设计
- IC设计基础系列之低功耗篇4:(数字IC)低功耗设计入门(四)——RTL级低功耗设计
- IC设计基础系列之低功耗篇5:(数字IC)低功耗设计入门(五)——RTL级低功耗设计(续)
- IC设计基础系列之低功耗篇6:(数字IC)低功耗设计入门(六)——门级电路低功耗设计优化
- 在linux纯命令下如何去配置网卡信息
- 用flask开发个人博客(33)—— 使用itsdangerous进行账户的确认
- 系统调用&上下文&中断
- JS学习第三篇;AngularJS的使用
- 结对测试工具PICT用户手册(7)——样本模型
- 宏康HY19系列单片机之低功耗
- linux启动的第一个阶段(从开机到main)
- JAVA通过JDBC连接MySQL数据库方法和示例
- 【C++】二分查找的递归形式和非递归形式
- 【Tips】关于Eclipse使用Maven插件遇到的问题
- Google Guice 小试牛刀--1
- linux学习系列--1.虚拟机安装 centos minimal 配置 ssh ftp
- 代码只为兴趣而写
- cpu多核技术发展