MSP430串口波特率计算器
MSP430波特率的计算
给定一个BRCLK时钟源,波特率用来决定需要分频的因子N: N = fBRCLK/Baudrate 分频因子N通常是非整数值,因此至少一个分频器和一个调制阶段用来尽可能的接近N。
如果N等于或大于16,可以设置UCOS16选择oversampling baud Rate模式 注:Round():指四舍五入。
Low-Frequency Baud Rate Mode Setting
在low-frequency mode,整数部分的因子可以由预分频实现: UCBRx = INT(N)
小数部分的因子可以用下列标称公式通过调制器实现: UCBRSx = round( ( N – INT(N) ) × 8 ) 增加或减少UCBRSx一个计数设置,对于任何给定的位可能得到一个较低的最高比特误码率。如果确定是这样的情况UCBRSx设置的每一位必须执行一个精确的错误计算。
Oversampling Baud Rate Mode Setting 在oversampling mode 与分频器设置如下:
require.async([‘wkcommon:widget/ui/lib/sio/sio.js’], function(sio) { var url = ‘https://cpro.baidustatic.com/cpro/ui/c.js’; sio.callByBrowser( url, function () { BAIDU_CLB_fillSlotAsync(‘u2845605’,‘cpro_u2845605’); } ); });
UCBRx = INT(N/16) 第一个调制阶段设置如下:
UCBRFx = round( ( (N/16) – INT(N/16) ) × 16 ) 当要求更精确时,UCBRSx也可以被设置成0-7。 例1:1048576Hz频率下驱动以9600波特率异步通讯 UCBRx = INT(N/16)=INT(fBRCLK/Baudrate/16) UCBRx = INT(1048576Hz/(16*9600)) = INT(~6.8) UCBRFx = round( ( (N/16) – INT(N/16) ) × 16 ) = round( ( 6.8 – 6 ) × 16 )=13 UCAxCTL1 |= UCSSEL_2; // 选SMCLK为时钟 UCAxBR0 = 6; // 1MHz 9600 UCAxBR1 = 0; // 1MHz 9600
UCAxMCTL = 0xD1; //7-4:UCBRFx,3-1:UCBRSx,0:UCOS16 UCBRFx 为寄存器UCAxMCTL的4-7位,UCOS16为0位,所以写入0xD1(11010001) 具体的寄存器值设置在MSP430F5438 User‘s Guide的
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !