13.Smart210串口驱动基于12的补充
上面的12节里,已经讲了2440有关串口的设置和操作。本来,2440,6410和210的串口操作应该是几乎一样的。在进行6410和210的设置的时候,发现在波特率的设置,6410和210的原理是一样的,但是跟2440有点不一样。所以下面以210为例子,说明6410和210波特率的设置。
寄存器:
UBRDIV0=(int)(PCLK_PSYS/(BAUD*16)-1);//UBRDIV0保存该公式计算后的整数部分。
UBRDIV0=(int)(66000000/(115200*16)-1)=(int)(35.8-1)=(int)(34.8)=34。即取整数部分为34.
//UDISLOT0=保存该公式计算后的小数部分*16。
0.8*16=12.8,查上表得出12对应UDISLOT0值为0xdddd。
由上面知道,还需要知道PCLK_PSYS的值:PCLK_PSYS=HCLK_PSYS/(PCLK_PSYS_RATIO+1);
要求得PCLK_PSYS需要先知道HCLK_PSYS的值: HCLK_PSYS=MPLL/(HCLK_PSYS_RATIO+1); 已知MPLL=667MHZ(参考时钟初始化那个专题)。
上面的值,都可以在手册查到,最后计算出PCLK_PSYS=66000000。