智能车制作

标题: 用野火K60库的麻烦看一下串口波特率的问题 [打印本页]

作者: CQQ    时间: 2013-6-5 18:35
标题: 用野火K60库的麻烦看一下串口波特率的问题
我用的是野火K60的底层驱动,
使用的UART2,内核频率125MHZ,总线频率62.5MHZ
只能使用9600的波特率,
波特率一高就乱码,连15200的波特率都不能使用,
我知道是串口时钟频率设置的问题,
不知道如何修改uart_init()函数?

[attach]46578[/attach]

在论坛上看到的是修改这里的总线频率,说是把bus_clk_khz改成90000,但是依然没有效果,
要修改哪里才能使波特率正常?
求大神帮忙解答。

作者: CQQ    时间: 2013-6-5 18:36
sofa
作者: 野火    时间: 2013-6-5 20:19
本帖最后由 野火 于 2013-6-5 20:33 编辑

实测我们的代码可用 UART2 ,内核125M,bus 62.5M 下正常使用,波特率 115200 、19200 、9600 都可正常使用

先重新 rebuild 一下工程试试能不能用更高的波特率,如果不行,

请考虑是否硬件问题,例如 无线模块的波特率本来受限于无线模块,或者 使用质量较差的 USB转串口线等



作者: 野火    时间: 2013-6-5 20:37
修改波特率,直接在 k60_fire.h 文件里修改
  1. /*************************************************************************
  2. *                             野火嵌入式开发工作室
  3. *
  4. *  功能说明:定义 printf函数 的 串口输出端口 和 串口信息
  5. *  备    注:
  6. *************************************************************************/
  7. #define FIRE_PORT           UART2
  8. #define FIRE_BAUD           115200
复制代码

作者: CQQ    时间: 2013-6-5 21:27
野火 发表于 2013-6-5 20:37
修改波特率,直接在 k60_fire.h 文件里修改

火哥,这个地方我改过了,是按照那个教程来设置的。

作者: CQQ    时间: 2013-6-5 21:30
野火 发表于 2013-6-5 20:19
实测我们的代码可用 UART2 ,内核125M,bus 62.5M 下正常使用,波特率 115200 、19200 、9600 都可正常使用 ...

恩,好的,火哥,我检查一下硬件的问题

作者: CQQ    时间: 2013-6-5 22:23
野火 发表于 2013-6-5 20:19
实测我们的代码可用 UART2 ,内核125M,bus 62.5M 下正常使用,波特率 115200 、19200 、9600 都可正常使用 ...

[attach]46593[/attach]
实践证明,
当波特率为9600时, sbr = (u16)(sysclk / (baud << 4));这里为4时正常。
当波特率为19200时,sbr = (u16)(sysclk / (baud << 3));这里为3时正常。
当波特率为38400时,sbr = (u16)(sysclk / (baud << 2));这里为2时正常。
我不知道为什么,这只是我吃饭的时候想到的可能出现问题的地方,
结果一试验,真的解决了这个问题。

作者: 野火    时间: 2013-6-6 08:05
CQQ 发表于 2013-6-5 22:23
实践证明,
当波特率为9600时, sbr = (u16)(sysclk / (baud

baud ,你看看传递进去的值对不对,单步调试进入函数里面,在 watch 看

按理是不需要那样的设置的






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