如何决定UART_DLF?

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
2个帖子/ 0新
最后一篇
尼格利
离线
最后一次露面:2个月1日前
加入:2018-03-20 08:24
如何决定UART_DLF?

嗨对话框,

我想创建自己的UART波特率,但不知道如何决定DLF值。数据表指示值=(除数分数值)/(2 ^ dlf_size)。
我无法在数据表中找到关于“Divisor分数值”和“DLF_SIZE”的任何描述。例如,如果我想创建10000波特率(100us),我应该在DLL中填充100,那么DLF值将是什么?谢谢你的帮助。

设备:
PM_DIALOG.
离线
最后一次露面:15小时58分钟前
职员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

请检查一下表42:波特率生成DA14680数据表。作为一个例子,让我展示115200如何生成115200(默认波特率),然后我将向您展示如何生成10000波特率。一般来说,请注意:divider = 16000000/16 /波特速度

用于生成115200波特率,获得分频器:16000000 / 16/115200 = 8,680〜= 8

  • dlh / dll reg =8à8.(在十六进制)
  • UART_DLF REG = 0.680 * 16 = 10.88〜=11àB.(在十六进制)
    • 0.680 = 8.680 - 8是分隔器的浮动部分

请转到hw_uart.h标题文件中的hw_uart_baudrate枚举,您将看到

hw_uart_baudrate_115200 = 0x000008.0.B.。定义的值包括3寄存器的值:DLH,DLL,DLF。

关于10000波特率,您将获得16000000 / 16/10000 = 100

  • dlh / dll reg =100à64.(在十六进制)
  • UART_DLF REG =0.

因此,在hw_uart_baudrate枚举中,您应该添加以下内容:

hw_uart_baudrate_10000 = 0x0000.64.0.0.。此外,您应该将Config.c文件中的config_retarget_uart_baudrate定义更改为您的自定义波特率hw_uart_baudrate_10000。

谢谢,PM_DIALOG.