MBED串行丢弃数据

时间:2016-09-07 22:44:05

标签: mbed

我使用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 个答案:

答案 0 :(得分:1)

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