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.

[参考译文] IWR1443BOOST:UART 的大数据块

Guru**** 2614265 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/667573/iwr1443boost-large-data-block-to-uart

器件型号:IWR1443BOOST

您好!

我在捕获演示中添加了 UART_writePolling。 它的工作原理。 我可以在计算机上以921600波特率接收16384字节的数据。 值正确。 但是、当评估板传输24576字节的数据包时、我接收的数据大约为21000字节。

评估板能否正确传输24576或32768字节的单个块?

此致、
Gennadii

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

    UART 驱动程序本身可以根据指定的大小继续发送数据。 但是、系统可能已中断了该过程、因此当数据较大时、并非所有数据都已发送出去。 一个可能的原因是新的帧数据传入、因此 UART 写入中断。

    我建议尝试将帧编号设置为1或增加帧持续时间。 请告诉我这是否有帮助。

    此致、
    Michelle
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    只是为了跟进、是否有任何进展或问题?

    谢谢!

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

    我无法正确接收到超过16384字节的数据。 它看起来会使 UART_writePolling 掉电。

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

    在这种情况下是否涉及 DMA?

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

    我添加了信标 gCaptureMCB.uartSemHandle。

    我在 CaptureDemo_dmaIntCallback 函数的末尾添加了以下代码。 当所有 DMA 完成时、代码工作:

    uint32_t numChirpsPerFrame =(gCaptureMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.chirpEndIdx -
    gCaptureMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.chirpStartIdx + 1)*
    gCaptureMCB.cfg.ctrlCfg.u.frameCfg.frameCfg.numLoops;

    if (numChirpsPerFrame =gCaptureMCB.stats.dmaIntCounter)

    Semaphore_post (gCaptureMCB.uartSemHandle);


    我编写了用于 UART 传输的任务

    静态空 CaptureDemo_UART_Transfer_Task (UArg0、UArgarg1)

    while (1)

    Semaphore_pend (gCaptureMCB.uartSemHandle、BIOS_WAIT_FOREVE);

    uint32_t size =(uint32_t) gCaptureMCB.currDstAddr -(uint32_t)&gDataCube [0];

    UART_Handle handle = gCaptureMCB.loggingUartHandle;

    UART_writePolling (handle、(uint8_t*)&gDataCube [0]、size);




    我尝试了 CaptureDemo_UART_Transfer_Task 的任务优先级为0至6。 除优先级0外、它们都可以正常工作。
    我设置任务优先级6。

    下面是 IWR1443BOOS 发送32768字节时接收到的数据长度示例。
    26939
    27276.
    27323.
    26803
    27395
    26939

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

    UART 端口有一种 DMA 模式、具有大小限制。 它是否是 DMA 模式取决于您打开 UART 实例的方式。 以下是在 DMA 模式下打开 UART 的代码:
    Params.dmaHandle = gDMAHandle;
    params.txDMAChannel = 1;
    params.rxDMAChannel = 2;

    /*打开 UART 实例:*/
    句柄= UART_OPEN (uartInstanceNum、&params);
    只需确认一下、这不是您使用的方法。

    如果您在非 DMA 模式下运行、从 UART 的角度来看、理论上应该没有限制。 话虽如此、在921600波特率下、XDS110驱动器上出现了一些缓冲器关闭问题。 我们建议将波特率降低到115200、只需进行实验以验证传输是否成功完成。

    关于您添加的代码、以下是我收集的反馈:
    "从外观来看、客户正在发送 ADC 数据。 这是二进制数据、因此在这种情况下、您需要修改 UART 参数中的以下字段

    params.writeDataMode = UART_DATA_BINARY;

    他们还如何验证接收器端的数据? 他们是否运行 Tera-Term 等简单控制台? 如果您正在发送/接收二进制数据、但您的应用需要文本数据、则在二进制模式中有效的 CR、LF 可被视为文本模式中数据流的末尾、并报告缓冲区的末尾。

    此外、是否确定要通过串行端口发送线性调频脉冲数据?

    代码看起来有点时髦。 在 DMA 完成后、curDstAddr 会更新、但代码似乎会再次发送所有数据。

    大小=(uint32_t) gCaptureMCB.currDstAddr -(uint32_t)&gDataCube [0];
    不应只发送新数据

    任务优先级0是系统中的最低优先级。 这将只在空闲任务时执行。 "


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

    打开 UART 记录驱动程序的代码
    UART_PARAMS_INIT (uartParams);
    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.clockFrequency = gCaptureMCB.cfg.cpuClockFrequency;
    uartParams.baudrate = gCaptureMCB.cfg.logingBaudRate;
    uartParams.isPinMuxDone = 0;
    gCaptureMCB.logingUartHandle = UART_OPEN (1、&uartParams);
    没有 DMA。


    我不认为代码是时髦的。
    我在 CaptureDemo_dmaIntCallback 末尾进行了检查。 当帧中所有线性调频脉冲的 DMA 完成时、发送任务开始。

    if (numChirpsPerFrame =gCaptureMCB.stats.dmaIntCounter)

    Semaphore_post (gCaptureMCB.uartSemHandle);


    我尝试了115200波特率和16384字节数据块。 所有接收到的块都短于16384。
    我使用自己的 python 代码和模块串行进行接收。

    serial_port_data = serial.serial( com_data、com_data_speed、timeout = 0、stopbits=stopbits_one、paricy=par奇 偶校验_none )


    我可以以921200波特率接收16384字节的数据块

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

    Gennadii、

    我们在驱动程序/UART 下执行了32K 字节传输测试、没有数据丢失。 Tera-Term 用于捕获数据。

    以下是用于 UART 测试的更新文件: e2e.ti.com/.../uart_5F00_test.ce2e.ti.com/.../3666.main_5F00_mss.ce2e.ti.com/.../mss.cfg

    是否可以使用标准应用来接收数据、只是排除接收器上的任何警告?

    谢谢、此致、

    Michelle

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

    我正在跟进此 TT 是否可以关闭。 请告诉我。

    谢谢!
    此致、
    Michelle