首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

SCI接收数据漏码

SCI接收数据漏码

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


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


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


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


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

接收缓冲是否足够大?
试试修改波特率?
你好
icetea
请问SCI怎样接收一串字符呢,我可以接收一个字符,麻烦你指教一下,谢谢了
void rece ()
{
U_char redata;
while(!SCI0SR1_RDRF);
redata=SCI0DRL;
}
设计一个队列缓冲,把接收到的字符放在缓存中,从缓存尾部加入,用户程序从缓存头部取出使用。
串口接收是用中断,如果设置一个缓冲队列,可以保证计算机发来的数据都能被单片机接收到么?不是串口接收到一个字符产生一次中断,下一个字符到来时再次进入中断么?
我也很想学学怎么设置缓冲队列可以把字符都接收到,Seuafu2005能不能给个例子啊
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
设定队列足够大的话就可以保证数据都可以被接收到的。
一般都是用指针指向队列的头部,随着接收到字符,指针依次移动,把数据放进队列中去。
例子程序我要整理一下,打算有空的时候做一个关于SCI串口接收发送的样例程序,放到网上和大家分享。
返回列表