也有人回答了,按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三个时间片进行采样,按照三取二的逻辑获得该位时间内的采样结果。
其它一些类型的单片机则可能会更加严苛,例如有些工业单片机会五取三甚至七取五(设置成抗干扰模式时)。
评论列表(0条)