@

套路如下:

1、定义硬件信息结构体

namePs_Config *Config;

2、定义驱动信息结构体

namePs name_Ps;

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

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

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

Status = namePs_CfgInitialize(&name_Ps, Config, Config->BaseAddress);
if (Status != XST_SUCCESS)
{
return XST_FAILURE;
}

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

UART 串口

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

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

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

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

XUartPs_Config *Config;
XUartPs Uart_Ps;
Config = XUartPs_LookupConfig(1);//UART0写0,UART1写1
if (NULL == Config)
{
return XST_FAILURE;
} Status = XUartPs_CfgInitialize(&Uart_Ps, Config, Config->BaseAddress);
if (Status != XST_SUCCESS)
{
return XST_FAILURE;
} XUartPs_SetBaudRate(&Uart_Ps, 128000);//写入想用的波特率

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

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


GPIO之 MIO控制 LED

MIO0、7、8接LED灯

#include "xparameters.h" //器件参数信息
#include "xstatus.h" //包含XST_FAILURE和XST_SUCCESS的宏定义
#include "xil_printf.h" //包含print()函数
#include "xgpiops.h" //包含PS GPIO的函数声明
#include "sleep.h" //包含sleep()函数 //宏定义GPIO_DEVICE_ID
#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID
//连接到MIO的LED
#define MIOLED0 7 //连接到MIO7
#define MIOLED1 8 //连接到MIO8
#define MIOLED2 0 //连接到MIO0 XGpioPs Gpio; // GPIO设备的驱动程序实例 int main()
{
int Status;
XGpioPs_Config *ConfigPtr; print("MIO Test! \n\r");
ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);
Status = XGpioPs_CfgInitialize(&Gpio, ConfigPtr,
ConfigPtr->BaseAddr);
if (Status != XST_SUCCESS){
return XST_FAILURE;
}
//设置指定引脚的方向:0输入,1输出
XGpioPs_SetDirectionPin(&Gpio, MIOLED0, 1);
XGpioPs_SetDirectionPin(&Gpio, MIOLED1, 1);
XGpioPs_SetDirectionPin(&Gpio, MIOLED2, 1);
//使能指定引脚输出:0禁止输出使能,1使能输出
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED0, 1);
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED1, 1);
XGpioPs_SetOutputEnablePin(&Gpio, MIOLED2, 1); while (1) {
XGpioPs_WritePin(&Gpio, MIOLED0, 0x0); //向指定引脚写入数据:0或1
XGpioPs_WritePin(&Gpio, MIOLED1, 0x0);
XGpioPs_WritePin(&Gpio, MIOLED2, 0x0);
sleep(1); //延时1秒
XGpioPs_WritePin(&Gpio, MIOLED0, 0x1);
XGpioPs_WritePin(&Gpio, MIOLED1, 0x1);
XGpioPs_WritePin(&Gpio, MIOLED2, 0x1);
sleep(1);
}
return XST_SUCCESS;
}

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. LeetCode随缘刷题之转化成小写字母

    这道题应该是最简单的一道题了把,简直在侮辱我. package leetcode.day_12_12; /** * 709. 转换成小写字母 * 给你一个字符串 s ,将该字符串中的大写字母转换成相同 ...

  2. SQL代码规范

    1.  建表规约 1)   表中字段名称 a)    表达是否概念的字段,必须使用is_xxx的方式命名,数据类型是bit b)    小数类型为decimal,禁止使用float和double. 说 ...

  3. SpringCloud--feign的配置加载

    spring cloud feign我们使用 @FeignClient注解,其中有几个核心属性: @AliasFor("name") String value() default ...

  4. 7、前端--jQuery简介、基本选择器、基本筛选器、属性选择器、表单选择器、筛选器方法、节点操作、绑定事件

    jQuery简介 宗旨:Write less, do more. 内部封装了js代码 是编程更加简单并且兼容所有的主流浏览器 版本:1.x 2.x 3.x # 可以使用3.x最新版 是第三方的类库:使 ...

  5. Solution -「LOCAL」解析电车

    \(\mathcal{Description}\)   给定 \(n\) 个点 \(m\) 条边的无向图,每条边形如 \((u,v,r)\),表示 \(u,v\) 之间有一条阻值为 \(r\Omega ...

  6. Spring Cloud之微服务注册到Eureka Server集群

    在Spring Cloud之服务注册中心搭建Eureka Server服务注册中⼼ - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中已经搭建好了Eureka Server集群,本文就利用 ...

  7. Java IO 技术

    文章目录 流的概念 IO 流类体系 InputStream / OutputStream Reader / Writer 文件字节流 文件字符流 缓冲字节流 缓冲字符流 字节数组流 数据流 转换流 序 ...

  8. BI可视化在线分析工具,推荐这2个BI工具!

    ​一.国外BI----tableau   BI平台Tableau帮助企业可视化和理解数据.它使组织能够通过PC或iPad连接,可视化和共享数据.用户可以轻松创建仪表板,发布甚至与同事,合作伙伴和客户共 ...

  9. 「Excel实用技巧」拿下这个报表工具,轻松给报表加水印!

    水印报表是什么?怎么给excel表格加水印? 许多时候,为了防止报表被盗.保护信息安全和保护版权,采用水印能够有效实现该需求.水印是为了防止报表被盗.进行真伪鉴别.版权保护等,而在报表中添加半透明的图 ...

  10. SQL SERVER 学习过程(一)

    还记得以前在学校的学习过数据库SQL SERVER 2008 R2 的教程,从学校毕业出来后的哪家单位基本没怎么使用过数据库,现在也忘得差不多了 做些相关的练习熟悉熟悉 --创建数据库-- creat ...