@

套路如下:

1、定义硬件信息结构体

  1. namePs_Config *Config;

2、定义驱动信息结构体

  1. namePs name_Ps;

3、根据设备号和自动生成的硬件.c文件,获取外设硬件信息

  1. Config = namePs_LookupConfig(DEVICE_ID); //uart0、SD0都是0,uart1、SD1都是1

4、调用外设初始化函数对name_Ps赋值,后期就只需用name_Ps进行各种操作了!

  1. Status = namePs_CfgInitialize(&name_Ps, Config, Config->BaseAddress);
  2. if (Status != XST_SUCCESS)
  3. {
  4. return XST_FAILURE;
  5. }

5、这一步不同外设就不同了:调用配置函数对外设进行配置,例如uart就设置波特率等,MIO就设置输入输出等。。。

UART 串口

ZYNQ使用的UART1,在PL中使能。使用时想在PS改下串口波特率,发现代码中没有串口初始化函数。

BSP中有串口初始化函数,是以中断方式初始化的,但是没有调用。

  1. int UartPDSA_Initiation(XScuGic *IntcInstPtr, XUartPDSA *xptrUartRs232, u16 DeviceId, u16 UartIntrId)

后使用如下代码,加在main()函数中即可改变波特率:

  1. XUartPs_Config *Config;
  2. XUartPs Uart_Ps;
  3. Config = XUartPs_LookupConfig(1);//UART0写0,UART1写1
  4. if (NULL == Config)
  5. {
  6. return XST_FAILURE;
  7. }
  8. Status = XUartPs_CfgInitialize(&Uart_Ps, Config, Config->BaseAddress);
  9. if (Status != XST_SUCCESS)
  10. {
  11. return XST_FAILURE;
  12. }
  13. XUartPs_SetBaudRate(&Uart_Ps, 128000);//写入想用的波特率

是PL完成了串口初始化?SDK 的BSP完成的初始化?

偶然在官方例程发现:UART被bootrom初始化完成:


GPIO之 MIO控制 LED

MIO0、7、8接LED灯

  1. #include "xparameters.h" //器件参数信息
  2. #include "xstatus.h" //包含XST_FAILURE和XST_SUCCESS的宏定义
  3. #include "xil_printf.h" //包含print()函数
  4. #include "xgpiops.h" //包含PS GPIO的函数声明
  5. #include "sleep.h" //包含sleep()函数
  6. //宏定义GPIO_DEVICE_ID
  7. #define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
  8. //连接到MIO的LED
  9. #define MIOLED0 7 //连接到MIO7
  10. #define MIOLED1 8 //连接到MIO8
  11. #define MIOLED2 0 //连接到MIO0
  12. XGpioPs Gpio; // GPIO设备的驱动程序实例
  13. int main()
  14. {
  15. int Status;
  16. XGpioPs_Config *ConfigPtr;
  17. print("MIO Test! \n\r");
  18. ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
  19. Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr,
  20. ConfigPtr->BaseAddr);
  21. if (Status != XST_SUCCESS){
  22. return XST_FAILURE;
  23. }
  24. //设置指定引脚的方向:0输入,1输出
  25. XGpioPs_SetDirectionPin(&Gpio, MIOLED0, 1);
  26. XGpioPs_SetDirectionPin(&Gpio, MIOLED1, 1);
  27. XGpioPs_SetDirectionPin(&Gpio, MIOLED2, 1);
  28. //使能指定引脚输出:0禁止输出使能,1使能输出
  29. XGpioPs_SetOutputEnablePin(&Gpio, MIOLED0, 1);
  30. XGpioPs_SetOutputEnablePin(&Gpio, MIOLED1, 1);
  31. XGpioPs_SetOutputEnablePin(&Gpio, MIOLED2, 1);
  32. while (1) {
  33. XGpioPs_WritePin(&Gpio, MIOLED0, 0x0); //向指定引脚写入数据:0或1
  34. XGpioPs_WritePin(&Gpio, MIOLED1, 0x0);
  35. XGpioPs_WritePin(&Gpio, MIOLED2, 0x0);
  36. sleep(1); //延时1秒
  37. XGpioPs_WritePin(&Gpio, MIOLED0, 0x1);
  38. XGpioPs_WritePin(&Gpio, MIOLED1, 0x1);
  39. XGpioPs_WritePin(&Gpio, MIOLED2, 0x1);
  40. sleep(1);
  41. }
  42. return XST_SUCCESS;
  43. }

ZYNQ 驱动初始化套路--UART串口的更多相关文章

  1. ARM-Linux S5PV210 UART驱动(5)----串口的open操作(tty_open、uart_open)

    串口驱动初始化后,串口作为字符驱动也已经注册到系统了,/dev目录下也有设备文件节点了. 那接下来uart的操作是如何进行的呢? 操作硬件之前都是要先open设备,先来分析下这里的open函数具体做了 ...

  2. ARM-Linux S5PV210 UART驱动(4)----串口驱动初始化过程

    对于S5PV210 UART驱动来说,主要关心的就是drivers/serial下的samsung.c和s5pv210.c连个文件. 由drivers/serial/Kconfig: config S ...

  3. linux UART串口驱动开发文档

    转:http://www.360doc.com/content/10/0417/18/829197_23519037.shtml linux UART串口驱动开发文档时间:2010-01-09 14: ...

  4. ARM-Linux S5PV210 UART驱动(3)----串口核心层、关键结构体、接口关系

    尽管一个特定的UART设备驱动完全可以按照tty驱动的设计方法来设计,即定义tty_driver并实现tty_operations其中的成员函数,但是Linux已经在文件serial_core.c中实 ...

  5. 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  6. (三) UART 串口通讯

    UART  : university asynchronous receiver and transmitter UART  // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏 ...

  7. 【C51】UART串口通信

    我们常需要单片机和其他模块进行通信,数据传输,常用的方式就是串口通信技术. 常用来 单片机<-->电脑,  单片机<-->单片机之间通信. 串行通信 versus 并行通信 并 ...

  8. Uart串口

    title: Uart串口 tags: ARM date: 2018-10-20 16:38:28 --- Uart串口 和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的 ...

  9. 第十六章 IIC协议详解+UART串口读写EEPROM

    十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...

随机推荐

  1. 3.HTTP协议详解

    ### Web核心+HTTP协议 准备工作:XAMPP+PhpWindd+Aglieone HTTP协议简介 HTTP请求 最常用请求 GET请求获取URL所标识的资源 POST请求在URL所标识的资 ...

  2. treevalue——Master Nested Data Like Tensor

    首先,请和我一起高呼--"treevalue--通用树形结构建模工具 + 极简树形结构编程模型". 咳咳,好久没更新了,这一次是真的好久不见,甚是想念.在之前的三期中,关于 tre ...

  3. 【Azure 应用服务】应用代码需要客户端证书进行验证,部署到App Service后,如何配置让客户端携带证书呢?

    问题描述 .NET 6 MVC应用,代码中要求客户端访问时候必须携带正确的证书,如果不携带或者携带错误的证书,都会得到 HTTP ERROR 403 Forbidden 错误 在App Service ...

  4. WMI简介和Event驻留

      WMI (Windows Management Instrumentation,Windows管理规范) 从Windows 2000开始被包含于操作系统后,就一直是Windows操作系统的一部分. ...

  5. python的format

    python的format 就是一个参数传递+格式化的过程 参数传递 1.位置传递,默认 fmt = "{} {}" fmt.format("hello",&q ...

  6. SQL Server 索引结构

    索引是数据库的基础,只有先搞明白索引的结构,才能搞明白索引运行的逻辑 本文通过 索引表.数据页.执行计划.IO统计.B+Tree 来尽可能的介绍 SQL 语句中 WHERE 部分,和 SELECT 部 ...

  7. jmeter & 性能测试:从0到实战(实操易用、面试造火箭、升职加薪必备)

    [性能基础] 性能测试概念.术语:https://www.cnblogs.com/uncleyong/p/10706519.html 性能测试流程(新):https://www.cnblogs.com ...

  8. Renix软件如何建立OSPF邻居——网络测试仪实操

    OSPF可以通过OSPF向导的方式方便的创建OSPF邻居, 也可以通过纯手工的方式创建OSPF邻居, 本文介绍的是纯手工的方式创建. 在工作中, 推荐使用OSPF向导的方式来创建, 会比较简单和高效. ...

  9. docker安装以及常用命令

    yum-config-manager 对/etc/yum.repos.d/下的.repo文件进行增删改查 yum install -y yum-utils 添加docker源,由于yum源的docke ...

  10. 五、ES6之对象

    一.对象和属性和方法 JavaScript中对象: var person={name:"Jack",age:20}; 或: var name = "jack"; ...