基于ZYNQ-7000开发板的调试系列(3)

3. 基于PS的串口通讯

这一部分分为两个部分:

  1. 串口发送数据
  2. 串口接收数据

该部分最后会设计一个自动收发装置,即当上位机通过串口向开发板发送数据后,开发板会发回所有的数据。假定上位机发送的数据小于256位,这样可以用一个u8型即可以完成索引。

基于PS的串口通讯

该部分主要是使用串口收发数据,使用的资源是PS中MIO12、13两个IO口确定的UART1通道。然后其余无需任何其他资源。故而可以将AXI总线关闭。

1. 创建Block

1. 创建一个ZYNQ7 Processing System

主要修改一下几个部分:

  1. PS-PL Configuration 关闭AXI总线。
    PS-PL Configuration
  2. Peripheral I/O Pins 开启UART1。
    Peripheral I/O Pins3. DDR Configuration 修改DDR配置。
    DDR Configuration
    自动连接后创建HDL Wrapper后即可生成Bitstream文件,具体完成就是如下的样子。
    Diagram
    [参考自CREATE HDL WRAPPER的问题]
    主要是这段话:
    The Create HDL Wrapper dialog box lets you define a new HDL wrapper for the current block design. The wrapper defines the block design as the top-level design, so you can synthesize, implement, and generate a bitstream for the block design.

导出硬件配置时由于没有AXI总线参与,就不需要bitstream了,然后开始编写PS程序。
Export HardWare

2. PS程序编写

1. 初始化

通过Launch SDK打开Xilinx SDK。创建一个空的应用项目。这里使用串口,实际上这里直接可以使用HelloWorld模板。但是为了学习需要,这一部分还是先建立空白应用项目。
先引入一部分必须引入的模块:

#include "xparameters.h"
#include "xuartps.h"
#include "xil_printf.h"

然后是初始化和自检测环节:
用到的函数有

XUartPs_Config *XUartPs_LookupConfig(
	u16 DeviceId
); // 根据设备ID查看配置文件
s32 XUartPs_CfgInitialize(
	XUartPs *InstancePtr,
	XUartPs_Config * Config, 
	u32 EffectiveAddr
); // 初始化
s32 XUartPs_SelfTest(
	XUartPs *InstancePtr
); // 自测
void XUartPs_SetOperMode(
	XUartPs *InstancePtr, 
	u8 OperationMode
); // 设置工作模式
s32 XUartPs_SetBaudRate(
	XUartPs *InstancePtr, 
	u32 BaudRate
); // 设置波特率

这里最后最后这里需要稍微注意一下:

XUartPs_SetOperMode(
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值