为什么串口传输STM32采样数据,一个周期数据太少

为什么串口传输STM32采样数据,一个周期数据太少,第1张

也有人回答了,按115200波特率,,1个字节8位加起始位与停止位共10位,在20ms内撑死只能传输230个字节,所以理论上你最多也就输出230个点,但CPU处理命令也要时间哒,你收集到数据然后响应中断,在进入中断调用串口发送函数,这期间也是会消耗一定时间的,如果你采样一个数据就进一次中断,中断在发送串口,那中断里面肯定还没执行完中断信号又来了,这样肯定是不行了。解决方法:提高波特率至少40k,使用DMA来搬运数据,DAC采样到数据就搬运到串口,这样可以极大减少CPU的干预,利用DMA模块来完成工作

波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。

不同单片机集成外设的处理方式有所不同,具体内容你可以看一下相关内核的Reference Manual。

以传统51内核为例,按照所设置的波特率,每个位时间被分为16个时间片。UART接收器会在第7、8、9三个时间片进行采样,按照三取二的逻辑获得该位时间内的采样结果。

其它一些类型的单片机则可能会更加严苛,例如有些工业单片机会五取三甚至七取五(设置成抗干扰模式时)。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/802013.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-28
下一篇2023-08-28

发表评论

登录后才能评论

评论列表(0条)

    保存