首页 文章

MBED串行丢弃数据

提问于
浏览
1

我使用MBED(在线IDE和库)作为我的应用程序,主机板NUCLEO-411RE和4D Systems触摸显示器通过全双工串行通信连接 . 我能够成功地从主机发送数据到显示没有错误 . 但是,当将数据从显示器发送回主机时,我正在丢失数据 . 将波特率降低到9600并不能解决问题 .

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

我还在一个单独的终端会话上监视物理主机接收引脚 . 使用这个我肯定LCD正确地发送数据,但主机处理器没有接收和正确回显这些数据(回显到PC仅用于调试目的) .

请参阅超级循环代码段:

do {
    if ( lcd4D.readable() ) {
        recChar = lcd4D.getc();
        pc.printf(&recChar);
        lcd4D_intr_Rx();
    }

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

实现SerialRX中断也无助于数据丢失的情况 .

谢谢你的任何建议;我没有想法 .
enter image description here

1 回答

  • 1

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

相关问题