大家好、希望大家好、
我正在尝试在 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 线有某种关系。
如何解决此问题?