文章来源 Cytech Engineer

Altera A10 SoC HPS UART 作为数据通讯接口应用的配置与调试

背景介绍

在嵌入式系统中,UART 串口通常用于调试和通讯。通常情况下,调试串口对波特率的大小没有特别要求,一般配置是 115200 8N1。UART 串口除了调试功能外,有时候在设计中也会充当数据通讯接口和其它单板或模组进行互连通讯。当 UART 作为数据通讯接口时,对传输的带宽就会有较高要求,往往原先的波特率 115200 就不能适应这样的需求了。接下来将介绍 Altera A10 SoC HPS UART 作为数据通讯接口需要注意的地方。

HPS UART 波特率配置

1. 配置波特率的寄存器 rbr_thr_dll

Altera A10 SoC HPS 提供了两个 UART 接口:UART 0 和 UART 1。分配的固定基地址如下图 (图1) 所示:

图1 固定基地址
图1 在 40G Ethernet IP 设置 cloent

根据数据手册的描述说明,分频值 = 串口时钟 ÷ (16* 波特率)。由于分频值的结果很可能是个小数,需要取最接近的一个整数,写进分频值的寄存器的低 8 位 DLL 和高 8 位 DLH,这样实际的波特率就和预期的波特率存在些差异,见下图 (图2):

图2 DLL 寄存器
图2 DLL 寄存器

2. 波特率误差控制

这里需要注意的是:实际中,当 SoC FPGA 单板的 UART 串口作为数据传输接口与其它单板或模组通讯时,两者 UART 串口的波特率大小配置要尽可能相等或接近,波特率的相差控制在 2% 以内。若相差过大就有可能出现 UART 串口所传输的数据不能被对端 UART 串口正确识别,从而可能导致数据传输失败。

实际应用案例

关于这种应用情况,接下来通过一个客户实际的例子为大家进行解释说明。客户使用 Altera A10 SOC FPGA,HPS 通过 UART 0 外接一块模组进行数据传输,初始配置如下图 (图3) 所示:

图3 初始配置
图3 初始配置

从上图可以看出,Qsys HPS 时钟与复位 config,客户配置的 l4_sp clock 为 100MHz,配置的分频值为 3,对应的波特率为 100 ÷ (16*3) = 2.083M。但示波器测试是 2.084M,见下图 (图4) 蓝框标记:

图4 示波器测试值
图4 示波器测试值

然而,HPS UART 串口外接模组的串口波特率为 2.00M,相差达到 4%,导致两块单板通讯失败。经过调整适配配置参数最终才找到合适的时钟及分频值,如下图 (图5) 所示:

图5 合适的时钟及分频值
图5 合适的时钟及分频值

将客户配置的 l4_sp clock 由 100MHz 调整为 62.5MHz,配置的分频值调整为 2,对应的波特率为 62.5 ÷ (16*2) = 1.95M,两者波特率相差大约 2%,最终两块单板的 UART 串口通讯恢复正常,数据带宽大约是 0.19MB/S。

总结

本文介绍了 Altera A10 SoC HPS UART 作为数据通讯接口的应用,重点讲解了波特率配置、分频值计算及实际应用中的调试技巧。通过合理配置时钟和分频值,开发者可以实现高速、稳定的 UART 数据传输。欲了解更多 Altera 相关方案或技术信息,可点击下方「联系我们」,提交您的需求,骏龙科技公司愿意为您提供更详细的技术解答。

更多信息: