您的位置 首页 基础

S3C2410串口波特率的核算

要正确计算串口波特率,首先要搞清楚芯片的时钟工作原理,这部分在s3c2410/s3c2440datasheet上写的比较详细,但对新手来说结合thisway同志s…

要正确核算串口波特率,首先要搞清楚芯片的时钟作业原理,这部分在s3c2410/s3c2440datasheet上写的比较详细,但对新手来说结合thisway同志“s3c2410彻底开发流程”中的TIMER和CLOCK两个试验,边做试验边看材料,更简略了解。

我这儿只依据我的失利经验谈一下设置波特率寄存器UBRDIVn的值的核算要注意的一个问题。

datasheet上UBRDIVn寄存器部分写着:

UART BAUD RATE DIVISOR REGISTER
There are three UART baud rate divisor registers including UBRDIV0, UBRDIV1 and UBRDIV2 in the UART block.
The value stored in the baud rate divisor register (UBRDIVn), is used to determine the serial Tx/Rx clock rate (baudrate) as follows:
UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
( UART clock: PCLK, FCLK/n or UEXTCLK )
Where, UBRDIVn should be from 1 to (216-1), but can be set zero only using the UEXTCLK which should be smaller than PCLK.
For example, if the baud-rate is 115200 bps and UART clock is 40 MHz, UBRDIVn is:
UBRDIVn = (int)(40000000 / (115200 x 16) ) -1
= (int)(21.7) -1 [round to the nearest whole number]
= 22 -1 = 21

也便是说,只需知道这个UART clock 就核算出UBRDIVn 的值,下面分别讲:

1. UEXTCLK

查手册:The UART can support bit rates up to 115.2K bps using system clock. If an external device provides the UART with UEXTCLK, then the UART can operate at higher speed.是说当用体系时钟(system clock)时UART波特率最高可到达115200,可是假如用这个UEXTCLK(external clocks for the UART operation)串口外设时钟,能够设置115200以上的波特率。

2. PCLK和FCLK/n

这儿又分两种状况:运用MPLL和不运用MPLL

咱们知道s3c2410最高频率可达266M,s3c2440最高频率可达533M,而一般外接晶振只要几十M,怎么使几十M变成几百M呢?这便是MPLL的劳绩了

s3c2410有两个pll(phase locked loop,锁相环,在高频中学过,能够完成倍频,s3c2410的高频便是由此电路发生的)。其间一个是MPLL,M即为main,用来发生三种时钟信号:Fclk(给CPU核供应时钟信号,咱们所说的s3c2410的cpu主频为200MHz,便是指的这个时钟信号,相应的,1/Fclk即为cpu时钟周期)、Hclk(为AHB bus peripherals供应时钟信号,AHB为advanced high-performance bus)、Pclk(为APB bus peripherals供应时钟信号,APB为advanced peripherals bus)。AHB和APB这两种总线所连的外设是有差异的。AHB总线衔接高速外设,低速外设则经过APB总线互连。明显,对不同总线上的外设,应该运用不同的时钟信号,AHB总线对应Hclk,APB总线对应Pclk。那么事前就应该弄清楚,每条总线对应的外设有那些,这样在设置好时钟信号后,对应外设的初始化的值就要依此而确认了。

当不运用MPLL(即不设置MPLLCON寄存器)时,外部晶振直接作为体系时钟。一般外部晶振有两个,一是用于体系时钟,为12MHz(或其他,由详细板子决议);一个用于实时时钟(RTC,real time clock,依据CPU的要求送出或设定时钟、日历的各种数据),为32.768KHz。此刻,PCLK即为12MHz。

当运用MPLL时,要经过对寄存器MPLLCON和CLKDIVN的设置来得到FCLK、HCLK和PCLK。

得到这个UART clock(PCLK, FCLK/n or UEXTCLK ),依据公式

UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1

来核算就简略了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/275678.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部