智能车制作

标题: K60超频200M时,使用UART发送数据的波特率最高为多少 [打印本页]

作者: 斯馨妍子    时间: 2013-3-29 09:24
标题: K60超频200M时,使用UART发送数据的波特率最高为多少
我用K60 内核时钟100M时,uart3波特率为9600,200M时,用9600就会乱,我多次试验后,觉得波特率又问题,试了其他的更快或更慢的都不行,已知波特率与外设时钟有关,而外设时钟由void sysinit (void)中的         periph_clk_khz = core_clk_khz / (((SIM_CLKDIV1 & SIM_CLKDIV1_OUTDIV2_MASK) >> 24)+ 1);决定,外设时钟不等于总线时钟,总线时钟为内核时钟的2分频,

请问大家的主频设为多少,在200M的情况下,波特率设为多少为宜(就是能稳定发送数据),UART0与UART3的极限波特率有不同吗


作者: jack_channel    时间: 2013-3-29 10:59
你的200MHZ能稳定运行还是个问题?
作者: 洋葱圈    时间: 2013-3-29 11:18
刚回复那个帖子了,没看到这个。
串口3用的是总线时钟。
所以波特率应该这样计算

//计算波特率
sbr = (uint16)((总线时钟*1000)/(波特率* 16));

//保存UARTx_BDH寄存器中除了SBR的值
temp = UART_BDH_REG(uartptr) & ~(UART_BDH_SBR(0x1F));
UART_BDH_REG(uartptr) = temp |  UART_BDH_SBR(((sbr & 0x1F00) >> 8));
UART_BDL_REG(uartptr) = (uint8)(sbr & UART_BDL_SBR_MASK);


作者: 斯馨妍子    时间: 2013-3-29 16:01
jack_channel 发表于 2013-3-29 10:59
你的200MHZ能稳定运行还是个问题?

能运行稳定,但是 set_sys_dividers(0,1,1,3);得该,因为我试过FLEX时钟不能太高,官方要求不能超过25M,我试过30几兆还是可以的,总线时钟,flash时钟也可以用的高一点,我试过100M

作者: 斯馨妍子    时间: 2013-3-29 16:08
jack_channel 发表于 2013-3-29 10:59
你的200MHZ能稳定运行还是个问题?

它的稳定性怎么测试呢,我看不到也摸不到,你能教我简单的例子吗,我用流水灯,LPTMR,PIT试过都可以正常工作,您可以教我一个比较好的方法吗,我是新手,没什么经验

作者: melon_1    时间: 2013-4-24 20:11
斯馨妍子 发表于 2013-3-29 16:01
能运行稳定,但是 set_sys_dividers(0,1,1,3);得该,因为我试过FLEX时钟不能太高,官方要求不能超过25M, ...

应该是flash的时钟<=25mhz吧???????还是我弄错了???????
f





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2