初始化

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)相关推荐

  1. ZYNQ学习笔记PS部分【基本介绍】

    基于Zynq的嵌入式开发流程 Xilinx Zynq SoC 是集成了FPGA和硬核处理器的特殊SoC,它与一般FPGA的最大不同就是自带了一个ARM Cortex-A系列硬核,根据型号不同从A9到A ...

  2. ZYNQ开发系列——PS开发之HelloWorld

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS开发之HelloWorld 前言 外设接口 SDK建立工程相关操作记录 前言 俗话说一日不见,如隔三秋.两年没 ...

  3. ZYNQ开发系列——PS响应PL中断请求

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS响应PL中断请求 前言 中断的设置 PS部分代码 前言 PS和PL的交互中,还有一个中断没有讲到,在<从 ...

  4. ZYNQ开发系列——PS和PL交互之PS端开发

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS和PL交互之PS端开发 前言 函数封装 后记 前言 前面<ZYNQ开发系列--使用AXI4LITE接口进 ...

  5. zcu102 zynq Mpsoc uart hello world

    初识zcu102,第一步就是来一个hello world起航,瞎折腾了一番,总结并分享给各位,希望大家少走弯路. 希望读者,能够按图索骥,不费力气,尽快上手,以便利用此高大上的设备为祖国建设做贡献. ...

  6. ZYNQ AXI总线 PS与PL内部通信(用户自定义IP)

    ZYNQ .AXI协议.PS与PL内部通信  三种AXI总线分别为: AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映 ...

  7. ddr传输 pl ps_Vitis ZYNQ开发秘籍 PS 端任意控制 VGA 显示画面最终实现

    上一篇文章,<Vitis ZYNQ开发秘籍>- PS 端任意控制 VGA 显示画面的硬件架构,已经介绍了在 Vivado 中需要调用的 IP 已经各 IP 间的连线.而在实现显示的功能,咱 ...

  8. ZYNQ PL中断PS

    原文地址: http://www.cnblogs.com/milinker/p/5906004.html 本篇文章主要介绍外设(PL)产生的中断请求,在PS端进行处理. 在PL端通过按键产生中断,PS ...

  9. zynq系列之-----PS端iic使用

    本文主要讲述zynq的iic使用.此IIC只能作为主站,作为从站的不适合本文. Iic的接口在ps端.(iic的接口在pl端的情况下,不适合本文) 使用软件版本:vivado2018.3 pl端设置: ...

最新文章

  1. 【Java 并发编程】线程操作原子性问题 ( 问题业务场景分析 | 使用 synchronized 解决线程原子性问题 )
  2. linux python自动补全_Linux下在python命令行中自动补全代码(py2、3,centos、ubuntu)...
  3. oracle 序列的使用
  4. SAP BCP 超时机制的实现
  5. matlab serial 38400,这个程序的波特率能帮我改到38400吗?
  6. initial、inherit、unset、revert和all
  7. python学习笔记2018-9-18
  8. 证明一下拉普拉斯的《概率分析论》观点
  9. Spring Cloud Zuul--服务网关
  10. 基于JSP的网上订餐管理系统
  11. Java 解压 gzip 和 tar.gz 文件
  12. 技术文档系列之架构设计文档模板
  13. 摄影测量简答题和作图题
  14. 【软考】2020下半年软件设计师 易错知识点(1)
  15. TMS570捕获多路PWM的可行性
  16. UE4 Gate效果
  17. windows安装软件出现“command line option syntax error”错误
  18. 留数的相关概念及定理
  19. 数据结构国际象棋中的马跳棋盘问题
  20. 计算机高中教育日志,高中日记范文

热门文章

  1. 关于Adobe Audition的相关问题
  2. 推荐技术简历撰写指南(后附模板)
  3. (二)性能测试-理发店模型
  4. 迅为2K1000龙芯开发板pmon 下操作 GPIO
  5. android加载efi分区,节约磁盘空间! 删除安卓 EFI-PE分区教程
  6. JavaScript UTF8和UCS2编码转换
  7. Android耗电量线下监控: Battery Historian
  8. matlab 计算雅可比矩阵的lorenz李雅普图
  9. 论信息系统项目风险管理
  10. python 抓取 国美价格地址