文档上写串口1 UART1 具有独立的波特率发生器 我想这独立的发生器,起码速率会更高更精确,结果超过115200就乱码,低速4800以下更是不行。这个独立波特率发生器是不是有什么使用秘诀,能够传授一下吗
我也不需要多快的速度来代替340,有个接近1M速度就可以了,结果才115200。。。。 有点大跌眼睛啊。
> 提供2个全双工异步串口,都支持高波特率通讯,UART0为标准MCS51串口;
高波特率最高有多高,技术人员应该知道吧,透露点。
芯片是有USB功能的,为了满足USB的功能,主频只有限定几个可选
使用USB可选主频如下:
/*
Fxt = 24MHz(8MHz~25MHz for non-USB application), from external oscillator @XI&XO
Fosc = bOSC_EN_INT ? 24MHz : Fxt
Fpll = Fosc * 4 => 96MHz (32MHz~100MHz for non-USB application)
Fusb4x = Fpll / 2 => 48MHz (Fixed)
MASK_SYS_CK_SEL[2] [1] [0]
Fsys = Fpll/3 = 32MHz: 1 1 1
Fsys = Fpll/4 = 24MHz: 1 1 0
Fsys = Fpll/6 = 16MHz: 1 0 1
Fsys = Fpll/8 = 12MHz: 1 0 0
Fsys = Fpll/16 = 6MHz: 0 1 1
Fsys = Fpll/32 = 3MHz: 0 1 0
Fsys = Fpll/128 = 750KHz: 0 0 1
Fsys = Fpll/512 =187.5KHz: 0 0 0
*/
波特率和普通51一样,使用定时器作为波特率发送,其中一种算法如下:
x = FREQ_SYS / UART0_BUAD / 16; //如果更改主频,注意x的值不要溢出
串口协议规定波特率误差不能大于2%,这个常识应该都知道,这个也能解释为什么有些波特率不能正常用。
了解了,51就是不行。ch340/341是RSIC吧。类似ch536这种。
你可以看看558、559,串口1,波特率产生不使用定时器产生,由内部主频产生独立的分频时钟,支持波特率比较好。
请问你有什么应用需求?或者产品侧重哪一块,可以探讨下,按照签名的联系方式联系我就可以。
也许我们可以给你推荐,省了你一个个翻芯片了。
ch554/552 计时器是1T还是12T的?
bTMR_CLK
timer0 internal clock frequency selection: 0=standard clock, Fsys/12, 1=faster clock, Fsys/4 if bTMR_CLK=0 or Fsys if bTMR_CLK=1