ZYNQ 驱动初始化套路--UART串口
@
套路如下:
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串口的更多相关文章
- ARM-Linux S5PV210 UART驱动(5)----串口的open操作(tty_open、uart_open)
串口驱动初始化后,串口作为字符驱动也已经注册到系统了,/dev目录下也有设备文件节点了. 那接下来uart的操作是如何进行的呢? 操作硬件之前都是要先open设备,先来分析下这里的open函数具体做了 ...
- ARM-Linux S5PV210 UART驱动(4)----串口驱动初始化过程
对于S5PV210 UART驱动来说,主要关心的就是drivers/serial下的samsung.c和s5pv210.c连个文件. 由drivers/serial/Kconfig: config S ...
- linux UART串口驱动开发文档
转:http://www.360doc.com/content/10/0417/18/829197_23519037.shtml linux UART串口驱动开发文档时间:2010-01-09 14: ...
- ARM-Linux S5PV210 UART驱动(3)----串口核心层、关键结构体、接口关系
尽管一个特定的UART设备驱动完全可以按照tty驱动的设计方法来设计,即定义tty_driver并实现tty_operations其中的成员函数,但是Linux已经在文件serial_core.c中实 ...
- 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- (三) UART 串口通讯
UART : university asynchronous receiver and transmitter UART // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏 ...
- 【C51】UART串口通信
我们常需要单片机和其他模块进行通信,数据传输,常用的方式就是串口通信技术. 常用来 单片机<-->电脑, 单片机<-->单片机之间通信. 串行通信 versus 并行通信 并 ...
- Uart串口
title: Uart串口 tags: ARM date: 2018-10-20 16:38:28 --- Uart串口 和单片机的应用没什么区别,首先设置IO复用,设置波特率和数据位,以及中断相关的 ...
- 第十六章 IIC协议详解+UART串口读写EEPROM
十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...
随机推荐
- mocha_JavaScript单元测试框架
mocha mocha是JavaScript的一种单元测试框架,既可以在浏览器环境下运行,也可以在Node.js环境下运行. 使用mocha,我们就只需要专注于编写单元测试本身,然后,让mocha去自 ...
- 「codeforces - 1284G」Seollal
给定 \(n\times m\) 的网格图,有些格子有障碍,无障碍且相邻的格子之间连边形成图.保证 \((1, 1)\) 无障碍,保证无障碍格子连通. 将网格图黑白染色,相邻格子颜色不同,\((1, ...
- Solution -「LOCAL」ZB 平衡树
\(\mathcal{Description}\) OurOJ. 维护一列二元组 \((a,b)\),给定初始 \(n\) 个元素,接下来 \(m\) 次操作: 在某个位置插入一个二元组: 翻 ...
- Solution -「洛谷 P5787」「模板」二分图(线段树分治)
\(\mathcal{Description}\) Link. \(n\) 个结点的图,\(m\) 条形如 \((u,v,l,r)\) 的边,表示一条连接 \(u\) 和 \(v\) 的无向 ...
- PDF太大怎么办?缩小PDF的4种常用方法
PDF太大怎么变小?我们在平时学习或生活中经常需要上传或提交一些资料,现在网站都是默认需要提交PDF格式的电子文档,有时提交资料会提示超过系统大小,如何才能使PDF缩小呢? 一.在线压缩 首先搜索sp ...
- SRv6规模部署,离不开测试技术保驾护航!
什么是SRv6? SRv6技术就是采用现有的IPv6转发技术,通过扩展IPv6报文的头域,实现类似标签转发的处理.SRv6将一些IPv6地址定义成实例化的SID(Segment ID),每个SID有着 ...
- “四大高手”为你的 Vue 应用程序保驾护航
全球都在处理数字化转型的问题,飞速发展的同时也为基础设施带来了一定的压力.同时许多黑客也在不断更新升级他们的攻击技术. 如果我们的应用程序有过多漏洞,被抓按住利用,就会变成大型芭比Q现场. 这也是为何 ...
- 【C# 集合】HashTable .net core 中的Hashtable的实现原理
上一篇我介绍了Hash函数 这篇我来说一下Hash函数在 HashTable中的应用. HashTable的特性: 1.装载因子:.net core 0.72 ,java 0.75 2.冲突解决方案: ...
- 【C# IO 操作】C#修改文件或文件夹的权限,为指定用户、用户组添加完全控制权限
代码实现 在C盘添加一个文件夹,并在文件夹内部,新建一个文本文件,如图所示: 该文件夹下,新建一个文本文件,如图所示: 为文件添加完全控制权限: /// <summary> /// 为文件 ...
- maven配置本地仓库和远程仓库
配置本地仓库 修改maven安装目录下conf/settings.xml,也可以在idea配置中覆盖 <localRepository>E:\maven\MavenRepository&l ...