九鼎创展论坛
标题: S3C2442串口使用 [打印本页]
作者: armeasy 时间: 2012-7-19 11:46
标题: S3C2442串口使用
S3C2442使用心得S3C2442有五种工作模式:
正常模式,慢速模式,空闲模式,停止模式,睡眠模式。
慢速模式下不使用PLL,从而降低了功耗。
空闲模式下FCLK停止工作,只给CPU core供电。这时任何的中断都能使CPU从空闲模式切换到主模式正常工作。
停止模式所有时钟全部关闭,外围器件的时钟也通过禁能PLL而被关掉。这时通过RTC或RTC alarm能够从停止模式唤醒。
睡眠模式下关断了内部电源。这时片内除了唤醒逻辑单元和CPU外电源全部关闭。CPU用于开关机的管理,这时EINT[0..15]或RTC的alarm能够唤醒睡眠模式。睡眠模式下,VDDi,VDDiarm,VDDMPLL和VDDUPLL将会关闭,这些电源受控于PWREN管脚。如果PWREN为高,VDDi,VDDiarm将会受外部的电压调整器供电。这里外部的电压调整器受控于PWREN脚。当PWREN脚为低电平时,VDDi和VDDiarm都会关闭。睡眠模式下如果不使用触摸屏,XP,XM,YP,YM应该悬空,不能接地。
S3C2442串口使用方法:
S3C2442自带三个串口,使用方法基本上相同,这里描述使用串口0的详细过程。
要想正确使用处理器的串口,必须正确设置串口的时钟。CPU有四个时钟需要注意:Fin,FCLK,HCLK,PCLK。其中Fin即外部晶振产生的频率。这里假定使用外部晶振模式,如果外部接一个12M的晶振,则Fin=12MHz。FCLK与Fin有一定的对应关系。当处理器工作在SLOW MODE下时,Fin=FCLK。这时禁能了PLL。当处理器工作在NOMOALMODE下时,FCLK=MPLL,即PLL倍频所产生的频率。这里倍频由寄存器MPLLCON设置。一般这些设置放在启动代码里面。具体计算公式为:
Mpll = (2 * m * Fin) / (p * 2s)
m = (MDIV + 8), p = (PDIV + 2), s = SDIV
使用串口时需要正确设置串口的波特率。其设置公式如下:
UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
可见,寄存器UBRDIVn的值依赖于波特率和串口时钟。串口时钟又依赖于PCLK,PCLK/n,UEXTCLK。具体串口时钟由上述三种中的哪一个决定,是由寄存器uCON[11..10]决定。当为00,10时选择PCLK,01时选择UEXTCLK,11时选择FCLK/n。为11时应配合uCON[15..12]使用。
例如:uCON[11..10]选择00,uCON[15..12]选择00,则UART clock为PCLK。现假设外部晶振为12MHz,设置UPLLCON将频率倍频到100MHz,则可以设置m=100,p=6,s=2。即MDIV=92,PDIV=4,SDIV=2。这样FCLK=100MHz。PCLK与FCLK有一个对应关系,需要设置寄存器CLKDIVN。具体FCLK:HCLK
CLK关系如下表:
CLKDIVN | FCLK:HCLK CLK |
| |
| |
| |
| |
| |
| |
| |
| |
如果CLKDIVN=7,则PCLK=FCLK/7,这样已知PCLK,如果设置波特率为115200,则可以计算出UBRDIV如下:
rUBRDIV0=PCLK/16/115200-1。
这些寄存器以及参数都正确设置后,就可以正确的使用串口了。
欢迎光临 九鼎创展论坛 (http://bbs.9tripod.com/) |
Powered by Discuz! X3.2 |