0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CW32L083不同主频功耗测试

武汉芯源半导体有限公司 2023-06-27 16:21 次阅读

本文主要介绍CWL083VCT6芯片在不同主频下的功耗测试方法和测试结果。

1.HSIOSC时钟

HSIOSC 时钟由内部 RC 振荡器产生,不需要外部电路,比 HSE 时钟的成本低,启动速度快。HSIOSC 时钟频率固定为 48MHz,频率精度低于 HSE 时钟。RC 振荡器输出时钟的频率受芯片加工过程、工作电压、环境温度等因素影响,CW32L083 提供了 HSIOSC 时钟频率校准功能,用户可通过设置内置高频时钟控制寄存器 SYSCTRL_HSI 的 TRIM 位域值来校准 HSIOSC 时钟频率,HSIOSC 内部高速 RC 振荡器在芯片上电后,默认处于开启状态,用户可通过设置系统控制寄存器的 SYSCTRL_CR1 的HSIEN 位域为 0 来关闭。如用户停止并重新启动了 HSIOSC 振荡器,可通过内置高频时钟控制寄存器 SYSCTRL_HSI的 STABLE 标志位来确定 HSI 时钟是否稳定,STABLE 标志为 1 表示 HSIOSC 时钟已稳定,为 0 则表示 HSIOSC 时钟还未稳定。

HSIOSC 时钟经过分频后输出 HSI 时钟,分频系数通过内置高频时钟控制寄存器 SYSCTRL_HSI 的 DIV 位域设置,有效分频系数为 1、2、4、6、8、10、12、14、16,上电后默认值为 6,所以 HSI 时钟默认频率为 8MHz。

2.PLL时钟

CW32L083 内部集成锁相环 PLL 电路,可对输入时钟源进行锁相倍频输出 PLL 时钟。用户可通过内置锁相环控制寄存器 SYSCTRL_PLL 的 SOURCE 位域选择 PLL 的输入参考时钟源,如下表所示

wKgZomSamriAfoefAABl3Su7Xt0703.jpg

锁相环倍频系数通过内置锁相环控制寄存器 SYSCTRL_PLL 的 MUL 位域进行设置,可设置范围为 2 ~ 12,默认值 为 8。为保证锁相环的锁定收敛速度及输出时钟相噪性能,用户需根据实际的输入参考时钟频率和输出时钟频率分别设置 SYSCTRL_PLL.FREQIN 和 SYSCTRL_PLL.FREQOUT 位域的值。

wKgaomSamtuAGZuAAAA6htKqPWc347.jpg

wKgZomSamuOAVcteAABj5hQ9PuQ045.jpg

PLL 默认处于关闭状态,通过设置系统控制寄存器 SYSCTRL_CR1 的 PLLEN 位域为 1 来启动。PLL 启动后,芯片 内部时钟监控模块检测到一定数量的 PLL 时钟信号,则认为 PLL 时钟已稳定。检测时钟数量可通过内置锁相环控制寄存器 SYSCTRL_PLL 的 WAITCYCLE 位域进行设置,通过内置锁相环控制寄存器 SYSCTRL_PLL 的 STABLE 标志位,可确定 PLL 时钟是否稳定,STABLE 标志为 1 表 示 PLL 时钟已稳定,为 0 则表示 PLL 时钟还未稳定。

修改 PLL 参数流程如下:

步骤 1:设置 SYSCTRL_CR1.PLLEN 为 0,关闭 PLL;

步骤 2:等待 SYSCTRL_PLL.STABLE 标志被系统硬件清零;

步骤 3:更改 PLL 的参数;

步骤 4:设置 SYSCTRL_CR1.PLLEN 为 1,启动 PLL;

步骤 5:等待 SYSCTRL_PLL.STABLE 标志被系统硬件置 1,标识 PLL 时钟已稳定。

3.实例演示

通过按键KEY1中断调节运行主频(4M/12M/24M/48M/64M),LCD显示对应数字。

(1)初始化GPIO

void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; __RCC_GPIOA_CLK_ENABLE(); GPIO_InitStruct.IT = GPIO_IT_FALLING; //KEY1 -- PA04 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pins = GPIO_PIN_4; GPIO_Init(CW_GPIOA, &GPIO_InitStruct); GPIO_ConfigFilter(CW_GPIOA, bv4, GPIO_FLTCLK_LSI); }

(2)GPIO中断控制函数

void GPIOA_IRQHandlerCallback(void) { if(CW_GPIOA->ISR_f.PIN4) { GPIOA_INTFLAG_CLR(bv4); Key1Count++; switch(Key1Count) { case 1: CW_LCD->RAM0 = 0x0603;//4 RCC_HSI_Enable(RCC_HSIOSC_DIV12); RCC_SysClk_Switch(RCC_SYSCLKSRC_HSI); //切换系统时钟到HSI 4MHz RCC_PLL_Disable(); //关闭PLL break; case 2: CW_LCD->RAM0 = 0x030e0005;//12 RCC_HSI_Enable(RCC_HSIOSC_DIV4); break; case 3: CW_LCD->RAM0 = 0x0603030e;//24 RCC_HSI_Enable(RCC_HSIOSC_DIV2); break; case 4: CW_LCD->RAM0 = 0x0f0f0603;//48 RCC_HSI_Enable(RCC_HSIOSC_DIV6); RCC_SysClk_Switch(RCC_SYSCLKSRC_HSI); //切换系统时钟到HSI 8MHz RCC_PLL_Disable(); //关闭PLL FLASH_SetLatency(FLASH_Latency_2); //频率大于24M需要配置FlashWait=2 CW_SYSCTRL->AHBEN_f.FLASH = 0; //关闭FLASH时钟 RCC_HSI_Enable(RCC_HSIOSC_DIV1); RCC_SysClk_Switch(RCC_SYSCLKSRC_HSI); //切换系统时钟到HSI 48MHz break; case 5: CW_LCD->RAM0 = 0x0603050f;//64 RCC_HSI_Enable(RCC_HSIOSC_DIV6); RCC_PLL_Enable(RCC_PLLSOURCE_HSI, 8000000, RCC_PLL_MUL_8); //开启PLL,PLL源为HSI 8MHz FLASH_SetLatency(FLASH_Latency_3); //频率大于48M需要配置FlashWait=3 CW_SYSCTRL->AHBEN_f.FLASH = 0; //关闭FLASH时钟 RCC_SysClk_Switch(RCC_SYSCLKSRC_PLL); //切换系统时钟到PLL break; case 6: CW_LCD->RAM0 = 0; CW_LCD->RAM1 = 0; CW_LCD->RAM8 = 0; CW_LCD->RAM9 = 0; Key1Count = 0; break; } } }

(3)初始化LCD

void LCD_Configuration(void) { LCD_InitTypeDef LCD_InitStruct = {0}; LCD_InitStruct.LCD_Bias = LCD_Bias_1_3; LCD_InitStruct.LCD_ClockSource = LCD_CLOCK_SOURCE_LSI; LCD_InitStruct.LCD_Duty = LCD_Duty_1_4; LCD_InitStruct.LCD_ScanFreq = LCD_SCAN_FREQ_256HZ; LCD_InitStruct.LCD_VoltageSource = LCD_VoltageSource_Internal; __RCC_LCD_CLK_ENABLE(); RCC_LSI_Enable(); //启动LSI为LCD提供时钟 LCD_Init(&LCD_InitStruct); //基本配置 LCD_COMConfig(LCD_COM0 | LCD_COM1 | LCD_COM2 | LCD_COM3, ENABLE); //SEG LCD_SEG0to23Config(LCD_SEG0 | LCD_SEG1 | LCD_SEG2 | LCD_SEG3 | LCD_SEG4 | LCD_SEG5 | LCD_SEG6 | LCD_SEG7, ENABLE); LCD_SEG32to55Config(LCD_SEG32 | LCD_SEG33 | LCD_SEG34 | LCD_SEG35 | LCD_SEG36 | LCD_SEG37 | LCD_SEG38 | LCD_SEG39, ENABLE); LCD_ContrastConfig(LCD_Contrast_Level_2); //显示对比度,仅内部电阻模式时有效 LCD_DriveVoltageConfig(LCD_INRS_LEVEL_0); //功耗最小 CW_LCD->RAM0 = 0x0f0f; LCD_Cmd(ENABLE); }

(4)配置嵌套的矢量中断控制器

void NVIC_Configuration(void) { __disable_irq(); NVIC_SetPriority(GPIOA_IRQn, 0); NVIC_EnableIRQ(GPIOA_IRQn); __enable_irq(); }

(5)主函数

int32_t main(void) { RCC_HSI_Enable(RCC_HSIOSC_DIV6); GPIO_Configuration(); LCD_Configuration(); NVIC_Configuration(); while(1){} }

4.测试结果

电流表串接在单板J23跳线上,单板上电,默认主频为8MHz然后通过KEY1按键,控制主频在4 MHz -12 MHz -24 MHz -48 MHz -64 MHz之间进行切换,记录不同主频下的电流值,如下:

wKgaomSamriASjthAAAQaBEuQ3U580.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6035

    文章

    44554

    浏览量

    634634
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17123

    浏览量

    350982
收藏 人收藏

    评论

    相关推荐

    方案介绍|CW32L010安全低功耗MCU:驱动高速风筒新力量

    芯源半导体CW32L010系列MCU可支持低成本、高性能、低功耗、高度集成的高速风筒方案,以满足市场对高效、安全、智能的高速风筒需求。 本文将介绍武汉芯源半导体CW32L010系列单片机在高速风筒
    发表于 12-10 09:57

    【产品方案】CW32L010低成本工业仪表(方案组成框图、硬件原理图)

    一、引言 先看看L010家族产品功能: TSSOP20的封装可以产品PCB面积极大缩小。 以下几个特性让CW32L010在工业仪表上应用更有优势: 1.集成了主频高达 48MHz 的 ARM
    的头像 发表于 11-28 16:17 402次阅读
    【产品方案】<b class='flag-5'>CW32L</b>010低成本工业仪表(方案组成框图、硬件原理图)

    CW32L010低成本工业仪表介绍

    一 引言 先看看L010家族产品功能: TSSOP20的封装可以产品PCB面积极大缩小。 以下几个特性让CW32L010在工业仪表上应用更有优势: 1.集成了主频高达 48MHz 的 ARM
    的头像 发表于 11-28 10:56 300次阅读
    <b class='flag-5'>CW32L</b>010低成本工业仪表介绍

    基于CW32L010F8P6的电机驱动板简易测试

    基于CW32L010F8P6的一款开源电机驱动板,可驱动无刷电机(无感或有感),直流电机或步进电机。
    的头像 发表于 11-19 09:38 308次阅读
    基于<b class='flag-5'>CW32L</b>010F8P6的电机驱动板简易<b class='flag-5'>测试</b>

    CW32L010 Mini Board 测评】简介、点灯

    CW32L010 Mini Board 测评】简介、点灯 CW32L010 Mini Board 是 武汉芯源半导体 设计的基于 CW32L010 的开发板, 简介 CW32L01
    发表于 11-17 06:39

    CW32L010学习笔记

    记录CW32L010学习过程
    的头像 发表于 11-15 17:40 1532次阅读
    <b class='flag-5'>CW32L</b>010学习笔记

    CW32L010 新品初体验

    ,本次体验的核心板为CW32L010的TSSOP20pin的封装版本,它集成了完整的最小系统,所有输入输出接口(GPIO口)均已引出,便于用户进行各类开发与测试。核心板上不仅设有SWD下载接口,还配备了LED指示灯PB0口,通过Type-CUSB接口即可实现便捷供电,为用
    的头像 发表于 11-14 17:45 328次阅读
    <b class='flag-5'>CW32L</b>010 新品初体验

    CW32L0100核心板的使用体验

    最近我们迎来了CW32L010新品的正式发布,标志着嵌入式技术领域的又一次创新突破。今日,我们有幸进行该新品的首次使用体验,以一块L010核心板为例,体验一下这颗芯片。
    的头像 发表于 10-30 15:29 254次阅读
    <b class='flag-5'>CW32L</b>0100核心板的使用体验

    CW32L010安全低功耗MCU,树立M0+产品行业新标杆!

    2024年9月26日,武汉芯源半导体CW32L010系列产品正式官方发布。这款产品以其卓越的产品性能,迅速在业界引起了广泛关注,并成功树立M0+产品行业的新标杆。CW32L010系列产品
    的头像 发表于 10-09 10:12 508次阅读
    <b class='flag-5'>CW32L</b>010安全低<b class='flag-5'>功耗</b>MCU,树立M0+产品行业新标杆!

    CW32L010安全低功耗MCU,树立M0+产品行业新标杆!

    PWM 定时器。 CW32L010 可以在 -40℃到 85℃的温度范围内工作,供电电压宽达 1.62V ~ 5.5V。支持 Sleep 和 DeepSleep两种低功耗工作模式CW32L010 可以在
    发表于 10-09 10:08

    CW32L083 IAP跳转后中断无响应是怎么回事?

    只说支持向量偏移,没有其它介绍。请问哪位大神做过IAP中断处理的,指点一下,是不是还需要设置哪里。我用仿真器测试,只要是带中断的,跳转后,中断全部无响应。
    发表于 07-26 07:17

    请问STM32L083的唯一ID为什么有重复啊?

    ID的读取代码如下: for(i=0; i<3; i++) {//STM32L083 ID CODE STM32L083_ID[i] = *(uint32_t
    发表于 04-17 06:29

    STM32L072用内部时钟通过锁相环倍频到主频32MHz后,功耗很大怎么解决?

    STM32L072是低功耗MCU, 但是用内部时钟,通过锁相环倍频到主频32MHz后,执行main函数,SystemClock_Config();函数后,单片机有7mA的功耗,为啥这么
    发表于 03-15 06:03

    请问如何优化CW32L083微控制器的功耗

    在进行低功耗设计时,如何优化CW32L083系列微控制器的功耗
    发表于 01-17 07:16

    CW32L083系列微控制器的ADC和DAC模块要如何使用?怎么配置?

    如何配置和使用CW32L083系列微控制器的ADC和DAC模块?
    发表于 01-17 06:08