测试NUC980 UART波特率设置到2400时,会没有波形,2400的话有办法设置吗,目前测试好像最低只能到4800
2023/12/26 08:11
驱动中固定uart1~9波特率是由upll 150MHZ分频得到,太低的波特率,无法按150MHZ计算得到。所以将UART时钟源设置为外部晶振12MHZ,例如是UART1,按以下方法修改驱动:
nuc980_serial.c:
clk = clk_get(NULL, "uart1");
clk_prepare(clk);
clk_enable(clk);
clk = clk_get(NULL, "uart1_eclk");
clk_prepare(clk);
clk_enable(clk);
clkmux = clk_get(NULL, "uart1_eclk_mux");
upll_clk = clk_get(NULL, "upll"); 改为upll_clk = clk_get(NULL, "xin");
clk_set_parent(clkmux, upll_clk);
clk = clk_get(NULL, "uart1_eclk_div");
//clk_set_rate(clk, 100000000);
clk_set_rate(clk, 150000000); 改为 clk_set_rate(clk, 12000000);
up->port.uartclk = clk_get_rate(clk);