uart16550详细说明

news2025/5/18 23:22:26


一、介绍
uart16550 ip core异步串行通信IP连接高性能的微控制器总线AXI,并为异步串行通信提供了
控制接口。软核设计连接了axilite接口。

二、特性
1.axilite接口用于寄存器访问和数据传输
2.16650串口和16450串口的软件和硬件寄存器都是兼容的
3.默认的core配置参数:9600bps波特率,8bit数据+1bit停止位+无极性
4.实现所欲标准的串行接口协议:
-每个字符可以是5bit,7bit或者8bit
-odd,even,no parity检测和生成
-stop_bit:1bit,1.5bit,2bit;
-使用内部波特率生成,和使用独立的接收时钟xin来生成波特率
-modem控制功能
-优先级传输和接收,线状态,模式控制中断
-错误的起始bit检测和恢复
-线打断检测和生成
-内部loopback环回功能
-16个字符的传输FIFO和接收FIFO.

三、总体说明
1.uart16550的传输和接收是相互独立的
2.ip core有内部寄存器来监视状态和配置状态
3.中断是可以masked可屏蔽的,也是具有优先处理的;
4.ip core包含16bit可编程的baud-rate波特率生成;
5.16个字符长度的传输FIFO和接收FIFO
6.FIFO可以enable使用和disable关闭使用

四、接口
1.axilite接口:这个模块实现axilite slave接口用于寄存器访问和数据传输
2.串口控制:
rx控制:模块采样接收数据依据波特率来进行,并将采样的数据存在receive data fifo中;
tx控制:模块从传输FIFO中读取数据,然后通过tx接口将数据发送出去
波特率生成模块:这个模块生成可变的波特率,用于用户可编程
中断控制:ip core提供独立的中断使能和中断识别寄存器。如果中断使能,电平触发中断
生成。
接收线状态,接收有效的数据,字符超时,接收数据fifo为空,modem状态都会产生中断。


五、关键说明
1.uart16550的axilite在各种fpga芯片上能够跑的最大时钟频率不一样,但是大概range范围
为:fmax为120MHZ~220MHZ之间。
2.端口描述
ip2intc_irpt中断信号,设备产生的中断输出给微控制器中断输入或者系统的中断控制器输入
3.freeze冻结
这个信号是用于冻结uart串口。如果拉高,中断被disable,串口ip core内部状态机回到IDLE状态。
4.sin信号:serial data input传输数据输入,也就是rx;
5.sout信号:serial data output传输数据输出,也就是tx;
6.xin用于当使用外部时钟,用于生成波特率的参考时钟

六、寄存器空间
1.LCR寄存器的bit7管控寄存器空间的内部寄存器的访问权限
2.寄存器空间总共有8个寄存器地址,但是有好多个不同的寄存器使用同一个寄存器的地址;
-接收buffer寄存器和发送保持寄存器都是使用0x1000这个寄存器地址;divisor latch低字节寄存器使用的也是0x1000这个寄存器;
-0x10004这个寄存器有时候代表中断使能寄存器,有时候代表divisor latch寄存器的高位;
3.这些寄存器复用,说明这些寄存器不能同时使用,只能分时复用!!!!!!!!串口性能有影响!!!!!---------这个地方是这样的吗??答案不是的!!

注意:

  • 发送与接收寄存器独立
    根据16550 UART标准协议和Xilinx官方文档(如PG142),接收缓冲寄存器(RBR)和发送保持寄存器(THR)是物理上分离的寄存器,地址分别为Base Address + 0(RBR读)和Base Address + 0(THR写)。
    这种地址复用是通过读写操作方向区分的

    • 读操作:访问Base Address + 0时,读取的是接收缓冲寄存器(RBR)的值。

    • 写操作:向Base Address + 0写入时,数据会被存入发送保持寄存器(THR)。
      因此,硬件层面并不存在“共用一个寄存器”的情况。

七、时钟和复位
1.系统时钟
2.xin时钟
xin时钟是外部时钟驱动,xin时钟频率不能太高,这个时钟如果使用,用于设置波特率的;
3.复位

八、编程顺序
1.指定异步数据传输格式,data bits,极性,校验,停止位,
以及divisor latch访问权限;主要是配置LCR寄存器;
2.写中断使能寄存器,用于激活独立的中断;
3.写FIFO控制寄存器,写FIFO,清理FIFO,设置FIFO触发门限
4.写DLR寄存器,配置波特率分频
5.中断产生后写中断服务程序的处理。

九、两个官网使用案例

上述两个案例的区别,是一个使用系统时钟作为参考,来产生波特率,一个是利用xin来产生波特率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2378849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抢跑「中央计算+区域控制」市场,芯驰科技高端智控MCU“芯”升级

伴随着整车EE架构的加速变革,中国高端车规MCU正在迎来“新格局”。 在4月23日开幕的上海国际车展期间,芯驰科技面向新一代AI座舱推出了X10系列芯片,以及面向区域控制器、电驱和动力域控、高阶辅助驾驶和舱驾融合系统等的高端智控MCU产品E3系…

day015-进程管理

文章目录 1. 服务开机自启动2. 进程3. 僵尸进程3.1 处理僵尸进程3.2 查看僵尸进程3.2 排查与结束僵尸进程全流程 4. 孤儿进程5. 进程管理5.1 kill三剑客5.2 后台运行 6. 进程监控命令6.1 ps6.1.1 ps -ef6.1.2 ps aux6.1.3 VSZ、RSS6.1.4 进程状态6.1.5 进程、线程 6.2 top6.2.1…

POWER BI添加自定义字体

POWER BI添加自定义字体 POWER BI内置27种字体,今天分享一种很简单的添加自定义字体的方法。以更改如下pbix文件字体为例: 第一步:将该pbix文件重命名为zip文件并解压,找到主题json文件,如下图所示: 第二步…

协议不兼容?Profinet转Modbus TCP网关让恒压供水系统通信0障碍

在现代工业自动化领域中,通信协议扮演着至关重要的角色。ModbusTCP和Profinet是两种广泛使用的工业通信协议,它们各自在不同的应用场合中展现出独特的优势。本文将探讨如何通过开疆智能Profinet转Modbus TCP的网关,在恒压供水系统中实现高效的…

ChatGPT + DeepSeek 联合润色的 Prompt 模板指令合集,用来润色SCI论文太香了!

对于非英语母语的作者来说,写SCI论文的时候经常会碰到语法错误、表达不够专业、结构不清晰以及术语使用不准确等问题。传统的润色方式要么成本高、效率低,修改过程又耗时又费力。虽然AI工具可以帮助我们来润色论文,但单独用ChatGPT或DeepSeek都会存在内容泛泛、专业性不足的…

全栈项目搭建指南:Nuxt.js + Node.js + MongoDB

全栈项目搭建指南:Nuxt.js Node.js MongoDB 一、项目概述 我们将构建一个完整的全栈应用,包含: 前端:Nuxt.js (SSR渲染)后端:Node.js (Express/Koa框架)数据库:MongoDB后台管理系统:集成在同…

RAGFlow Arbitrary Account Takeover Vulnerability

文章目录 RAGFlowVulnerability Description[1]Vulnerability Steps[2]Vulnerability Steps[3]Vulnerability Steps RAGFlow RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine developed by Infiniflow, focused on deep document understanding and d…

Python 之 Flask 入门学习

安装 Flask 在开始使用 Flask 之前,需要先安装它。可以通过 pip 命令来安装 Flask: pip install Flask创建第一个 Flask 应用 创建一个简单的 Flask 应用,只需要几行代码。以下是一个最基本的 Flask 应用示例: from flask imp…

【Ragflow】22.RagflowPlus(v0.3.0):用户会话管理/文件类型拓展/诸多优化更新

概述 在历经三周的阶段性开发后,RagflowPlus顺利完成既定计划,正式发布v0.3.0版本。 开源地址:https://github.com/zstar1003/ragflow-plus 新功能 1. 用户会话管理 在后台管理系统中,新增用户会话管理菜单。在此菜单中&…

使用PocketFlow构建Web Search Agent

前言 本文介绍的是PocketFlow的cookbook中的pocketflow-agent部分。 回顾一下PocketFlow的核心架构: 每一个节点的架构: 具体介绍可以看上一篇文章: “Pocket Flow,一个仅用 100 行代码实现的 LLM 框架” 实现效果 这个Web S…

记录:echarts实现tooltip的某个数据常显和恢复

<template><div class"com-wapper"><div class"func-btns"><el-button type"primary" plain click"showPoint(2023)">固定显示2023年数据</el-button><el-button type"success" plain cli…

八股文--JVM(1)

⭐️⭐️JVM内存模型 程序计数器&#xff1a;可以看作是当前线程所执行的字节码的行号指示器&#xff0c;用于存储当前线程正在执行的 Java 方法的 JVM 指令地址。如果线程执行的是 Native 方法&#xff0c;计数器值为 null。是唯一一个在 Java 虚拟机规范中没有规定任何 OutOf…

从RPA项目说说RPC和MQ的使用。

去年我负责一个 RPA&#xff08;机器人流程自动化&#xff09;项目&#xff0c;帮某电商公司搭建订单处理系统。项目里有个场景特别有意思&#xff1a;当用户下单后&#xff0c;系统需要同时触发库存扣减、物流调度、积分发放三个模块。一开始我们想都没想&#xff0c;直接用 R…

UUG杭州站 | 团结引擎1.5.0 OpenHarmony新Feature介绍

PPT下载地址&#xff1a;https://u3d.sharepoint.cn/:b:/s/UnityChinaResources/EaZmiWfAAdFFmuyd6c-7_3ABhvZoaM69g4Uo2RrSzT3tZQ?e2h7RaL 在2025年4月12日的Unity User Group杭州站中&#xff0c;Unity中国OpenHarmony技术负责人刘伟贤带来演讲《团结引擎1.5.0 OpenHarmony新…

Vue3——父子组件通信

在Vue开发中&#xff0c;组件通信是核心概念之一。良好的组件通信机制能让我们的应用更加清晰、可维护。 父传子defineProps defineProps是一个编译时宏&#xff0c;仅在内部可用&#xff0c;不需要显式导入。声明的 props 会自动暴露给模板。 还返回一个对象&#xff0c;其中…

游戏引擎学习第276天:调整身体动画

运行游戏&#xff0c;演示我们遇到的拉伸问题&#xff0c;看起来不太好&#xff0c;并考虑切换到更顶视角的视角 我们开始讨论游戏开发中的一些美学决策&#xff0c;特别是在处理动画方面。虽然我们是游戏程序员&#xff0c;通常不负责设计或艺术部分&#xff0c;但因为这是一…

从开发者角度看数据库架构进化史:JDBC - 中间件 - TiDB

作者&#xff1a; Lucien-卢西恩 原文来源&#xff1a; https://tidb.net/blog/e7034d1b Java 应用开发技术发展历程 在业务开发早期&#xff0c;用 Java 借助 JDBC 进行数据库操作&#xff0c;虽能实现基本交互&#xff0c;但需手动管理连接、编写大量 SQL 及处理结果集&a…

Mipsel固件Fuzzing小记

Mipsel固件Fuzzing小记 0x01 准备 1.1 安装必要工具链 首先需要安装 MIPS 交叉编译工具链和相关依赖&#xff1a; sudo apt-get install -y gcc-mipsel-linux-gnu g-mipsel-linux-gnu binwalk qemu-user-static afl这些工具分别用于&#xff1a;交叉编译、固件解包、二进制…

本土DevOps革命:Gitee如何撬动中国企业的数字化转型新动能

在数字化浪潮席卷全球的背景下&#xff0c;中国企业正面临前所未有的转型压力与机遇。随着《数据安全法》和《个人信息保护法》的全面实施&#xff0c;以及信创产业政策的深入推进&#xff0c;研发工具链的自主可控已成为关乎企业核心竞争力的战略命题。在这一关键赛道上&#…

强化学习入门:马尔科夫奖励过程二

文章目录 前言1、动作2、策略总结 前言 最近想开一个关于强化学习专栏&#xff0c;因为DeepSeek-R1很火&#xff0c;但本人对于LLM连门都没入。因此&#xff0c;只是记录一些类似的读书笔记&#xff0c;内容不深&#xff0c;大多数只是一些概念的东西&#xff0c;数学公式也不会…