zynq 的uart(ps)
初始化
int serial_init(void)
{int Status;XUartPs_Config *Config;Config = XUartPs_LookupConfig(UART_DEVICE_ID);if (NULL == Config) {return XST_FAILURE;}Status = XUartPs_CfgInitialize(&Uart_PS, Config, Config->BaseAddress);if (Status != XST_SUCCESS) {return XST_FAILURE;}/* Use Normal mode. */XUartPs_SetOperMode(&Uart_PS, XUARTPS_OPER_MODE_NORMAL);/* Set uart mode Baud Rate 115200, 8bits, no parity, 1 stop bit */XUartPs_SetDataFormat(&Uart_PS, &UartFormat) ;/*Set receiver FIFO interrupt trigger level, here set to 1*/#if 0 // 不使用中断XUartPs_SetFifoThreshold(&Uart_PS,1) ;/* Enable the receive FIFO trigger level interrupt and empty interrupt for the device */XUartPs_SetInterruptMask(&Uart_PS,XUARTPS_IXR_RXOVR|XUARTPS_IXR_TXEMPTY);SetupInterruptSystem(&IntcInstPtr, &Uart_PS, UART_INT_IRQ_ID) ;
#endifreturn XST_SUCCESS;
}
发送和接收
int Uart_Send(u8 *sendbuf, int length)
{int SentCount = 0;while (SentCount < length) {SentCount += XUartPs_Send(&Uart_PS, &sendbuf[SentCount], 1);}return SentCount;
}#define MAX_BUF_LEN 64
static char _uartBuf[MAX_BUF_LEN + 4];u32 serial_send(u8 *pBuf, u32 len)
{return XUartPs_Send(&Uart_PS, pBuf, len);
}u32 serial_get(u8 *pBuf, int len)
{return XUartPs_Recv(&Uart_PS, pBuf, len);
}void serial_puts(const char *fmt, ...)
{// Generate formatted string.s16 count;va_list vArgList;va_start(vArgList, fmt);count = vsnprintf(_uartBuf, MAX_BUF_LEN, fmt, vArgList);va_end(vArgList);if (MAX_BUF_LEN < count){count = MAX_BUF_LEN;}serial_send(_uartBuf, count);
}
需要的宏
#define UART_DEVICE_ID XPAR_XUARTPS_0_DEVICE_ID
#define INTC_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID
#define UART_INT_IRQ_ID XPAR_XUARTPS_1_INTR
静态变量
const XUartPsFormat UartFormat =
{115200,XUARTPS_FORMAT_8_BITS,XUARTPS_FORMAT_NO_PARITY,XUARTPS_FORMAT_1_STOP_BIT
};XUartPs Uart_PS; /* Instance of the UART Device */
XScuGic IntcInstPtr ;
zynq 的uart(ps)相关推荐
- ZYNQ学习笔记PS部分【基本介绍】
基于Zynq的嵌入式开发流程 Xilinx Zynq SoC 是集成了FPGA和硬核处理器的特殊SoC,它与一般FPGA的最大不同就是自带了一个ARM Cortex-A系列硬核,根据型号不同从A9到A ...
- ZYNQ开发系列——PS开发之HelloWorld
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS开发之HelloWorld 前言 外设接口 SDK建立工程相关操作记录 前言 俗话说一日不见,如隔三秋.两年没 ...
- ZYNQ开发系列——PS响应PL中断请求
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS响应PL中断请求 前言 中断的设置 PS部分代码 前言 PS和PL的交互中,还有一个中断没有讲到,在<从 ...
- ZYNQ开发系列——PS和PL交互之PS端开发
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS和PL交互之PS端开发 前言 函数封装 后记 前言 前面<ZYNQ开发系列--使用AXI4LITE接口进 ...
- zcu102 zynq Mpsoc uart hello world
初识zcu102,第一步就是来一个hello world起航,瞎折腾了一番,总结并分享给各位,希望大家少走弯路. 希望读者,能够按图索骥,不费力气,尽快上手,以便利用此高大上的设备为祖国建设做贡献. ...
- ZYNQ AXI总线 PS与PL内部通信(用户自定义IP)
ZYNQ .AXI协议.PS与PL内部通信 三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映 ...
- ddr传输 pl ps_Vitis ZYNQ开发秘籍 PS 端任意控制 VGA 显示画面最终实现
上一篇文章,<Vitis ZYNQ开发秘籍>- PS 端任意控制 VGA 显示画面的硬件架构,已经介绍了在 Vivado 中需要调用的 IP 已经各 IP 间的连线.而在实现显示的功能,咱 ...
- ZYNQ PL中断PS
原文地址: http://www.cnblogs.com/milinker/p/5906004.html 本篇文章主要介绍外设(PL)产生的中断请求,在PS端进行处理. 在PL端通过按键产生中断,PS ...
- zynq系列之-----PS端iic使用
本文主要讲述zynq的iic使用.此IIC只能作为主站,作为从站的不适合本文. Iic的接口在ps端.(iic的接口在pl端的情况下,不适合本文) 使用软件版本:vivado2018.3 pl端设置: ...
最新文章
- 【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )
- linux python自动补全_Linux下在python命令行中自动补全代码(py2、3,centos、ubuntu)...
- oracle 序列的使用
- SAP BCP 超时机制的实现
- matlab serial 38400,这个程序的波特率能帮我改到38400吗?
- initial、inherit、unset、revert和all
- python学习笔记2018-9-18
- 证明一下拉普拉斯的《概率分析论》观点
- Spring Cloud Zuul--服务网关
- 基于JSP的网上订餐管理系统
- Java 解压 gzip 和 tar.gz 文件
- 技术文档系列之架构设计文档模板
- 摄影测量简答题和作图题
- 【软考】2020下半年软件设计师 易错知识点(1)
- TMS570捕获多路PWM的可行性
- UE4 Gate效果
- windows安装软件出现“command line option syntax error”错误
- 留数的相关概念及定理
- 数据结构国际象棋中的马跳棋盘问题
- 计算机高中教育日志,高中日记范文