如何确定UART\U DLF?

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
2个职位/0个新职位
最后一篇文章
尼日利亚
离线
最后一次见到:2个月3天前
已加入:2018-03-20 08:24
如何确定UART\U DLF?

嗨,对话,

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

设备:
PM\U对话框
离线
最后一次见到:2天13分钟前
工作人员
已加入:2018-02-08 11:03
你好nigelyang,

你好nigelyang,

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

对于生成115200波特率,您可以得到除法器:16000000/16/115200=8680~=8

  • DLH/DLL Reg=8à8(十六进制)
  • UART\u DLF寄存器=0.680*16=10.88~=11àB类(十六进制)
    • 0.680=8.680–8是分隔器的浮动部分

请转到HW\u UART.h头文件中的HW\u UART\u波特率枚举,您将看到

硬件UART波特率115200=0x0000080b. 定义的值包括3个寄存器的值:DLH、DLL、DLF。

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

  • DLH/DLL寄存器=100à64(十六进制)
  • UART\U DLF寄存器=0

因此,在HW\u UART\u波特率枚举中,您应该添加以下内容:

硬件UART波特率10000=0x00006400. 另外,您应该将CONFIG.c文件中的CONFIG\u RETARGET\u UART\u波特率定义更改为自定义波特率HW\u UART\u BAUDRATE\u 10000。

谢谢,下午好