AT32F403A,主频调到168M,串口无法工作
直接用的STM32F103的程序,去调了主频,并把APB2做了2分频,APB1做了4分频。debug仿真看到各总线主频正确。晶振用的12M,
当12倍频到144M,USART2还是正常的,
当13倍频到156M,USART2开始有一些异常。
当14倍频到168M,USART2彻底失灵。
之前不调APB2 APB1的分频,也是这个情况。
144M下,I2C写入eeprom异常。 主频降回72M。一切指标都正常。
看来可能是STM32F103的库,不支持它超频。 我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用eeprom了,太慢了 是不是flash的延迟周期不对? 是不是串口分频系数是16位的,结果分频系数计算超过了16位没有处理? ibmx311 发表于 2023-8-16 07:42
我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用ee ...
(引用自4楼)
我确实忘记改systick了。 yuyu87 发表于 2023-8-16 08:44
是不是串口分频系数是16位的,结果分频系数计算超过了16位没有处理?
(引用自6楼)
USART2 串口里面只针对APB1的时钟进行处理。
APB1时钟,我都降到48M了。
而且最先APB1时钟跑的144M,它也能工作,说明没溢出。 ibmx311 发表于 2023-8-16 07:42
我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用ee ...
(引用自4楼)
I2C写EEPROM , 改了systick后,正常了。
写个eeprom为什么还要用systick?写完之后polling不就得了?还省时间,并且能保证不同写速度的eeprom的兼容性 用原厂的库函数没有这些问题,就是你程序改动的地方就比较多 我用的晶振是12M,然后到168M是14倍频。
偶然发现,串口波特率原本应该是460800,然后我写成了500k后,居然能被正确识别。然后我就怀疑是不是时钟并没有到168M
用示波器测量PWM,168M应该是21kHz,实际测量数值是18.8kHz,算出来实际运行的主频是151M左右。 看上去像是被锁在了 12.5倍频,12*12.5=150MHz 感觉可能是13倍频之后的设置是无效的。
下单买了16M晶振,到时候换上去做11倍频到176M看看能不能工作。
ibmx311 发表于 2023-8-16 07:42
我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用ee ...
(引用自4楼)
你也是用的12M晶振吗?
是不是下一个倍频就不工作了?
sy8501 发表于 2023-8-17 01:58
你也是用的12M晶振吗?
是不是下一个倍频就不工作了?
(引用自15楼)
我用的是外部振好的16兆 ibmx311 发表于 2023-8-17 02:36
我用的是外部振好的16兆
(引用自16楼)
后天16M晶振到了,我试试给它11倍频,看看能不能正常工作,还会不会锁死在150M
记得不能只改倍频,高了还要加延时。雅特力有个自己的时钟配置工具,生成代码可以对比下。 /**
* @briefsystem clock config program
* @note the system clock is configured as follow:
* - system clock = hick / 12 * pll_mult
* - system clock source = pll (hick)
* - sclk = 240000000
* - ahbdiv = 1
* - ahbclk = 240000000
* - apb1div = 2
* - apb1clk = 120000000
* - apb2div = 2
* - apb2clk = 120000000
* - pll_mult = 60
* - pll_range = GT72MHZ (greater than 72 mhz)
* @paramnone
* @retval none
我用片内时钟弄到240M,485也正常工作啊 ysu_er 发表于 2023-8-17 21:34
/**
* @briefsystem clock config program
* @note the system clock is configured as follow:
(引用自19楼)
AT自己的库是可以的。
F103库,锁死12.5倍频了。
16M晶振已上,没卵用,依旧锁死在150MHz 上不去。 又试了一下,24M 2分频后 再倍频,没用。
还是150MHz上不去了 sy8501 发表于 2023-8-17 23:55
AT自己的库是可以的。
F103库,锁死12.5倍频了。
(引用自20楼)
AT 自己的 你在144上干活不行吗,我一直都在144上干活,啥都没有动用103的库 其实单片机的速度除非决定性的提高,差一点没多少意义。我做一个电压表,总想提高积分系统的时钟,103做计数器只能几百k,如果六位半就算是1兆,刷新一次1000000的读数也要1秒,后来折腾编译极慢的h7,也没好到哪里去。最后在前端插入硬件计数器,现在103也能干了 ibmx311 发表于 2023-8-19 09:37
你在144上干活不行吗,我一直都在144上干活,啥都没有动用103的库
(引用自24楼)
为了兼容STM32F405做的另一个板的PWM分辨率和频率。
所以需要把主频拉到跟F405一致。
现在已经放弃了。STM32F405那边PWM频率21k,分辨率4000,这边用144M后,PWM频率将为18k,分辨率也4000,凑合兼容了。
主要前几天我能听到18k的噪声,想提高一下。这两天可能熬夜多了,又听不到了。
页:
[1]