[GD32E] GD32E23x GPIO 模拟串口

[复制链接]
362|65
Henryko 发表于 2026-8-14 21:37 | 显示全部楼层
定时器预分频要调对,波特率匹配很重要,试试调整预分频器,看是否能稳定波特率。
updownq 发表于 2026-8-15 11:54 | 显示全部楼层
收端通过采样数据位,可减少噪声影响,推荐在数据位中间时刻采样
1988020566 发表于 2026-8-15 12:59 | 显示全部楼层
若使用同一引脚实现收发,需通过软件控制引脚方向切换
pixhw 发表于 2026-8-15 14:24 | 显示全部楼层
模拟方式下,建议使用9600bps或115200bps等较低速率。速率越高,对延时的精度和CPU的响应速度要求也越高。
jonas222 发表于 2026-8-15 16:46 | 显示全部楼层
在发送或接收单个字节的关键时序期间,建议临时关闭全局中断,完成后恢复,防止其他中断打断时序导致数据错乱。
adolphcocker 发表于 2026-8-15 17:59 | 显示全部楼层
硬件UART已用于其他外设              
uytyu 发表于 2026-8-15 19:19 | 显示全部楼层
模拟串口通过定时器控制GPIO的高低电平切换,实现数据的发送和接收。
jackcat 发表于 2026-8-15 20:38 | 显示全部楼层
使用 TIM 中断做精准节拍,非阻塞接收,推荐 TIM14,72MHz 系统时钟,9600 波特率,中断每 104us 进一次节拍处理。
modesty3jonah 发表于 2026-8-16 09:01 | 显示全部楼层
逻辑分析仪实测波形。若波形整体偏宽/偏窄,微调BIT_TIME_US宏定义值。GD32E23x内部RC振荡器误差较大,‌务必使用外部HSE晶振‌作为系统时钟源。
EchoInSilence 发表于 2026-8-16 11:40 | 显示全部楼层
定时器配置得不错,试试增加一个去抖动算法,减少外部干扰影响。
averyleigh 发表于 2026-8-16 12:12 | 显示全部楼层
接收难点在于‌起始位检测‌与‌采样点定位‌。建议在起始位下降沿触发外部中断,或在主循环中高频轮询。
jkl21 发表于 2026-8-16 14:14 | 显示全部楼层
软件模拟串口对时序要求极高。HAL_Delay 或简单的 for 循环在主频变化或中断插入时会严重失准。强烈建议使用硬件定时器中断来产生精确的位周期延时。
chenci2013 发表于 2026-8-16 17:43 | 显示全部楼层
GPIO 模拟串口属于全软件操作,单片机 占用率极高,且没有硬件 UART 的噪声抑制、奇偶校验和错误检测机制。仅建议在低速且确实缺少硬件串口时作为备用方案使用。
youtome 发表于 2026-8-16 20:52 | 显示全部楼层
发送和接收需使用环形缓冲区,防止数据溢出,尤其在高波特率或复杂任务环境下。
AIsignel 发表于 2026-8-17 11:43 | 显示全部楼层
示例代码:初始化为发送状态,发送时将引脚设为输出,接收时设为输入。
robincotton 发表于 2026-8-17 11:46 | 显示全部楼层
在发送/接收关键时序期间,若系统有其他高频中断,可能导致延时不准。
backlugin 发表于 2026-8-17 12:22 | 显示全部楼层
若需115200bps,建议使用硬件USART或DMA辅助。
MessageRing 发表于 2026-8-17 12:26 | 显示全部楼层
定时器频率要精确匹配波特率,预分频器设置要检查,软件去抖动很重要。
ulystronglll 发表于 2026-8-17 13:28 | 显示全部楼层
在实际工程中,建议将 RX 引脚配置为外部中断,在下降沿中断触发后启动定时器采样,以实现非阻塞接收。
hilahope 发表于 2026-8-17 14:31 | 显示全部楼层
当硬件USART资源不足时,这是一种很实用的补充方案。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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