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.

[参考译文] CC1312R:关于 CC1312R 上的 UART FIFO 功能

Guru**** 2539500 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1002465/cc1312r-about-the-uart-fifo-function-on-cc1312r

器件型号:CC1312R
Thread 中讨论的其他器件:SysConfig

您好!

您能否确认以下问题?

您能告诉我们如何决定缓冲区大小(UART_write()的参数)和波特率参数?
我们将通过禁用 FIFO 功能来评估 UART_write()函数。
如果第2个参数(* buffer)是200,第3个参数(size)是100,则前几个字节正确发送;但是,其他数据是错误的数据。
我们想知道如何决定缓冲区大小和波特率的参数。

在禁用 UART FIFO 的情况下、SYSCFG 参数中的"环形缓冲区大小"是否有效?

在 TRM 中、我们可以发现"例如、如果为接收 FIFO 选择了1/4选项、UART 会在接收到4个数据字节后产生一个接收中断。" 在 FIFO 操作章节中。
"4个数据字节"是否为拼写错误?
我们认为 FIFO 大小为32字节(32个单元)、因此32 * 1/4 = 8个数据字节。

此致、
Nomo

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

    你(们)好,Nomo

    1)

    UART 驱动程序用于 UART 硬件模块的特定配置。

    如果更改此配置、则很可能还需要重新编写驱动程序实现。

    为什么不能使用 TI 提供的驱动程序实现? 驱动程序不能为您提供哪些功能?

    UART 驱动程序文档中介绍了 UART 驱动程序的使用方法:

    https://dev.ti.com/tirex/explore/node?a=eCfARaV__1.50.00.08&node=AP24VgJ7gbuZWQrdF16tIg__pTTHBmu__LATEST

    你说第二个参数是200? 这意味着什么? 第二个参数是 const void * buffer、其中 buffer 包含要写入的数据:

    const char textToWrite[] = "Test\r\n";
    UART_Handle uart;
    UART_Params uartParams;
    
    UART_init();
    
    UART_Params_init(&uartParams);
    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.readReturnMode = UART_RETURN_FULL;
    uartParams.baudRate = 115200;
    
    uart = UART_open(CONFIG_UART_0, &uartParams);
    UART_write(uart, textToWrite, sizeof(textToWrite));
    

    2)

    通过 SysConfig 配置 UART 时、必须使用 TI 提供的 UART 驱动程序。 如果您更改驱动程序实现、我们无法告诉您 SysConfig 如何与您的修改一起工作。

    3)

    我同意、TRM 中似乎有一个拼写错误

    BR

    Siri

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

    您好、Siri-San、

    感谢你的答复。
    当然、我们使用的是您提供的 UART 驱动程序、我们想再次向您提出问题2。
    我的拓扑是为了产生误解。
    我们绝不会更改驱动程序实现、只会更改您的 API 参数。
    ("第二个参数为200"意味着缓冲区大小为200字节。)

    在禁用 UART FIFO 的情况下、SYSCFG 参数中的"环形缓冲区大小"是否有效?

    此致、
    Nomo

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

    我仍然很困惑、为什么您询问如果禁用 FIFO 会发生什么情况、因为我们的驱动程序无法做到这一点。

    通过设置 LCRH.Fen = 1启用 FIFO、这在驱动程序实现中是硬编码的、因此、除非您更改驱动程序、否则您将无法禁用 FIFO:

    UARTCC26XX_open 调用 UARTCC26XX_initHw (handle)、执行以下操作:

    /*启用 UART FIFO */
    HWREG (hwAttrs->baseAddr + UART_O_LCRH)|= UART_LCRH_Fen;

    无论环形缓冲器大小如何、都将执行此操作。 环形缓冲器用作 FIFO 的扩展。 如果在未调用 UART_READ()时接收到数据,则数据将存储在环形缓冲区中。 可以更改大小以适合应用。

    对这些论点仍然感到困惑。

    在第一封电子邮件中,您写道:

    "如果第2个参数(* buffer)为200、第3个参数(size)为100、"

    在最后一封电子邮件中,您声明缓冲区大小为200字节

    如文档中所述、第一个参数是句柄、第二个参数是存储数据的数组、第三个参数是该数组的大小(如果要发送数组中的所有元素)。

    BR

    Siri

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

    您好、Siri-San、

    感谢你的答复。

    首先、您不建议通过设置 LCRH.Fen = 0来禁用 FIFO?
    我们可以在 DriverLib 中找到 UARTFIFODisalbe API。
    dev.ti.com/.../node
    因此、我们认为可以使用该 API。

    [引用 userid="2957" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1002465/cc1312r-about-the-uart-fifo-function-on-cc1312r/3704671 #3704671"]如文档中所述,第一个参数是句柄,第二个参数是存储数据的数组,第三个参数是该数组的大小(如果要发送数组中的所有元素)。

    我理解您提到的内容。
    我的描述不好。
    我们正在考虑阵列中存储的数据大小和要发送的数据大小是不同的情况。
    例如、整个阵列大小为200字节、要发送的数据大小为100字节。

    此致、
    Nomo

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

    你(们)好,Nomo

    对于 driverLib、我想这里会有一些困惑

    https://dev.ti.com/tirex/explore/node?node=AGOrZfAC9FxO1GVHEpPQlw__pTTHBmu__LATEST

    TI 驱动程序

    https://dev.ti.com/tirex/explore/node?node=AP24VgJ7gbuZWQrdF16tIg__pTTHBmu__LATEST

    我们建议客户使用 TI 驱动程序(和 UART 驱动程序)、而不是 driverLib。

    driverLib 是一组用于访问 CC13xx 上的寄存器的低级驱动程序、而 UART 驱动程序(在 TI 驱动程序下)基于可移植应用程序编程接口(API)、可在 SimpleLink SDK 产品系列之间实现无缝迁移。 除非另外特别说明、否则 TI 驱动程序设计为线程安全且可在实时操作系统(RTOS)应用程序内无缝工作。 所有 TI 驱动程序实施均利用电源驱动程序 API 确保始终保持低功耗。

    TI 驱动程序使用 driverLib 函数、除非您以我们的 UART 驱动程序不支持的方式使用 UART、否则您无需使用 driverLib 函数来实现自己的驱动程序。

    完成的配置是 SysConfig 是 TI 驱动程序的配置(而不是低杠杆 driverLib)。

    例如、即使您的数据存储在大小为200的数组中、也不应存在仅发送100字节的问题。

    BR

    Siri

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

    您好、Siri-San、

    感谢你的答复。

    一切都很清楚。

    此致、

    Nomo