打印
[Atmel]

每天跟我读点资料:SAM D SERCOM USART配置9

[复制链接]
893|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
4.3分数波特率配置
       这节就象是在两个SAM D21 Xplained Pro板之间除波特率之外的基础配置。
       在PC终端和SAM D21 Xplained pro 板之间是算术波特率,然而在两个SAM D21的板子之间是分数波特率。
         
       只有EXT2连接头,有SERCOM2将支持分数波特率。
       注意:PC终端不支持非标准波特率。
       在这一节中只有分数波特率被解释,而其余的同基础配置一样。分数波特率11000bps在这个应用中使用。宏FRAC_BAUD_RATE含有分数波特率的值。
       分数波特率等式用来计算波特率的值。
       分数波特率
       fbaud = fref /S(BAUD+(FP/8))
fbaud – 分数波特率
fref – SERCOM 产生的时钟频率
S – 每们的釆样数
BAUD – BAUD值  
FP – 波特率值的分数部分
从分数波特率公式:
BAUD + FP/8 = fref / (fbaud x S)
= 8000000 / (11000 x 16)
= 45.454
整数部分与BAUD的值相关而小数部分同分数部分相关。
BAUD寄存器中BAUD值对应于BAUD[12:0]FP值对应于FP[2:0]
/* fractional baud value calculation */
void calculate_fractional_baud_value(const uint32_t baudrate,
const uint32_t peripheral_clock,uint8_t sample_num)
{
uint32_t mul_ratio;
mul_ratio = (uint64_t)((uint64_t)peripheral_clock*(uint64_t)1000)/(uint64_t)(bau drate*sample_num);
baud = mul_ratio/1000;
fp = ((mul_ratio - (baud*1000))*8)/1000;
}
在应用代码中下列代码是用来配置BAUD寄存器并带有小数波特率值
SERCOM2->USART.BAUD.reg = SERCOM_USART_BAUD_FRAC_BAUD(baud) | SERCOM_USART_BAUD_FRAC_FP(fp);  
      

相关下载

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2399

主题

6963

帖子

68

粉丝