关于串口发送数据的时钟问题
时间:10-02
整理:3721RD
点击:
对于异步串口和同步串口有点不理解,1、异步串口是接收和发送端没有用同一个时钟源?那么双方只需要保证波特率一样,哪怕时钟相位相反也可以吗?
2、假设发送端波特率为115200,那发送端内部CPU把数据传给串口数据寄存器时,时钟频率也是在波特率为115200吗? 那这样岂不是降低了芯片内部的工作效率?
如果不是的话,那么串口发送数据时候的时钟用的是什么呢?
3、同步串口的话,时钟用一个时钟源吗? 如果不是的话 那怎么能保证没有相位差呢?
2、假设发送端波特率为115200,那发送端内部CPU把数据传给串口数据寄存器时,时钟频率也是在波特率为115200吗? 那这样岂不是降低了芯片内部的工作效率?
如果不是的话,那么串口发送数据时候的时钟用的是什么呢?
3、同步串口的话,时钟用一个时钟源吗? 如果不是的话 那怎么能保证没有相位差呢?
1、异步串口没有传输时钟信号,接收和发送用的肯定不是同一个时钟源,波特率有点偏差都可以,理论上2%的偏差都可以保证不会采错数据导致误码。一般是用高速时钟(波特率的N倍)去采样数据,可以看一下TL16C752的手册。
2、CPU给片上的串口外设时,工作频率应该是串口外设所在时钟域的工作频率,一般是CPU主频的几次分频。串口外设用它所在时钟域的工作频率经过N分频后,得到存在一定偏差内的实际波特率,按此波特率时钟往外发送数据。
3、同步串口,如SPI,是一边发送时钟,一边接收时钟,两边约定好在上升沿还是下降沿时采样数据。
大概是这个意思。
明白了,谢谢哈。
