ZYNQ axi uart16550 IP核扩展485接口使用

本文详细介绍了如何在ZYNQ平台上使用AXI UART 16550 IP核扩展485接口,包括工程搭建、中断配置、GPIO控制以及SDK测试。在Linux环境下,通过设备树添加16550驱动,实现485串口通信的配置和功能验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的另外一篇博客:ZYNQ axi_uartlitle IP核扩展232或者422

ZYNQ axi_uartlitle IP核扩展232或者422_wangjie36的博客-优快云博客

一,axi uart16550简介

用于通用接收/发送异步传输信息的串口安装在一个称作“UART”的芯片旁边。PC机早期使用UART的型号是8250和16450,这两种型号都不能满足需要。目前普通的PC机使用的是16550的UART,最新型的UART是16650和16750,通常这样的芯片不安装在系统板上。UART16550除了拥有AXI UART Lite的全部功能外,还提供1.5bit和2bit停止位,在可配置波特率的基础上还可以使用外部时钟供给串口接收模块,经测试发现,其波特率可以达到linux中tty设备定义的最大波特率,也就是4.5Mbps。功能丰富的UART IP在资源的利用上显然要比UART Lite要高,UART16550是UART Lite资源的3倍左右。

### UART16550 配置与驱动开发 #### 硬件连接 对于 Zynq 平台上的 UART16550 使用,硬件连接至关重要。通常情况下,在 Zynq 设备中集成的 PS(处理系统)部分已经包含了多个 UART 接口。如果需要额外的 UART 功能,则可以通过 PL(可编程逻辑)部分实现 UART16550IP 并将其连接到外部引脚。 为了使能 UART16550,在 Vivado 中创建项目时应确保选择了合适的板级支持包 (BSP),并且在设计过程中正确配置了 MIO 或 EMIO 连接方式来映射 UART 信号至物理引脚[^2]。 #### U-Boot 和 Linux 内中的配置调整 当涉及到具体的操作系统层面的支持时,U-Boot 版本应当同 Vivado 工具链保持同步以便顺利开展后续工作。针对特定平台如 zc702 板卡,可能需要编辑 `configs/zynq_zc702_defconfig` 文件以启用或修改有关串行通信的相关选项: ```bash vim configs/zynq_zc702_defconfig ``` 在此文件内查找关于 ttyPS(即 Xilinx 提供的标准 UART 控制器)或其他自定义 UART 实现的设置项,并按照需求开启相应的 Kconfig 参数。 #### 软件驱动支持 Xilinx 自身提供的工具集以及对应的软件驱动程序能够提供必要的底层访问能力给上层应用。从 2013.3/14.7 开始,官方就已经提供了对这类外设的良好兼容性保障,这意味着开发者可以直接利用这些资源来进行更高层次的应用开发而不必担心低级别的细节问题[^1]。 对于定制化的 UART16550 模块而言,除了依赖于厂商给出的基础框架之外,还应该编写专门的设备树节点描述符(DTS),用于告知操作系统该外围的具体属性;同时也要准备一套完整的字符设备接口函数集合,从而允许用户空间进程通过标准 I/O 流程与其交互。 ```dts &uart1 { compatible = "ns16550a"; reg = <...>; /* 基地址 */ interrupts = <...>; }; ``` 上述 DTS 片段展示了如何声明一个基于 NS16550A 架构的新 UART 设备实例。实际数值需依据具体情况填写。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒听雪落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值