热度 10
2021-9-28 11:01
1104 次阅读|
0 个评论
华润微 CS88M312 芯片如何降低功耗 , 芯片运行时的瞬时功耗主要与 MCU 使用模块的数量和 MCU 的主频相关。 CS88M312 芯片内置了 16M/8M/4M/910K 4 个高速振荡器,选用合适的振荡器会降低瞬时功耗。除了直接选用内置的调整振荡器来做主时钟, CS88M312 芯片还可以把振荡器进行分频做为主时钟,这样可以进一步的降低系统的瞬时功耗。当然主频越低同样的任务处理的时单也越长,所以要进行综合的考量。 MCU 运行时不使用的模块全部关掉,这样可以有效的避免 MCU 产生额外的功耗。 华润微 CS88M312 芯片提供了两种休眠模式和两种空闲模式用来降低系统的功耗,相关说明如下: 休眠模式 0 :功耗低, MCU 只能通过 PA 口唤醒; 休眠模式 1 : MCU 只能通过 PA 口;空闲模式 0 :内部高速时钟停止,外设模块可以工作在低速时钟;空闲模式 1 : CPU 停止,内部高速时钟运行。 MCU 进入到休眠模式或空闲模式:当 SYS_REG2 寄存器中的 Idlen 位为 0 时,进入休眠模式, Idlen 为 1 时进入空闲模式。对于未使用的端口,建议设置为上拉输入 PCON 的 bit1 是 STOP 位, MCU 写 Stop 信号为 1 将进入休眠模式,在进入休眠模式之前需将中断控制器及其他接口模块的 Mask 信号清 0 ,以保证 MCU 能被唤醒,在 MCU 唤醒之后, STOP 自动清 0 。 注意:在 STOP 指令之后需要至少 4 条 NOP 指令,以保证程序唤醒后正常运行。对 MCU 进行 STOP 前,读取 SYS_REG4 寄存器 bit4 位为 1 等待,为 0 可以写入 STOP Sleep 示例代码如下: void Sleep () { if ((SYS_REG4 & 0x10 ) == 0x00 ) { WAKE_EN = 0x42; // PCON |= 0X02 ; //mcu_stop _nop_ (); _nop_ (); _nop_ (); _nop_ (); } } 华润微 CS88M312 芯片使用注意事项 1. 不是所有的参数设置都在程序中对寄存器进行设置来实现。华润微 CS88M312 芯片手册中配置选项(如芯片的时钟,主频, RES 引脚选项等)中的参数是在上位机软件中进行设置; 2. 当有需要降低功耗进入休眠并且休眠后需要通过定时器来唤醒时,内置低速振荡器选用 8K , 32K 会有个别情况下不能唤醒; 3. 定时器 0 和定时器 1 是向上计数,从 0 开始到设置的计数值时产生中断; 4. 定时器 2 和定时器 3 计数时是向上计数,从设置值开始向上计数,计数到计数值溢出产生中断; 5. 华润微 CS88M312 芯片中断只有 INT0 和 INT1 两个中断入口,各个中断都可以映射到这两个中断中入中,当一个中断入口不只一个中断源时,需要把 TCON 设置为电平触发,边沿触发只会响应一个中断源,其它的中断源不会响应; 6. 使用 UART 功能时,定时器生成波特率时选用 16 位计数模式,高低 8 位分别计数模式误码率高,不建议使用; 7. 华润微 CS88M312 芯片只能通过原厂提供的上位机和烧写器进行下载,不能仿真; 8. 使用烧写器对华润微 CS88M312 芯片进行烧写时,芯片不能有外供电。