sy8501 发表于 2023-8-16 03:24:46

AT32F403A,主频调到168M,串口无法工作

直接用的STM32F103的程序,去调了主频,并把APB2做了2分频,APB1做了4分频。debug仿真看到各总线主频正确。

晶振用的12M,

当12倍频到144M,USART2还是正常的,

当13倍频到156M,USART2开始有一些异常。

当14倍频到168M,USART2彻底失灵。

之前不调APB2 APB1的分频,也是这个情况。

sy8501 发表于 2023-8-16 03:49:38

144M下,I2C写入eeprom异常。

sy8501 发表于 2023-8-16 03:53:03

主频降回72M。一切指标都正常。

看来可能是STM32F103的库,不支持它超频。

ibmx311 发表于 2023-8-16 07:42:04

我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用eeprom了,太慢了

jingwaner 发表于 2023-8-16 08:20:31

是不是flash的延迟周期不对?

yuyu87 发表于 2023-8-16 08:44:00

是不是串口分频系数是16位的,结果分频系数计算超过了16位没有处理?

sy8501 发表于 2023-8-16 11:35:35

ibmx311 发表于 2023-8-16 07:42
我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用ee ...
(引用自4楼)

我确实忘记改systick了。

sy8501 发表于 2023-8-16 11:41:38

yuyu87 发表于 2023-8-16 08:44
是不是串口分频系数是16位的,结果分频系数计算超过了16位没有处理?
(引用自6楼)

USART2 串口里面只针对APB1的时钟进行处理。
APB1时钟,我都降到48M了。

而且最先APB1时钟跑的144M,它也能工作,说明没溢出。

sy8501 发表于 2023-8-16 13:50:45

ibmx311 发表于 2023-8-16 07:42
我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用ee ...
(引用自4楼)

I2C写EEPROM , 改了systick后,正常了。

Nuker 发表于 2023-8-16 14:03:33

写个eeprom为什么还要用systick?写完之后polling不就得了?还省时间,并且能保证不同写速度的eeprom的兼容性

tclg 发表于 2023-8-16 14:32:24

用原厂的库函数没有这些问题,就是你程序改动的地方就比较多

sy8501 发表于 2023-8-16 16:05:37

我用的晶振是12M,然后到168M是14倍频。

偶然发现,串口波特率原本应该是460800,然后我写成了500k后,居然能被正确识别。然后我就怀疑是不是时钟并没有到168M

用示波器测量PWM,168M应该是21kHz,实际测量数值是18.8kHz,算出来实际运行的主频是151M左右。

sy8501 发表于 2023-8-17 00:02:03

看上去像是被锁在了 12.5倍频,12*12.5=150MHz

sy8501 发表于 2023-8-17 01:52:17

感觉可能是13倍频之后的设置是无效的。

下单买了16M晶振,到时候换上去做11倍频到176M看看能不能工作。

sy8501 发表于 2023-8-17 01:58:01

ibmx311 发表于 2023-8-16 07:42
我在144M下,24C02,24C256能读写正常,要注意eeprom有个5ms的时间。由于我现在加上了备份电池,决定不用ee ...
(引用自4楼)

你也是用的12M晶振吗?

是不是下一个倍频就不工作了?

ibmx311 发表于 2023-8-17 02:36:32

sy8501 发表于 2023-8-17 01:58
你也是用的12M晶振吗?

是不是下一个倍频就不工作了?
(引用自15楼)

我用的是外部振好的16兆

sy8501 发表于 2023-8-17 05:19:29

ibmx311 发表于 2023-8-17 02:36
我用的是外部振好的16兆
(引用自16楼)

后天16M晶振到了,我试试给它11倍频,看看能不能正常工作,还会不会锁死在150M

mainbp 发表于 2023-8-17 07:40:13

记得不能只改倍频,高了还要加延时。雅特力有个自己的时钟配置工具,生成代码可以对比下。

ysu_er 发表于 2023-8-17 21:34:50

/**
* @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也正常工作啊

sy8501 发表于 2023-8-17 23:55:45

ysu_er 发表于 2023-8-17 21:34
/**
* @briefsystem clock config program
* @note   the system clock is configured as follow:
(引用自19楼)

AT自己的库是可以的。

F103库,锁死12.5倍频了。

sy8501 发表于 2023-8-18 13:24:01

16M晶振已上,没卵用,依旧锁死在150MHz 上不去。

sy8501 发表于 2023-8-18 13:46:30

又试了一下,24M 2分频后 再倍频,没用。
还是150MHz上不去了

ysu_er 发表于 2023-8-18 16:46:01

sy8501 发表于 2023-8-17 23:55
AT自己的库是可以的。

F103库,锁死12.5倍频了。
(引用自20楼)

AT 自己的

ibmx311 发表于 2023-8-19 09:37:54

你在144上干活不行吗,我一直都在144上干活,啥都没有动用103的库

ibmx311 发表于 2023-8-19 09:45:17

其实单片机的速度除非决定性的提高,差一点没多少意义。我做一个电压表,总想提高积分系统的时钟,103做计数器只能几百k,如果六位半就算是1兆,刷新一次1000000的读数也要1秒,后来折腾编译极慢的h7,也没好到哪里去。最后在前端插入硬件计数器,现在103也能干了

sy8501 发表于 2023-8-19 11:12:41

ibmx311 发表于 2023-8-19 09:37
你在144上干活不行吗,我一直都在144上干活,啥都没有动用103的库
(引用自24楼)

为了兼容STM32F405做的另一个板的PWM分辨率和频率。

所以需要把主频拉到跟F405一致。

现在已经放弃了。STM32F405那边PWM频率21k,分辨率4000,这边用144M后,PWM频率将为18k,分辨率也4000,凑合兼容了。

主要前几天我能听到18k的噪声,想提高一下。这两天可能熬夜多了,又听不到了。

页: [1]
查看完整版本: AT32F403A,主频调到168M,串口无法工作