标题: 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 |