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.

[参考译文] RTOS/LAUNCHXL-CC2640R2:了解 UART_READ()命令

Guru**** 2587435 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/599017/rtos-launchxl-cc2640r2-understanding-the-uart_read-command

器件型号:LAUNCHXL-CC2640R2

工具/软件:TI-RTOS

您好!

我在通过 UART 接收时遇到一些问题。 在我的场景中、我希望发送一条命令(作为主器件)、然后从一个 LIN 总线从节点读取答案。

一切都正常、直到从 LIN 从节点读回答案。

但是、如果我使用两个 Launchpad 发送的第一个 LaunchPad 仅发送请求、如果我使用第二个 LaunchPad 回读答案、一切都可以正常工作。

UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_BINARY;
uartParams.readTimeout = 20 * 1000 / Clock_tickPeriod;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 19200;

LINHeader[1]= calcPID (0x22);
sendBreak();
UART_WRITE (UART、&LINHeader、2);//发送请求
UART_READ (UART、帧缓冲区、8);//读取应答 

如何在发送报头后将 UART 接口配置为 swtech 以读取? 我认为我必须使用 UART_readPolling(),但根据驱动程序文档,此命令不受支持。

此致

马西米兰

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

    您是否获取了 UART 引脚的逻辑分析仪捕获(在 LIN 总线驱动器后面)以确认预期的波形是否被发回? UART_READ 处于阻塞状态、因此应等待指定的 readTimeout 发生。 您是否检查了超时?

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

    是的、我选中了这个。 延迟为120us @ 19200波特。

    奇怪的是、如果我加上一个延迟、110us、那么所有字节都是读取的、需要第一个字节。

    我应该更好地使用回调函数吗?

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

    我不确定使用 LIN 从机模式时的确切问题是什么。 您没有获得数据吗? 您是否缺少数据? 关闭的字节数吗? 您能否检查 UART_READ 的返回值并查看实际获得的数据数量?

    Tom

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

    我将得到完整的帧、但没有第一个字节。 如果我在没有110us 延迟的情况下运行代码、则不会收到任何消息。 在这种情况下、代码仅在我添加 uartParams.readTimeout 时运行。

    延迟介于 LIN PID 的写入命令和 UART_READ ()之间。

    返回值为7、但帧包含8个字节。