s3c2440中,UBRDIVn=(取整)( 源时钟 / (波特率×16 ) ) -1, 为什么波特率要乘以16? 5

 我来答
baby帅气的轩哥
2017-12-04
知道答主
回答量:8
采纳率:50%
帮助的人:5814
展开全部
你看s3c2440芯片资料第352页
UART BAUD RATE DIVISOR REGISTER
There are three UART baud rate divisor registers including UBRDIV0, UBRDIV1 and UBRDIV2 in the UART
block.
The value stored in the baud rate divisor register (UBRDIVn), is used to determine the serial Tx/Rx clock rate
(baud rate) as follows:
UBRDIVn = (int)( UART clock / ( buad rate x 16) ) –1
( UART clock: PCLK, FCLK/n or UEXTCLK )
译:该值存储在波特率除数寄存器(UBRDIVn)中,用于确定串行Tx / Rx时钟频率 (波特率)
UBRDIVn很有意思吧 就是设置波特率的一个寄存器 比如要波特率位115200,但是不能直接把值115200放进去去 因为UBRDIVn就15位 最大最大就是32768 塞不下~
For example, if the baud-rate is 115200 bps and UART clock is 40 MHz, UBRDIVn is:
UBRDIVn = (int)(40000000 / (115200 x 16) ) -1
= (int)(21.7) -1 [round to the nearest whole number]
= 22 -1 = 21
通过已知的时钟和想要的波特率就可以算出UBRDIVn应该放多大的数值
至于为什么要*16 这应该是硬件规定的 别太较真朋友~
匿名用户
2019-09-17
展开全部
波特率需要通过源时钟主频除以一个分频除数(放在UBRDIV)得到,避免该除数过大溢出,将其缩小16倍,同时避免该除数为0,最好在取整之前加0.5,即向上取整
UBRDIVn=(取整)( 源时钟 / (波特率×16 )+0.5 ) -1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独狼0621
2015-09-07 · TA获得超过490个赞
知道答主
回答量:78
采纳率:0%
帮助的人:37.3万
展开全部
16倍的分频采样,所以要乘以16。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ce5a1c2王秀雯来
2020-02-22
知道答主
回答量:12
采纳率:0%
帮助的人:3873
展开全部
比特率时钟:每发送1bit所花费的时间周期,他是波特率时钟的16倍。
波特率指的是每秒发送bit的数量,但是,器件发送1bit所需的时间是比特率时钟。所以要配置的过程实际上是将输入时钟分频到满足目标波特率要求的比特率时钟。
但是我有一点不明白:为什么要减1?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式