蓝牙技术
直播中

吕钢格

9年用户 1075经验值
私信 关注
[问答]

如何使用CYW920829M2EVK-02 将 UART 速度设置为 8Mbps?

我们正在测试CYW920829M2EVK的uart速度。正如 CYW20829 的数据表所述,uart 的运行速度最高可达 8 Mbps。
我们只能实现高达 3Mbps 的 uart 速度。有没有什么方法可以配置 uart 来实现 8Mpbs 的速度?

回帖(1)

张玉珍

2025-7-23 18:18:50

要配置 CYW920829M2EVK-02 的 UART 速度到 8 Mbps,需重点关注 时钟源设置、过采样率配置和硬件优化。以下是详细步骤和配置方法:




1. 确认硬件限制



  • 引脚选择:确保使用 P0.2 (TX) 和 P0.3 (RX) 等高速兼容引脚(避免电平转换电路)。

  • 接线质量:使用屏蔽双绞线,长度小于 30cm,减少信号干扰。

  • 信号测量:用示波器检查信号完整性(上升/下降时间需 < 50ns)。




2. 配置时钟源


UART 波特率公式为:


波特率 = UART_CLK / (16 × DIV)   (标准模式)

波特率 = UART_CLK / (8 × DIV)   (高速模式)

为达到 8 Mbps:




  • 选择高速时钟源(如 PLL 输出 96 MHz):


    #include "cyhal_clock.h"

    // 配置 PLL 输出 96 MHz
    cyhal_clock_t pll_clock;
    cyhal_clock_get(&pll_clock, CYHAL_CLOCK_HF[0]);
    cyhal_clock_set_frequency(&pll_clock, 96000000, NULL);


  • 设置 UART 时钟源为 PLL
    在 ModusToolbox 的 design.modus 文件中:

    1. 打开 Device Configurator

    2. Peripherals > SCB UART 中:

      • Clock Source 设为 HFCLK[0](PLL 输出)

      • 确保 HFCLK[0] 频率为 96 MHz。






3. 设置过采样率为 8


降低过采样率是关键:


#include "cyhal_uart.h"

cyhal_uart_t uart_obj;
const cyhal_uart_cfg_t uart_config = {
    .data_bits = 8,
    .stop_bits = 1,
    .parity = CYHAL_UART_PARITY_NONE,
    .rx_buffer = NULL,
    .rx_buffer_size = 0,
    .oversample = 8, // 设置为 8x 过采样
};

// 初始化 UART
cyhal_uart_init(&uart_obj, CYBSP_UART_TX, CYBSP_UART_RX, NULL, NULL);
cyhal_uart_configure(&uart_obj, &uart_config);
cyhal_uart_set_baud(&uart_obj, 8000000, NULL); // 设置 8 Mbps



4. 启用 DMA 降低 CPU 负载


高速传输时需用 DMA 避免数据丢失:


#include "cyhal_dma.h"

cyhal_dma_t dma_tx, dma_rx;
cyhal_uart_enable_dma(&uart_obj,
                       CYHAL_UART_DMA_TX | CYHAL_UART_DMA_RX);
cyhal_dma_init(&dma_tx, NULL, NULL); // 初始化 TX/RX DMA 通道
cyhal_dma_init(&dma_rx, NULL, NULL);
cyhal_uart_set_dma(&uart_obj, &dma_tx, &dma_rx);



5. 验证配置




  1. 寄存器检查



    • 读取 SCBx_UART_CTRL 寄存器(CY_SCB_UART_CTRL),确保 OVS 字段值为 0x1(8x 过采样)。

    • 确认波特率寄存器 SCBx_UART_BAUD_FRACDIV 计算值:
      DIV = (UART_CLK / (8 × 波特率)) = 96e6 / (8 × 8e6) = 1.5
      寄存器值 = (1 << 16) + 0.5 × 8 = 0x00010004 (按小数位编码)




  2. 回环测试



    • 短接 TX 和 RX 引脚。

    • 发送大量数据并验证接收正确性。






6. 解决常见问题



  • 时钟源错误:若使用默认内部低速时钟(32.768 kHz),无法达到 8 Mbps。必须切换到 PLL 时钟(96 MHz)。

  • 信号失真:在示波器上检查波形,如果出现振铃/过冲:

    • 在 TX/RX 线上串联 22Ω 电阻。

    • 避免使用长导线。


  • DMA 未启用:高波特率时 CPU 可能无法及时处理中断,务必启用 DMA。




总结配置要点































配置项 关键值/操作
时钟源 HFCLK[0] (96 MHz PLL)
过采样率 8x
波特率 8,000,000 bps
DMA 支持 启用 TX/RX DMA
硬件优化 短导线 + 串联电阻 + 示波器验证

通过上述步骤,您应该能稳定实现 8 Mbps UART 通信。如仍有问题,请检查开发板原理图确认时钟路径或使用 Infineon 官方支持工具(如 WICED Studio)进行底层寄存器调试。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分