zjh20070904 发表于 2022-10-22 10:56

极海国产芯|学习调试——AMP32F103ZET6的HSICLK可调整的频率范围实验


1 简介HSICLK是RC振荡器,精度没有晶振高,理想情况下数值是8MHz,在出厂时,会在3.3V、25℃下校准至±1%的精度,即7.92~8.08。
但是随着温度、电压的变化,该精度是会变化的。这个时候,可以通过配置HSITRM进行微调。通过实验,记录了手中的MCU调整的范围。2 实验数据、结论2.1 以下是自己手中的APM32F103ZET6的测试数据及图表
HSITRIM数值HSICLK(MHz)
0x017.507
0x027.552
0x037.598
0x047.622
0x057.668
0x067.716
0x077.74
0x087.788
0x097.812
0x0A7.862
0x0B7.886
0x0C7.936
0x0D7.962
0x0E8.013
0x0F8.064
0x108.13
0x118.13
0x128.196
0x138.196
0x148.264
0x158.264
0x168.333
0x178.333
0x188.403
0x198.474
0x1A8.474
0x1B8.474
0x1C8.547
0x1D8.62
0x1F8.695
HSICLK的数值随着HSITRIM的参数变化如下: 3 实验代码如下:int main(void){   GPIO_Config_T GPIO_ConfigStruct;    RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA);   GPIO_ConfigStruct.pin = GPIO_PIN_8;   GPIO_ConfigStruct.mode = GPIO_MODE_AF_PP;   GPIO_ConfigStruct.speed = GPIO_SPEED_50MHz;   GPIO_Config(GPIOA, &GPIO_ConfigStruct);   RCM_ConfigMCO(RCM_MCOCLK_HSI);      RCM_ConfigHSITrim(0x00);      //示波器读取平均值    //RCM_ConfigHSITrim(0x01);   //RCM_ConfigHSITrim(0x02);    //RCM_ConfigHSITrim(0x03);   //RCM_ConfigHSITrim(0x04);   //RCM_ConfigHSITrim(0x05);   //RCM_ConfigHSITrim(0x06);   //RCM_ConfigHSITrim(0x07);   //RCM_ConfigHSITrim(0x08);   //RCM_ConfigHSITrim(0x09);   //RCM_ConfigHSITrim(0x0A);   //RCM_ConfigHSITrim(0x0B);   //RCM_ConfigHSITrim(0x0C);   //RCM_ConfigHSITrim(0x0D);   //RCM_ConfigHSITrim(0x0E);   //RCM_ConfigHSITrim(0x0F);    while(1)    {    }} 4 其它(1)修改HSITRIM寄存器的数值后,会立刻修改HSICLK的频率,不需要复位MCU(2)复位MCU后,需要重新配置HSITRIM(3)写笔记时才发现未调试HSITRIM配置为0时HSICLK的数值(4)通过配置HSITRIM来调整HSICLK,应该也只是权宜之计,实际应用中,如果环境比较恶劣,比如温度、电压波动很大,并且不同的芯片应该也会存在差异,要想准确的精度,还是得HSECLK。

渔夫的烟斗 发表于 2023-8-15 15:32

这个可以直接从HSE切换到HSI?

两只袜子 发表于 2023-8-18 15:02

“国产芯文撰稿人”也是大神

迪圣-欧丽良 发表于 2023-10-9 10:15

“国产芯文撰稿人”小编厉害   V 15813376719 极海代理
页: [1]
查看完整版本: 极海国产芯|学习调试——AMP32F103ZET6的HSICLK可调整的频率范围实验