[APM32E0] APM32E030的串口速率上不到1Mbps

[复制链接]
 楼主| 涡流远见者 发表于 2025-7-31 16:39 | 显示全部楼层 |阅读模式
昨天晚上在做APM32E030R的开发时,把APM32E030的串口速率提到1Mbps无法正常通讯了。

大家有出现类似的情况吗?

我的初始化代码来自参考例程,我的在115200bps下是可以的。

  1. void uart2_init(uint32_t band)
  2. {
  3.   GPIO_Config_T gpioConfig;
  4.   USART_Config_T usartConfigStruct;
  5.   /* Enable GPIO clock */
  6.   RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
  7.   RCM_EnableAPB1PeriphClock(USART2);
  8.   /* Connect PXx to USARTx_Tx */
  9.   GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_2, GPIO_AF_PIN1);

  10.   /* Connect PXx to USARTx_Rx */
  11.   GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_3, GPIO_AF_PIN1);
  12.   /* Configure USART Tx as alternate function push-pull */
  13.   gpioConfig.mode = GPIO_MODE_AF;
  14.   gpioConfig.pin = GPIO_PIN_2;
  15.   gpioConfig.speed = GPIO_SPEED_50MHz;
  16.   gpioConfig.outtype = GPIO_OUT_TYPE_PP;
  17.   gpioConfig.pupd = GPIO_PUPD_PU;
  18.   GPIO_Config(GPIOA, &gpioConfig);

  19.     /* Configure USART Rx as input floating */
  20.   gpioConfig.pin = GPIO_PIN_3;
  21.   GPIO_Config(GPIOA, &gpioConfig);
  22.   
  23.   usartConfigStruct.baudRate = band;
  24.   usartConfigStruct.mode     = USART_MODE_TX_RX;
  25.   usartConfigStruct.hardwareFlowCtrl = USART_FLOW_CTRL_NONE;
  26.   usartConfigStruct.parity   = USART_PARITY_NONE;
  27.   usartConfigStruct.stopBits =  USART_STOP_BIT_1;
  28.   usartConfigStruct.wordLength = USART_WORD_LEN_8B;
  29.   USART_Config(USART2, &usartConfigStruct);
  30.   
  31.   /* Enable USART */
  32.   USART_Enable(USART2);
  33. }

  34. void debug_uart_sendbyte(uint8_t dat)
  35. {
  36.   while (USART_ReadStatusFlag(USART2, USART_FLAG_TXBE) == RESET);
  37.   USART_TxData(USART2, dat);
  38. }




jtracy3 发表于 2025-8-4 10:11 | 显示全部楼层
受到多种因素的限制,包括时钟配置、波特率设置和硬件设计等。
saservice 发表于 2025-8-4 13:12 | 显示全部楼层
启用HSE+PLL倍频至72MHz
kmzuaz 发表于 2025-8-4 16:04 | 显示全部楼层
串口的波特率由系统时钟通过波特率生成器计算得出。确保波特率生成器的配置正确,以达到所需的波特率。
cemaj 发表于 2025-8-4 21:41 | 显示全部楼层
在微控制器的电源引脚附近放置适当的去耦电容,以减少电源噪声,提高串口通信的稳定性。
mollylawrence 发表于 2025-8-5 08:25 | 显示全部楼层
测量信号幅度和噪声              
wilhelmina2 发表于 2025-8-5 10:15 | 显示全部楼层
时钟源与分频配置              
DawnFervor 发表于 2025-8-5 18:13 | 显示全部楼层
1Mbps需要时钟的主频要超过16MHz。
楼主看看是不是没有使用PLL时钟?
旧时光放映机 发表于 2025-8-6 12:54 | 显示全部楼层
看起来你的代码配置是正确的,但1Mbps可能超出了APM32E030的硬件能力。检查一下硬件手册,看看是否支持这么高的波特率。
adolphcocker 发表于 2025-8-7 09:59 | 显示全部楼层
是否存在电气干扰或接触不良              
phoenixwhite 发表于 2025-8-7 12:20 | 显示全部楼层
缩短走线、加终端电阻              
uptown 发表于 2025-8-7 14:38 | 显示全部楼层
系统时钟稳定且分频系数合理,这是波特率达标的基础
kkzz 发表于 2025-8-7 16:51 | 显示全部楼层
启用DMA传输、提高中断优先级、避免阻塞式延时
deliahouse887 发表于 2025-8-8 12:04 | 显示全部楼层
检查UART信号线的布线, 信号线尽可能短且远离干扰源
ingramward 发表于 2025-8-8 14:05 | 显示全部楼层
在TX/RX引脚与地之间并联100pF陶瓷电容,滤除高频噪声
macpherson 发表于 2025-8-8 16:05 | 显示全部楼层
检查硬件连接和电源电压是否正常              
ingramward 发表于 2025-8-10 22:11 | 显示全部楼层
在VDD引脚附近放置10μF钽电容 + 0.1μF陶瓷电容,滤除高频噪声。
风暴之眸 发表于 2025-8-11 15:22 | 显示全部楼层
查一个时钟频率。
或者使用示波器观察一下波形,估计现在串口的频率发生了偏移。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

45

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部