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);
|