Board logo

标题: SCI接收数据漏码 [打印本页]

作者: icetea    时间: 2006-3-24 16:38     标题: SCI接收数据漏码

 我从上位机向单片机发送一串字节时,有时单片机会丢掉一两个字节,绝大多数被丢的字节都处于字符串的末尾两个以内。


是用D64的片子,现在我在程序里加入较验,所以能够发现漏码的现象,但是很想知道如何避免。


我曾经以为是SCI接收中断处理函数过长,但是缩短后也不见好转。


我用串口调试助手收发串口数据。


请问有什么好的解决办法吗?


作者: seuafu2005    时间: 2006-3-24 17:43

接收缓冲是否足够大?
试试修改波特率?
作者: zhudongpo    时间: 2006-3-30 17:16

你好
icetea
请问SCI怎样接收一串字符呢,我可以接收一个字符,麻烦你指教一下,谢谢了
void rece ()
{
U_char redata;
while(!SCI0SR1_RDRF);
redata=SCI0DRL;
}
作者: seuafu2005    时间: 2006-3-31 18:36

设计一个队列缓冲,把接收到的字符放在缓存中,从缓存尾部加入,用户程序从缓存头部取出使用。
作者: nishui_2000    时间: 2006-4-2 22:29

串口接收是用中断,如果设置一个缓冲队列,可以保证计算机发来的数据都能被单片机接收到么?不是串口接收到一个字符产生一次中断,下一个字符到来时再次进入中断么?
我也很想学学怎么设置缓冲队列可以把字符都接收到,Seuafu2005能不能给个例子啊
作者: seuafu2005    时间: 2006-4-3 10:53

设定队列足够大的话就可以保证数据都可以被接收到的。
一般都是用指针指向队列的头部,随着接收到字符,指针依次移动,把数据放进队列中去。
例子程序我要整理一下,打算有空的时候做一个关于SCI串口接收发送的样例程序,放到网上和大家分享。
作者: choujay    时间: 2007-6-2 20:31

seuafu2005 能不能把样例程序贴出来学习以下阿?

作者: saserking    时间: 2007-6-2 22:27

可以用pe生成发送和接收的代码,很好用
作者: fyhl_moto    时间: 2007-6-3 19:42

楼主最好能把你的程序贴出来看看
仅做简单的说明解决不了实际的问题

其实串口使用查询方式就可以了
我们无非是要知道某些参数的值
等主程序运行完了再输出也是可以的

中断方式的程序也很好写的,我用的MC9S12DG128B单片机
中断、查询方式的程序都能做出来,但在实际的应用中还是用的查询的时候比较多
作者: choujay    时间: 2007-6-4 10:50

能不能把中断处理得到多个字节的 实例贴出来 学习学习?




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0