关于串口波特率问题的话题,我搜索了站内几个曾经讨论过的、比较有用的话题:
WhyCan Forum(V3s主线版uart波特率能超过115200吗?)
WhyCan Forum(全志A33 UART baudrate 921600 問題!!)
在上述帖子中均提及,需要修改uboot内部的时钟初始化部分的代码,哈哈哈哈哈(我用的awboot)
为什么要修改时钟,我想,下面这个里面的内容说的非常好了
WhyCan Forum(D1 Linux UART)
目前我想实现的部分比较简单,就是修改APB1的时钟源,从24M切换到11: PLL_PERI(1X) 600M,再分频下来。
本来我都想发社区里面问一下的,结果我在修改awboot后就成功了,我人都傻了。
把我修改的代码贴出来
修改awboot->sunxi_clock.c
static void set_apb(void)
{
write32(T113_CCU_BASE + CCU_APB0_CLK_REG, (2 << 0) | (1 << 8) | (0x03 << 24));
sdelay(1);
write32(T113_CCU_BASE + CCU_APB1_CLK_REG, (2 << 0) | (1 << 8) | (0x03 << 24));
sdelay(1);
}
之后还需要修改一下awboot中的串口寄存器,因为修改了时钟,已经不是原来的24M输入了
求助帖变成了经验帖,我自己是没想到的
离线