要配置 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 文件中:
- 打开 Device Configurator。
- 在 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. 验证配置
寄存器检查:
回环测试:
- 短接 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)进行底层寄存器调试。
要配置 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 文件中:
- 打开 Device Configurator。
- 在 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. 验证配置
寄存器检查:
回环测试:
- 短接 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)进行底层寄存器调试。
举报