修改v3s apb2的时钟源,使串口支持高波特率

在默认情况下,apb2的时钟源为osc24M,串口如果设置为高波特率如420000, 则误差较大。
计算方式:

24M/16(串口一般是16倍采样)/420000 = 3.57
不管是取3 还是取4 ,都有较大误差。

因此可以提高apb2的时钟,将其挂在PLL_PERIPH0下,
具体方式为在设备树中增加:

&ccu {
    assigned-clocks = <&ccu 18>;
    assigned-clock-parents = <&ccu 9>;
    assigned-clock-rates = <60000000>;
};

如果想看为什么是9 和18 ,可以看看驱动代码:drivers/clk/sunxi-ng/ccu-sun8i-v3s.c

另外,在linux中可以直接查看时钟树:(需把debugfs设置成=y)

mount -t debugfs none /sys/kernel/debug
cat sys/kernel/debug/clk/clk_summary

发表评论