18426|16

11

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

串口发送数据不正确是怎么回事? [复制链接]

当只发一个数据时,数据是正确的,但是当用查询的方式,连续发送数据的时候,数据就是错误的,而且当判断是否接收到数据结束码时,用查询方式也不能使数据连续发送,屏蔽此条语句后便可连续发送。用串口调试助手接收数据。是先采集数据,然后再发到串口。
我怀疑能不能是结束码这出现了错误,但是我有不知道是怎么回事。
请高手帮忙啊,弄不出来,很着急!!!!
此帖出自单片机论坛

最新回复

对了,调试有问题的时候尽量降低发送速度和波特率,以及线缆的长度  详情 回复 发表于 2011-4-28 16:48
点赞 关注
 

回复
举报

1万

帖子

141

TA的资源

版主

沙发
 
编程有误,要等前一个数据字节发送结束后才能向串口寄存器压入新的数据。
此帖出自单片机论坛
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发 chunyang 的帖子

我主程序里用的是while(1)循环查询,每循环一次就采集一次数据,然后发送一次,发送结束后才能进入下一次循环再采集数据,所以不存在前一个字节未发送完就又压入新的数据,
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

4
 
在采集数据的代码里若有判断是否接收到数据采集完成的结束码        if(((TN_Data_Buff[2])&0x00ff) == 0x000d)     //判断是否读到结束标志
这样采集和接收到的数据都是正确的,但是这个程序不能自动执行,连着仿真器却能正确执行并在串口调试助手上看到数据,但是当我把这条语句屏蔽掉,它就能自动执行,并且能连续采集发送数据,但数据是错的。
此帖出自单片机论坛
 
 
 

回复

1万

帖子

141

TA的资源

版主

5
 
用仿真器正常而你的系统不正常要考虑二者的差别,这里主要是波特率问题,仿真器的主频和你的系统未必相同,要根据你的系统时钟来设置波特率发生器的参数。
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 chunyang 的帖子

我不太明白,能详细的给我说一下我应该怎么修改吗
此帖出自单片机论坛
 
 
 

回复

1万

帖子

141

TA的资源

版主

7
 
去看你所用MCU的器件手册,上面有波特率配置算法,我不知道你用的是什么,自然也无法说明,不同MCU配置波特率的方法可不同,你去看手册就该知道了。
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 7楼 chunyang 的帖子

我用的是凌阳的61板,
*P_UART_BaudScalarHigh = C_UARTBaudRate_9600_H;                // 波特率设为9600
*P_UART_BaudScalarLow = C_UARTBaudRate_9600_L;
波特率设置能有什么错误啊?我的串口调试助手设置的波特率也是9600.
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 7楼 chunyang 的帖子

是把波特率设置成一致的就可以了吗?
此帖出自单片机论坛
 
 
 

回复

1万

帖子

141

TA的资源

版主

10
 
波特率设置参数跟主频是相关的,通常设置方法不应该是8楼那样,具体去看芯片手册。
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

11
 

回复 10楼 chunyang 的帖子

如果不是波特率设置错误,还能有其他可能造成这种状况的原因吗?
此帖出自单片机论坛
 
 
 

回复

159

帖子

0

TA的资源

一粒金砂(高级)

12
 
你看看晶振的设置是不是正确的
此帖出自单片机论坛
 
个人签名*我的EMAIL:     sunke9@qq.com  
*我的博客http://blog.ednchina.com/sunke9/
*我网店:https://sunke9.taobao.com/
承接:电子、自动控制产品设计开发;单片机、ARM编程。
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

13
 

回复 12楼 SUNKE9 的帖子

晶振是默认的,为24.576MHz。
此帖出自单片机论坛
 
 
 

回复

1万

帖子

141

TA的资源

版主

14
 
不是设置错误就是编程错误,不会有其它,但用仿真机时没问题,则可判定是设置错误。
此帖出自单片机论坛
 
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

15
 
查看下单片机UART的数据手册,看看是怎么一个缓冲,是不是你CPU连续发送过快,导致你的UART无法正常响应,建议这个地方用中断的方式处理,确保每一帧收发完毕
此帖出自单片机论坛
 
 
 

回复

5015

帖子

13

TA的资源

裸片初长成(初级)

16
 
对了,调试有问题的时候尽量降低发送速度和波特率,以及线缆的长度
此帖出自单片机论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

17
 

还请各位大侠帮忙啊!没解决.....

我将代码进行了修改。

代码直接从头执行到尾,由串口调试助手观察采集的数据是错误的,无论是连接仿真器执行还是自主运行都是错误的。

但是,利用仿真器分段执行,过程中进入数据采集的函数,但并不继续在其内部执行,立即跳回主程序,即进入后马上跳出,这样得到的数据就是正确的,不知为什么???

我屏蔽了一些代码,现在的代码功能主要就是采集数据,然后再传送至串口,而且是每采完一次,传送一次,利用while(1)循环查询的方式执行每次采集和传送。

到底是为什么呢???

此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表