涡流远见者 发表于 2025-7-31 16:39

APM32E030的串口速率上不到1Mbps

昨天晚上在做APM32E030R的开发时,把APM32E030的串口速率提到1Mbps无法正常通讯了。

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

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

void uart2_init(uint32_t band)
{
GPIO_Config_T gpioConfig;
USART_Config_T usartConfigStruct;
/* Enable GPIO clock */
RCM_EnableAHBPeriphClock(RCM_AHB_PERIPH_GPIOA);
RCM_EnableAPB1PeriphClock(USART2);
/* Connect PXx to USARTx_Tx */
GPIO_ConfigPinAF(GPIOA, GPIO_PIN_SOURCE_2, GPIO_AF_PIN1);

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

    /* Configure USART Rx as input floating */
gpioConfig.pin = GPIO_PIN_3;
GPIO_Config(GPIOA, &gpioConfig);

usartConfigStruct.baudRate = band;
usartConfigStruct.mode   = USART_MODE_TX_RX;
usartConfigStruct.hardwareFlowCtrl = USART_FLOW_CTRL_NONE;
usartConfigStruct.parity   = USART_PARITY_NONE;
usartConfigStruct.stopBits =USART_STOP_BIT_1;
usartConfigStruct.wordLength = USART_WORD_LEN_8B;
USART_Config(USART2, &usartConfigStruct);

/* Enable USART */
USART_Enable(USART2);
}

void debug_uart_sendbyte(uint8_t dat)
{
while (USART_ReadStatusFlag(USART2, USART_FLAG_TXBE) == RESET);
USART_TxData(USART2, dat);
}



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传输、提高中断优先级、避免阻塞式延时
页: [1]
查看完整版本: APM32E030的串口速率上不到1Mbps