5349|11

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

串口不能正确回显 [复制链接]

我修改了一个移植到S3C2410目标板的bootloader。烧写到Flash,复位后,在初始化设置的波特率下,终端无回显,在其它波特率下有。请问高手这是什么原因,该如何解决?

最新回复

其他波特率行是什么意思?是指比他高或低的都行?  详情 回复 发表于 2010-3-19 11:12
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在初始化设置的波特率下,终端无回显,在其它波特率下有。

这说明你bootloader设置的波特率 可能有问题,不是PC对应的那些可配置的波特率。
也可能PC没有配置好,从而导致两端的波特率不一样。

楼主如果有条件,用示波器测试下就知道啦
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
首先感谢你的答复!
不是学硬件的。不知道用示波器怎么测试?
改写的bootloader使用的波特率为115200,终端也设置为这个数。在bootloader stage1没用到串口,只是对IO口进行了初始化设置,对串口的初始化在stage2中进行,代码如下:
static int s3c2410_serial_init(serial_baud_t baud)
{
        u32 divisor;
//UBRDIVn = (int)(PCLK / (bps x 16) ) –1
//or
//UBRDIVn = (int)(UCLK / (bps x 16) ) –1
//usually,PCLK=FCLK/4=MCLK(202.8MHz)/4,UCLK为USB所用频率
        /* get correct divisor */
        switch(baud) {
        case baud_1200:
                divisor = 2639;
                break;

        case baud_9600:
                divisor = 329;
                break;

        case baud_19200:
                divisor = 164;
                break;

        case baud_38400:
                divisor = 81;
                break;

        case baud_57600:
                divisor = 54;
                break;

        case baud_115200:
                divisor = 26;
                break;

        default:
                return -ERANGE;
        }

        s3c2410_serial_flush_output();
        rUFCON0 = 0x0;        //FIFO Control Register,disable FIFO
        rULCON0 = 0x03;        //data bits number,设置数据位8,无奇偶校验位,1位停止位
        rUCON0 = 0x05;        //Transmit/Receive mode:Interrupt,polling or DMA.Here,Interrupt or polling.Pulse Interrupt.Select PCLK  as the UART baud rate.
        rUBRDIV0 = divisor;//设置波特率

        rUFCON1 = 0x0;
        rULCON1 = 0x03;
        rUCON1 = 0x05;
        rUBRDIV1 = divisor;

        for(divisor=0; divisor<100; divisor++);
        return 0;
}
这里:baud_57600、baud_115200为枚举类型中的元素。
不知道这样做有什么问题,请高手们指点!
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

4
 
用串口反复发0x55(01010101), 在TXD端可看到方波, 通过示波器读出周期(倒数为频率), 加上起停位, 可算出波特率. 用示波器(探头X10), 可测量晶振的频率(用好的频率计测最好), MCU晶振的频率不准会导致波特率的误差大.
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

5
 
多谢指导!!
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

6
 
严重支持    moqingxinai2008
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
用这个工具调试,拦截一下数据看看到底是什么问题。

下载地址:
http://download.cnet.com/ComTrace/3000-2218_4-75156892.html?tag=mncol

感觉好别忘了给个review(评论),谢谢!
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
估计是PC端的串口配置有点问题。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
那就是波特率不匹配啦
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

10
 
学习了
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

11
 
学习了
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

12
 
其他波特率行是什么意思?是指比他高或低的都行?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表