首页 > 技术文章 > linux内核函数 rational_best_approximation

-tbd- 2020-08-27 16:06 原文

 

函数在内核\lib\rational.c文件中定义,原型是

void rational_best_approximation(
unsigned long given_numerator, unsigned long given_denominator,
unsigned long max_numerator, unsigned long max_denominator,
unsigned long *best_numerator, unsigned long *best_denominator)

其作用是计算波特率的分频值, imx6ull的波特率计算公司如下

为了使用rational_best_approximation函数, UBMR类比于denominator,UBIR类比于numerator,简化波特率计算模型:

 相当于

第3和第4个参数是numerator和denominator最大值,通常指的是分频UBMR和UBIR在寄存器的位数,占用8位,则参数是 (1 << 8) -1

 下面截图传入的参数和执行结果:

 

 根据打印结果,从而确定了 rational_best_approximation 函数内参数的关系如下:

 

推荐阅读