pynq-z2是一款PFGA的开发板,就是那个粉粉的板子,还挺贵。现在说如何使用它上面的uart0串口。
所需设备:
pynq-z2,可以传数据的USB线,电脑装有vivado软件

1.新建vivado工程,新建Block Design然后添加ZYNQ、GPIO等IP核,自动连线后可以得到如图的原理图:

  1. 完成顶层封装,然后综合实现生成比特流文件,导出xsa文件,硬件部分准备完毕

xsa文件:

set_property PACKAGE_PIN R14 [get_ports {led_0[0]}]
set_property PACKAGE_PIN P14 [get_ports {led_0[1]}]
set_property PACKAGE_PIN N16 [get_ports {led_0[2]}]
set_property PACKAGE_PIN M14 [get_ports {led_0[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_0[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_0[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_0[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led_0[3]}]
  1. 在vitis里面新建工程和cpp文件,同时建立BSP文件,编写串口通信代码,包括串口初始化,串口中断初始化以及中断处理函数。设置串口波特率为115200,接收一个bit则触发,中断模式为正常模式。
#include "xgpiops_hw.h"
#include <stdio.h>
#include "xil_printf.h"
#include "xuartps.h"
#include "xparameters.h"
#include "xscugic.h"
#include "xuartps_hw.h"#define LED_BASE XPAR_GPIO_0_S00_AXI_BASEADDR
#define UART_Device_Id  XPAR_PS7_UART_0_DEVICE_ID
#define INTC_DEVICE_ID  XPAR_SCUGIC_SINGLE_DEVICE_ID
#define UART_INT_IRQ_ID     XPAR_XUARTPS_0_INTR
#define INTC        XScuGicXUartPs UartPs;
INTC InterruptController;
void uart_init(XUartPs *UartInstPtr,u16 DeviceId)
{XUartPs_Config *Config;//根据ID查找配置信息Config = XUartPs_LookupConfig(DeviceId);//根据配置信息,初始化UARTXUartPs_CfgInitialize(UartInstPtr, Config, Config->BaseAddress);//设置波特率XUartPs_SetBaudRate(UartInstPtr, 115200);//设置触发阈值XUartPs_SetFifoThreshold(UartInstPtr, 1);//改变模式为正常模式XUartPs_SetOperMode(UartInstPtr, XUARTPS_OPER_MODE_NORMAL);
}
//中断处理函数
void UART_intr_handle(void *call_back_ref)
{XUartPs *uart_instance_ptr = (XUartPs *)call_back_ref;u32 rec_data = 0;u32 isr_status;//读取中断寄存器isr_status = XUartPs_ReadReg(uart_instance_ptr->Config.BaseAddress,XUARTPS_IMR_OFFSET);isr_status &= XUartPs_ReadReg(uart_instance_ptr->Config.BaseAddress,XUARTPS_ISR_OFFSET);//中断标志状态位,是否为RxFIFO触发if(isr_status & XUARTPS_IXR_RXOVR){rec_data = XUartPs_RecvByte(XPAR_PS7_UART_0_BASEADDR);XUartPs_WriteReg(uart_instance_ptr->Config.BaseAddress,XUARTPS_ISR_OFFSET,XUARTPS_IXR_RXOVR);//清除中断}XUartPs_SendByte(XPAR_PS7_UART_0_BASEADDR,rec_data);//将接受到的数据返回XGpioPs_WriteReg(LED_BASE,0,rec_data&0x0f);//将接收到的数据后4位写入LED的状态
}void uart_intr_int(INTC *IntcInstancePtr,XUartPs *UartInstancePtr,u16 UartIntrId)
{//UART控制器中断初始化XScuGic_Config *IntcConfig;IntcConfig = XScuGic_LookupConfig(INTC_DEVICE_ID);XScuGic_CfgInitialize(IntcInstancePtr, IntcConfig,IntcConfig->CpuBaseAddress);Xil_ExceptionInit();Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler) XScuGic_InterruptHandler,IntcInstancePtr);XScuGic_Connect(IntcInstancePtr, UartIntrId,(Xil_ExceptionHandler) UART_intr_handle,(void *) UartInstancePtr);XUartPs_SetInterruptMask(UartInstancePtr, XUARTPS_IXR_RXOVR);//设置触发leixXScuGic_Enable(IntcInstancePtr, UartIntrId);//使能中断设备Xil_ExceptionEnable();
}
int main()
{//初始化uart_init(&UartPs,UART_Device_Id);//UART控制器初始化uart_intr_int(&InterruptController, &UartPs,UART_INT_IRQ_ID);//收发数据print("Hello World\n\r");//打印hello World检测程序是否正常运行while(1){}return 0;
}

这样就实现了串口的双向传递,并利用了串口接收的数据去控制LED状态,比如,串口发送0x0a,LED灯就会按1010点亮.

pynq-z2上uart0的串口通信相关推荐

  1. 如何在ubuntu上用c++串口通信_让你搞懂PLC串口通讯和通讯接口,这东西估计没几个能说清楚~...

    电力作业人员在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗? 1,什么是串口通讯? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线 ...

  2. 51单片机C语言波特率十六进制,理解51单片机串口通信的波特率与USB转串口通信...

    RS232 在我们电脑上,一般都会有一个9针的串行接口,这个串行接口叫做RS232接口,它和UART通信有关联,但是由于现在笔记本电脑不带9针串口,所以和单片机通信越来越趋于使用USB虚拟串口. 九针 ...

  3. UART串口通信浅谈之(一)--基础概述

    通信按照传统的理解就是信息的传输与交换.UART(Universal Asynchronous Receiver/Transmitter,即通用异步收发器)串行通信是单片机最常用的一种通信技术,通常用 ...

  4. matlab gul介绍及串口通信实现,Matlab - GUl介绍及串口通信实现(转)

    新建Blank GUI. 在新建Blank GUI界面中,包含了一般的界面元素,如菜单.按钮.坐标轴.控件等.添加必要的串口通信参数设置按钮. 2 串口数据发送与接收功能实现 2.1 建立串口通信流程 ...

  5. 计算机串口连接原理,串口通信的原理及USB转串口通信

    串口通信的原理 串口通信(SerialCommunicaTIons)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  6. 9-《电子入门趣谈》第一章_一切从单片机开始-1.3.6串口通信

    好消息:请在手机淘宝或闲鱼上搜索"电子入门趣谈",有惊喜哦 :) 我把全本电子入门趣谈的电子版(包括科技提升和理论升华部分,共计50余万字)放到上面开始兜售啦,如果您真的喜欢这本书 ...

  7. 51单片机串口通信模板_深入理解51单片机串口通信及通信实例

    串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  8. 单片机:11.UART串口通信

    原文地址:https://blog.csdn.net/Qingzhusshuiyun/article/details/78236798 通信按照传统的理解就是信息的传输与交换.对于单片机来说,通信则与 ...

  9. RS232与UART串口通信

    通信,按照传统的理解就是信息的传输与交换.对于单片机来说,通信则与传感器.存储芯片.外围控制芯片等技术紧密结合,成为整个单片机系统的"神经中枢".没有通信,单片机所实现的功能仅仅局 ...

最新文章

  1. 苹果公司揭秘首批列入 Swift 源代码兼容性开源项目清单
  2. 《模式识别导论》特性选择与特征提取概要
  3. 跟我学 Java 8 新特性之 Stream 流(六)收集
  4. 自动化日志收集及分析在支付宝 App 内的演进
  5. hive学习08天-一次hvie面试题
  6. Java继承知识之基本控制语句(if、switch与穿透现象)
  7. sqlite 交叉编译-转
  8. 约瑟夫问题(猴子选大王)
  9. BZOJ1013球形空间产生器sphere 高斯消元
  10. c#DataGridView响应键盘事件
  11. A - Silver Cow Party(最短路径+矩阵转换)
  12. 我的希捷ST31000340NS,BIOS不认,磁头反复归位,BUSY模式的固件门硬盘修复成功
  13. MAC 破解百度网盘限速
  14. 网页截图插件FireShot
  15. 使用搜狗翻译实现网页多国语言转换
  16. 高斯消元法原理与Matlab实现
  17. BIOS中VT虚拟技术已经开启,但任务管理器中仍显示虚拟化已禁用
  18. surface book 3 结束休眠之后风扇狂转
  19. 程序员是如何开灯的 白话闲聊mqtt协议
  20. 使用Centreon监控HP惠普服务器硬件状态

热门文章

  1. 微信扫码拉起小程序手机号授权跨端登录
  2. currentstyle 织梦_dede织梦 arclist标签完美支持currentstyle属性
  3. 世界各地区WIFI 6GHz频段分配现状
  4. 数据库(SQL Sever) QQ查询
  5. 2019CCPC江西省赛(重现赛)| 题目 题解
  6. 开发iPhone应用程序(一)
  7. 【activiti】activiti环境配置
  8. SSH服务器拒绝密码,再试一次;PermitRootLogin yes无效问题
  9. access能接trunk口_ACCESS改trunk口
  10. 交换机trunk口即便开发所有的vlan,如果没有在交换机上创建对应的vlan也不会进行转发。