【【FPGA 之Micro Blaze的串口中断实验】】

FPGA 之Micro Blaze的串口中断实验

我们在使用 MicroBlaze 进行嵌入式系统设计的时候,通常会用到 AXI Uartlite IP 核与外部设备通信。AXI UART IP 核实现了 RS-232 通讯协议,并使得大家可以设置串口通信相关的波特率、奇偶校验位、停止位和数据位等参数。
AXI UART Lite IP 核具有以下特点:
对通过 axi4-lite 接口接收的字符执行并行到串行转换,并对从串行外围设备接收的字符执行串行到并行转换。
发送和接收 8、7、6 或 5 位字符,有一个停止位,并支持奇数、偶数或无奇偶位的配置。AXI UART Lite可以独立传输和接收数据。

对 通过 axi4-lite 接口接收的字符 执行 并转串 再把 对 外围设备接收的字符执行 串 转 并
在这里插入图片描述

AXI Interface(AXI 接口):该模块实现了用于寄存器访问和数据传输的 AXI4-LITE 从接口。
UART Lite Registers(UART Lite 寄存器模块):此模块包括内存映射寄存器。它由一个控制寄存器、
一个状态寄存器和一对发射/接收 FIFO 组成,两个 FIFO 都有 16 个字符的深度。当接收 FIFO 变为非空或当
发送 FIFO 变为空时,生成上升沿敏感的中断。此中断可以通过使用中断启用/禁用信号来屏蔽。
UART Control(UART 控制模块):该模块包括 Rx Control(接收控制)、Tx Control(发送控制)、
BRG (Baud Rate Generator)和 Interrupt Control(中断控制)四个模块。
AXI UART IP 核提供了 AXI4-Lite 接口,我们可以通过 AXI4-Lite 接口读取状态寄存器或配置 UART Control 模块(复位收发 FIFO、启用中断)。当 AXI UART 接收到上位机发送的数据后,Rx Control 模块根据 BRG 模块产生的波特率将串行的数据转化成并行数据,写入接收 FIFO,然后处理器通过 AXI4-Lite 接口读出接收 FIFO 中的数据;处理器中的数据也可以通过 AXI4-Lite 接口写入发送 FIFO,然后经 Tx Control根据 BRG 模块产生的波特率将并行数据转化为串行数据发送出去。

实验任务 : 是根据 AXI UART IP 核产生的中断信号,完成串口数据的收发。
在这里插入图片描述

这是我们 添加中断之后的 block design

在这里插入图片描述

因为只是对 UART进行 中断插入 所以我们只需要添加 1个 中断 即可

下面是附带的main.c 的代码

#include "xil_exception.h"#include "xdebug.h"#include "xparameters.h"#include "xintc.h"#include "xuartlite.h"#include "xuartlite_l.h"#define UART_DEVICE_ID XPAR_UARTLITE_0_DEVICE_ID //串口器件 ID#define UART_INTR_ID XPAR_INTC_0_UARTLITE_0_VEC_ID //串口中断 ID#define INTC_ID XPAR_INTC_0_DEVICE_ID //中断控制器 ID#define RX_NOEMPTY XUL_SR_RX_FIFO_VALID_DATA // 接收 FIFO 非空static XIntc Intc; //中断控制器实例static XUartLite Uart; //串口实例void uart_handler(void *CallbackRef);int main(void){//初始化串口设备XUartLite_Initialize(&Uart , UART_DEVICE_ID);//初始化中断控制器XIntc_Initialize(&Intc, INTC_ID);//关联处理函数XIntc_Connect(&Intc, UART_INTR_ID,(XInterruptHandler)uart_handler,&Uart);//使能串口XUartLite_EnableInterrupt(&Uart);//打开中断控制器XIntc_Start(&Intc, XIN_REAL_MODE);
//使能中断控制器XIntc_Enable(&Intc,UART_INTR_ID);//设置并打开中断异常处理功能Xil_ExceptionInit();Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XIntc_InterruptHandler , &Intc);Xil_ExceptionEnable();while(1);}void uart_handler(void *CallbackRef)//中断处理函数{u8 Read_data;u32 isr_status;XUartLite *InstancePtr= (XUartLite *)CallbackRef;//读取状态寄存器isr_status = XUartLite_ReadReg(InstancePtr->RegBaseAddress ,XUL_STATUS_REG_OFFSET);if(isr_status & RX_NOEMPTY){ //接收 FIFO 中有数据//读取数据Read_data=XUartLite_ReadReg(InstancePtr->RegBaseAddress ,XUL_RX_FIFO_OFFSET);//发送数据XUartLite_WriteReg(InstancePtr->RegBaseAddress ,XUL_TX_FIFO_OFFSET, Read_data);}}

我们之前对 中断进行了分析 所以这里应该没有什么大问题

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

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

相关文章

前端OFD文件预览(vue案例cafe-ofd)

0、提示 下面只有vue的使用示例demo ,官文档参考 cafe-ofd - npm 其他平台可以参考 ofd - npm 官方线上demo: ofd 1、安装包 npm install cafe-ofd --save 2、引入 import cafeOfd from cafe-ofd import cafe-ofd/package/index.css Vue.use(cafeOfd) 3、使…

数据可视化工具APITable:实现强大的多维表格功能并随时随地远程访问

APITable免费开源的多维表格与可视化数据库公网远程访问 文章目录 APITable免费开源的多维表格与可视化数据库公网远程访问前言1. 部署APITable2. cpolar的安装和注册3. 配置APITable公网访问地址4. 固定APITable公网地址 前言 vika维格表作为新一代数据生产力平台&#xff0c…

kubectl系列(五)-kubectl scale 命令最佳实践

1 概述 kubectl scale命令通过调整正在运行的容器的数量来立即缩放应用程序。这是增加部署副本数量的最快、最简单的方法,可用于应对服务高峰以及日常维护变更。 在本文中将了解如何使用kubectl scale来扩展一个简单的Kubernetes Deployment,同时还将更…

kobs-ng 烧写nand中的uboot

如何获取kobs-ng 我是使用buildroot自动编译的imx-kobs,生成了kobs-ng可执行文件。 使用 kobs-ng 烧写 u-boot 1. flash_erase /dev/mtd0 0 0 //擦除uboot所在分区 2. 挂载 debugfs mount -t debugfs debugfs /sys/kernel/debug 如果不挂载为报以下错误&#x…

Java中的synchronized关键字

目录 1、synchronized是什么 2、synchronized的用法 synchronized可以用在方法或者代码块上,分别称为同步方法和同步代码块。 用法理解 3、synchronized的实现原理 ⭐synchronized锁的对比 4、synchronized的优缺点 ⭐扩展:synchronized 和 vola…

nvm安装管理nodejs版本

1:如果之前先安装了nodejs先卸载nodejs 2:下载nvm,点击下载路径https://github.com/coreybutler/nvm-windows/releases,选择相应环境下载,如下window环境下载 下载成功后,选择NVM安装在哪个文件目录下&…

IDEA之Eclipse Code Formatter插件的安装与使用

概述 Eclipse、Intellij idea格式化结果不同,之前由于没有Eclipse Code Formatter插件,所以公司统一用eclipse做开发,但是我们都知道IDEA是非常强大、也非常的方便,很多功能是eclipse不具备的,只是我们公司统一用&…

【隐私计算】VOLE (Vector Oblivious Linear Evaluation)学习笔记

近年来,VOLE(向量不经意线性评估)被用于构造各种高效安全多方计算协议,具有较低的通信复杂度。最近的CipherGPT则是基于VOLE对线性层进行计算。 1 VOLE总体设计 VOLE的功能如下,VOLE发送 Δ \Delta Δ和 b b b给send…

【论文阅读笔记】InstructDiffusion: A Generalist Modeling Interface for Vision Tasks

【论文阅读笔记】StyleAvatar3D: Leveraging Image-Text Diffusion Models for High-Fidelity 3D Avatar Generation 论文阅读笔记论文信息引言动机挑战 方法结果 关键发现相关工作1. 视觉语言基础模型2. 视觉通用模型 方法/模型视觉任务的统一说明训练数据构建网络结构 实验设…

全网最新最全面的Jmeter接口测试:jmeter模拟http请求实战

1、get请求 http://www.hnxmxit.com/ 2、带参数的get请求 微信公众号获取token请求 3、自定义头部信息的请求 百度搜索请求 https://www.baidu.com/s?wd猫 4、post请求 微信公众号添加用户标签请求 注:post请求中如果body中的数据为json,一定要在信息头管理器中…

编译原理头歌实验:实验1《词法分析程序设计与实现》(C语言版)

任务描述 本关任务:加深对词法分析器的工作过程的理解;加强对词法分析方法的掌握;能够采用一种编程语言实现简单的词法分析程序;能够使用自己编写的分析程序对简单的程序段进行词法分析。 相关知识 为了完成本关任务&#xff0…

Qt应用开发--国产工业开发板全志T113-i的部署教程

Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用,因其跨平台性和丰富的功能而备受青睐。 Qt能够为工业领域带来什么好处: -…

袋鼠云产品功能更新报告08期|近百项全新功能和优化,你要的都在这里!

欢迎来到袋鼠云08期产品功能更新报告!在瞬息万变的市场环境中,我们深知客户的需求与期待,因此,我们及时推出袋鼠云最新产品更新及优化,包括数据治理中心、Hive SQL 性能优化、新插件等,助力企业在数字世界中…

Golang分布式事务

引言 在分布式系统中,事务管理是一项非常重要的任务。分布式事务涉及到多个事务参与者之间的协调和一致性保证,同时还要解决网络延迟、故障恢复等问题。Golang作为一门强大的编程语言,提供了一些工具和框架来帮助开发人员实现分布式事务。本…

awk从放弃到入门(11):拾遗之”三元运算”与”打印奇偶行”

awk从放弃到入门(11):拾遗之”三元运算”与”打印奇偶行” 三元运算打印奇偶行 本博文转载自 这篇文章中的知识点是建立在前文的基础上的,如果你还没有掌握前文中的知识,请先参考之前的文章。 这篇文章其实是对之前知…

英语翻译小软件 ← Python实现

【程序描述】 利用Python实现一个英语翻译小软件。 ★ 当输入一个英文单词后,输出对应的中文意思。 ★ 当输入 q 时,退出程序。 ★ 当输入一个不存在的词条时,捕获异常,提示“No finding!”。【程序代码】 dict{&quo…

IOS/安卓+charles实现抓包(主要解决证书网站无法打开问题)

安装 官网下载 https://www.charlesproxy.com/latest-release/download.do 安装charles文档 流程 上述链接解决下图问题 使用介绍 Charles介绍 上述链接看一至三即可,了解首页各个按钮的作用 charles全面使用教程及常见功能详解(较详细&#xff09…

Vim编辑器使用

替换全部 :%s/search_string/replace_string/g 撤销 u 撤销 ctrl r 取消撤销 换行 下移动一行 -上移动一行 删除 插入模式删除字符 Ctrl U

netty源码:(1)NioEventLoopGroup

EventLoopGroup bossGroup new NioEventLoopGroup(); 不加参数创建NioEventLoopGroup的话,会使用cpu核数*2作为bossGroup的线程数。

二 使用GPIO的复用功能 利用USART 实现printf()

参考这篇: STM32串口通信详解 1. 关于USART USART ( universal synchronous / asynchronous receiver /transmitter) 是一种串行通讯协议 , 允许设备通过串行端口进行数据传输, USART 能够以同步或者异步的方式进行工作,在实际的运用中&…