主题中讨论的其他器件:C2000WARE
工具/软件:Code Composer Studio
您好!
我正在通过 SCIB 接收 GPS 数据、我想通过 SCIA 发送该数据。 我已经基于示例项目"Example_2806xSci_Echoback.c"。
当我仅使用 SCIB (我使用引脚77 scibtx 和75 scibrx)接收 GPS 数据时、代码工作正常、它读取数据、然后对其进行处理以提取我感兴趣的信息(纬度、经度、速度和另一个参数)。 然后、我将 SCIA (引脚3 sciarx 和4 sciatx)连接到外部显示屏、这看起来也很正常、我已经测试了这种连接、对代码的 SCIB 部分进行了注释、屏幕从 SCIA 接收到了正确的数据。
但是、当我尝试在同一代码中同时使用 scia 和 scib 时、scib 似乎无法正确接收 GPS 数据。 我认为我可能会遇到时序问题、因为我创建了其他可能需要很长时间才能完成的函数、因此 scib 没有足够的时间来接收所有数据、但我对此非常不熟悉、因此我可能错过了重要的部分。
此外、我还想问使用中断是否更难实现我的目标、我从未使用过中断、因此我不熟悉中断的工作方式...
这是带有注释的主循环代码。 有些函数具有 wierd 名称、因为我用我的语言加泰罗尼亚语将它们命名为:
for (;;)
{
scia_msg ("velocitat_val=");
scia_msg (vel); // vel 是包含显示信息的字符数组
scia_xmit (255);
scia_xmit (255);
scia_xmit (255);
}
while (ScibRegs.SCIFFRX.bit.RXFFST){ //同时有 GPS 发送的和 scib 接收的第
ReceivedChar = ScibRegs.SCIRXBUF.ALL;
missatge[index]= ReceivedChar; //这将创建从 GPS 接收的字节的字符数组,该数组发送 以 '$'开头的句子,然后发送信息。
索引++;
如果('$'=ReceivedChar){
索引= 0;
analitza_paraula (); //此函数分析从 GPS 接收到的数组"missatge",以提取信息并更新变量"latutitude"、"longitude"、speed 等。
}
}
}
我只发布了主循环、如果我注释掉第一行、从 scia_msg ("velocitat_val=");到最后一个 scia_xmit (255); 代码正常工作并从 GPS 中提取正确的信息、但如果我添加代码 SCIB 的前5行似乎无法读取数据、则永远不会输入 if ('$'=ReceivedChar){}条件、while (ScibRegs...) 环路。
是否有人知道原因是什么?
非常感谢大家的关注、我现在真的很坚持