首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MBED串行丢弃数据

MBED串行丢弃数据
EN

Stack Overflow用户
提问于 2016-09-08 06:44:05
回答 1查看 521关注 0票数 1

我的应用程序使用MBED (在线IDE和库),主板NUCLEO-411RE和4D系统触摸屏通过全双工串行通信连接。我能够成功地将数据从主机发送到显示器,而不会出现错误。但是,在将数据从display发回主机时,我丢失了数据。将波特率降低到9600不能解决问题。

主机处理器保持在超级循环中,第一个动作是检查LCD是否发送串行数据( lcd4d.readable() )。然后,主机一次接收一个字符( lcd4D.getc() ),通过usb ( pc.printf(&recChar) )将其回送到PC,并进行一些进一步的处理。

我还在一个单独的终端会话上监控物理主机接收引脚。使用此功能,我可以确定LCD正确发送数据,但是主机处理器不能正确接收和回显该数据(回显到PC仅用于调试目的)。

参考超级循环代码片段:

代码语言:javascript
复制
do {
    if ( lcd4D.readable() ) {
        recChar = lcd4D.getc();
        pc.printf(&recChar);
        lcd4D_intr_Rx();
    }

另请参阅所附屏幕打印,显示终端左侧PC回应(数据丢失)和终端右侧硬件引脚监视器(确认数据正确发送)。

在仍然发生数据丢失的情况下,实现SerialRX中断也没有帮助。

谢谢你的建议,我没有主意了。

EN

回答 1

Stack Overflow用户

发布于 2016-09-13 16:22:48

我已经解决了这个问题。问题是主机处理器需要对接收到的串行数据做出足够快的响应。我基本上实现了一个快速的串行接收缓冲区,并确保在中断时立即缓冲接收到的字符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39380082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档