求解为什么stm32普通串口跟DMA串口传输方式每个字节的位数不一样

2019-07-14 15:53发布

用示波器观察普通方式的串口传输,每个字节有一位起始位,八位数据位,两位停止位;而理论上我的设置是一位起始位,八位数据位,一位停止位,这里问题就来了,为什么会出现两位停止位呢?这里数据位数就对应不上了啊!但是即使数据对应不上,这时的通讯也是正常的,接收的整体数据也是对的,为什么呢?
相较而言,STM32的DMA传输方式下,示波器的波形则是正常的一位起始位,八位数据位,一位停止位。通讯也是正常的。作为一只资深小白瞬间就蒙圈了!期待大神路过~

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
niggle
2019-07-14 21:12
正常停止位的位数是可以软件设定的,是不是没设置好?
如果接收是2两位停止位的话,发送是两位停止位肯定没问题,是一位停止位的话也不一定有问题;因为停止位是高电平,而串口空闲时也是高电平;
普通串口传输的话,发送两个字节之间肯定有空闲,很容易达到2个停止位的空闲;如果是DMA串口发送的话,空闲时间几乎可以忽略,接收处理的比较慢的话容易出问题

一周热门 更多>