This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28379D:将 SCI 数据发送到 MATLAB、CAN#39;t 连续发送2个以上的数字(尝试向 MATLAB 发送一系列 INT

Guru**** 2595805 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1193120/tms320f28379d-sending-sci-data-to-matlab-can-t-send-more-than-2-numbers-in-a-row-trying-to-send-array-of-ints-to-matlab

器件型号:TMS320F28379D

大家好、希望大家好、

我正在尝试在 TMS320 F28379D 和 MATLAB 之间建立通信链路、我已经设置了一个 SCI 中断、每当微控制器从链接到 MATLAB 的串行端口接收任何内容时都会触发该中断。 我正在尝试将数据从以下数组发送到 MATLAB。

Uint16  array_c[4]  = {10, 11, 12, 13};

以下是我用于中断的代码:

interrupt void sci_test_isr(void)
{
    GpioDataRegs.GPATOGGLE.bit.GPIO31 = 1;
    flag_clearer = SciaRegs.SCIRXBUF.all;
    interrupt_counter++;

    if(flag_clearer == 0x61);
    {
        i = 0;
        for(i = 0; i < tx_message_length; i++)
        {
            tx_msg_buffer[i] = array_b[i];
            scia_xmit(tx_msg_buffer[i]);
        }

    }

    PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;

}

我在 MATLAB 中设置了一个读取串行线的串行对象。 如果我的 TX_MESSAGE 长度为2、我会得到在 MATLAB 中读取的前两个数字[10、11]-这是长度为2的正确消息。

但是、一旦我的消息长度超过2、我就会开始出错。 例如、当我的消息长度为4时、我得到[10、13]、而它应该是[10、11、12、13]。  我也尝试发送[1、2、3、4、5、6、7、8]、在 MATLAB 侧获取[1、8]。 发生这种情况时、我在 MATLAB 中得到以下错误:

"警告:在"读取"的超时期间内未返回指定数量的数据。  'serialport'无法读取所有请求的数据。 有关可能原因的更多信息、 请参阅串行端口读取警告。 '

在我的传输线上 、似乎所有的消息值都被加载到传输缓冲区中。 但是、我在 MATLAB 上读取的数据不正确。

一些额外的细节:我不使用 FIFO 增强功能、而是使用 TMS320 Launchpad、其中 SCI A 线与用于对控制器进行编程的 USB 线有某种关系。  

如何解决此问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Eric:

    [引用 userid="517064" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1193120/tms320f28379d-sending-sci-data-to-matlab-can-t-send-more-than-2-numbers-in-a-row-trying-to-send-array-of-ints-to-matlab。]我也尝试发送[1、2、3、4、5、6、7、8]、在 MATLAB 侧获取[1、8]。 发生这种情况时、我在 MATLAB 中得到以下错误:

    "警告:在"读取"的超时期间内未返回指定数量的数据。  'serialport'无法读取所有请求的数据。 有关可能原因的更多信息、 请参阅串行端口读取警告。 '[/报价]

    您能否通过 Mathworks 论坛联系 Mathworks 团队? 我们在论坛上不支持他们的工具、但他们应该能够为您提供帮助。

    此致、

    Marlyn