13.Smart210串口驱动基于12的补充

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。

原文地址:https://www.cnblogs.com/FORFISH/p/5188820.html