1 简介HSICLK是RC振荡器,精度没有晶振高,理想情况下数值是8MHz,在出厂时,会在3.3V、25℃下校准至±1%的精度,即7.92~8.08。
但是随着温度、电压的变化,该精度是会变化的。这个时候,可以通过配置HSITRM进行微调。通过实验,记录了手中的MCU调整的范围。 2 实验数据、结论2.1 以下是自己手中的APM32F103ZET6的测试数据及图表 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。
|
赞,来学习一下!