我正在處理 CH579 的 EVT\EXAM\UART1 示例。
當我將比特率設置為 115200、234000、460800、921600、1000000、1024000 kbps 時,一切正常,消息以此速率發送。
但是當我將比特率設置為 1500000、1600000 kbps 時,我無法從 UART 讀取消息
除了比特率之外,我還應該在示例中更改什麼,以便我可以讓 UART 以 1600000 kbps 的速度工作
我正在處理 CH579 的 EVT\EXAM\UART1 示例。
當我將比特率設置為 115200、234000、460800、921600、1000000、1024000 kbps 時,一切正常,消息以此速率發送。
但是當我將比特率設置為 1500000、1600000 kbps 時,我無法從 UART 讀取消息
除了比特率之外,我還應該在示例中更改什麼,以便我可以讓 UART 以 1600000 kbps 的速度工作
波特率是由主频分频得来的,分频基本上没有1.5~1.6MHz的范围啊。
看了一下手册,40MHz主频时最高波特率是5M,一次分频就是2.5M,二次分频就是1.25M,与你需要的1.5~1.6M相差24%。对于串口通讯波特率误差超过5%都不能用了跟别提现在都24%了。所以你这不能通讯是很正常的。
PS:
仔细看了一下波特率计算,好像这个型号的有些特殊技能。
波特率公式 = Fsys * 2 / R8_UARTx_DIV / 16 / R16_UARTx_DL。
官方这个公式没错的话,如果主频是40MHz的话,把DIV设为1、DL设为3,感觉就是1.666Mbps了?
40000000*2/1/16/3≈1'666'667 bps。
Zaxife,感謝您的詳細回答。
演示板有一個 32 MHz 晶振。 根據CH579 datasheet中的公式,我需要指定R16_UARTx_DL=5, R8_UARTx_DIV=0,5
32000000*2/0.5/16/5=1600000bps
但它不起作用,我錯過了一些東西。 也許 R8_UARTx_DIV 只能是一個整數,而使用整數是不可能設置所需的比特率的。
我很新,對不起我的中文(我正在通過谷歌翻譯寫作)