基于ZYNQ 的UART中断实验之串口写数据到DDR3中

1、参考

UG585
网络笔记

2、理论知识

参见上一次实验:基于ZYNQ 的UART中断实验

3、实验目的

练习使用UART的中断实验,并将接收到的数据写入到DDR3中。

4、实验过程

建立工程,设置并初始化串口中断,在运行程序之后,如果串口接收到N(1-63)个字节数据,则产生串口中断,Zynq响应中断,将数据从RXFIFO读出之后写入到DDR3预定的地址中。

5、实验平台

Microphase ZUS zynq7020 开发板。 串口使用 uart1[48,49]. DDR选择 MT41J256M16 RE-125,32bit. BANK1 = 1.8v.

6、Vivado 建立工程

block design 如下:
在这里插入图片描述

7、SDK的工程程序

main.c

/*
 * main.c
 *
 *  Created on: 2019年8月27日
 *      Author: admin
 */

#include "sys_intr.h"
#include "user_uart.h"

XScuGic Intc;       //GIC
XUartPs Uart_Ps;	//UART

void System_Init(void)
{
	Init_Intr_System(&Intc);
	Setup_Intr_Exception(&Intc);
	Uart_Intr_System(&Intc, &Uart_Ps, UART_INT_TRQ_ID);
}

int main(void)
{
	int Status;

	/* 串口初始化 */
	Status = Uart_Init(&Uart_Ps, UART_DEVICE_ID);
	if (Status == XST_FAILURE) {
		xil_printf("Uartps Failed\r\n");
		return XST_FAILURE;
	}
	System_Init();   //中断初始化
	while (1){
		sleep(1);
		xil_printf("Hello World!\r\n");
	}
	return Status;
}

sys_intr.h

/*
 * sys_intr.h
 *
 *  Created on: 2019年8月27日
 *      Author: admin
 */

#ifndef SRC_SYS_INTR_H_
#define SRC_SYS_INTR_H_

#include "xparameters.h"
#include "xil_exception.h"
#include "xdebug.h"
#include &#
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Zynq的EMIO(Extended Multiplexed IO)映射到PS(Processing System)端UART串口与外部PL(Programmable Logic)收发数据,需要进行以下步骤: 首先,打开Zynq的Vivado设计工具。创建一个新的工程,并选择适当的目标设备和项目名称。 然后,将Zynq的Processing System界面打开,并找到UART控制器。通过设置寄存器来配置UART的波特率、数据位、停止位等通信参数。确保UART控制器被使能和启用。 接下来,在Zynq的Block Design,添加一个Zynq Processing System实例。在引脚规划,将UART的引脚映射为EMIO模式,使其能够与外部PL通信。 在Block Design,添加AXI GPIO实例,用于控制PL上的UART串口发送和接收数据的引脚。 然后,创建一个AXI UART Lite IP核,并将其连接到Processing System的M_AXI_GP0总线。 在Block Design,连接AXI UART Lite的接收和发送接口到AXI GPIO实例的引脚。这样就可以将数据从PL的UART接口发送到外部设备,也可以从外部设备接收数据到PL的UART接口。 完成连接后,生成Bitstream并将其下载到FPGA。 在Petalinux系统,通过在设备树(device tree)配置UART串口和GPIO,来使EMIO与PS相关的外设得以识别并使用。 最后,在Linux系统,使用UART串口的相应设备节点来进行数据的收发。 综上所述,通过对EMIO引脚和AXI UART Lite的配置,以及在设备树的配置,就可以将Zynq的EMIO映射到PS端UART串口与外部PL收发数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值