zynq PS点灯

摸鱼碎碎念:

需要做ADC采集并在TFT屏幕实时显示波形(简易示波器)

发现只使用fpga实现比较困难

使用的是zynq,刚好来把arm部分也学到

参考视频

     与

教材文档

01_Zynq SoC FPGA的诞生_哔哩哔哩_bilibili

(这是俺点开AXI4接口协议后发现的系列视频教程T_T)

03_【裸机教程】基于C编程的Zynq裸机程序设计与应用教程v2.4.5.pdf

【产品资料】【Zynq开发板】小梅哥ACZ702开发板全套资料下载 - ACZ702开发板 - 芯路恒电子技术论坛 - Powered by Discuz! (corecourse.cn)

(这个在网盘下载就好)

zynq ug585文档下载链接:

ug585-Zynq-7000-TRM.pdf · adba5616e0bc482c1dc162123773ced75670d679 · POZ_FPGA / hardware · GitLab

(这是俺在edge随便找的,俺安装vivado的那个找不到T_T)

小梅哥裸机编程课程笔记链接:【zynq裸机编程课程笔记合集】 - ACZ702开发板 - 芯路恒电子技术论坛 - Powered by Discuz! (corecourse.cn)

1. 今日摸鱼任务

实现PS端点灯

第一次走流程搞了很久,也踩了一些坑,记录一下摸鱼历程

//本次先走一下流程

        //具体C程序编写下次发

2. zynq开发流程

3.  vivado基础配置设置   xc7z010clg400-1 

        //先搞完fpga部分,再搞arm       

①创建工程    

                                      xc7z010clg400-1 

②创建模块设计

③构建硬件系统

添加并配置IP核

注意上面的电平!!!!!
设置后,图形界面就会出现一个小对号

点击OK,可以得到:多了配置好的GPIO_0

导出引脚

④生成封装

然后可以得到:

⑤管脚约束

在管脚约束界面中,我们需要做的是对使用到的 PL 端的管脚进行分配并对管脚电平进行约束,本次设计所涉及到的为 PL 端的按键和 PL 端的 LED 灯:

Ctrl + S

⑥生成比特流

⑦导出硬件

⑧启动SDK

4. CPU软件程序设计

①创建SDK工程

此时,多了两个文件夹

②添加应用库

//这里是按照  03_【裸机教程】基于C编程的Zynq裸机程序设计与应用教程v2.4.5.pdf

所以与视频课程不太相同

【产品资料】【Zynq开发板】小梅哥ACZ702开发板全套资料下载 - ACZ702开发板 - 芯路恒电子技术论坛 - Powered by Discuz! (corecourse.cn)

(这个在网盘下载就好)

工程创建完成后新建一个 ACZ702_Lib 文件夹,用来存放提供的库。
路径如下: 小梅哥 ACZ702 Zynq 开发板资料 \ 盘A_ACZ702 开发板标准配套资料 \02_ 设计实例 \03_ 【裸机例程】基于 C 编程的 Zynq 裸机例程 \ ACZ702_Lib
//这个网盘路径自己下载哈,不是放的链接。
通用中断控制器和私有定时器是 Zynq 上十分常用的资源,在 SDK 中就可以直接配置使用,因此在我们的设计中都会默认加上 SCU 应用库。本次设计虽然没有使用到这两个资源,但是考虑到工程的适用性,将会添加 SCU 应用库(但是并没有使用)。
PS_GPIO SCU 拷贝到 ACZ702_Lib 中,
USER 文件夹下的文件拷贝 到 src 下,

③添加头文件路径

会出现

(这里是有一定的小问题的,就是俺有时候会不现实,重新操作一下又就有显示了,俺还没有搞懂)

这里注意选择到PS_GPIO 、 SCU 、USER三个文件夹处就OK

要重复三次

④添加用户代码

在main.c中:
/*
* 使用 PS_GPIO 实现了按键控制 LED 功能 :
* PS 端按键按下 →PL 端的灯亮起,松开熄灭
* PL 端按键按下 →PS 端的灯亮起,松开熄灭
*/
#include "COMMON.h"
int main ( void )
{
u8 State; // 存放按键 (MIO47) 的电平状态, 0 为低电平, 1 为高电平
PS_GPIO_Init (); // 初始化 PS MIO EMIO
// 设置 PS_LED(MIO7) 为输出并且初始为低电平
PS_GPIO_SetMode (PS_LED, OUTPUT, 0 );
// 设置 PL_LED(EMIO0) 为输出并且初始为低电平
PS_GPIO_SetMode (PL_LED, OUTPUT, 0 );
PS_GPIO_SetMode (PS_KEY, INPUT, 0 ); // 设置 PS_KEY(MIO47) 方向为输入
PS_GPIO_SetMode (PL_KEY, INPUT, 0 ); // 设置 PL_KEY(EMIO1) 方向为输入
while ( 1 )
{
// 读取 PS_KEY 的电平值并存储到 State 变量里
State = PS_GPIO_GetPort (PS_KEY);
// State 变量的值取非赋予 PL_LED 来输出
PS_GPIO_SetPort (PL_LED,!State);
// 读取 PL_KEY 的电平值并存储到 State 变量里
State = PS_GPIO_GetPort (PL_KEY);
// State 变量的值取非赋予 PS_LED 来输出
PS_GPIO_SetPort (PS_LED,!State);
}
return 0 ;
}
可以调整字体大小
打开 COMMON.h ACZ702 头文件下添加本次设计所使用库的头文件声明,这里已经预先对 ISR.h SCU_GIC.h SCU_TIMER.h 进行了声明,所以只需添加 PS_GPIO.h 即可。
#include "PS_GPIO.h"
接下来在用户宏定义下添加 GPIO 的定义,代码如下:
//MIOn 对应的 GPIO 编号为 n
#define PS_LED 7 //MIO_LED MIO7 ,对应的 GPIO 编号为 7
#define PS_KEY 47 //MIO_KEY MIO47 ,对应的 GPIO 编号为 47
//EMIOn 对应的 GPIO 编号为 54+n ,因为 MIO 总数为 54 EMIO 是从 54 开始算的
#define PL_LED ( 54 + 0 ) //EMIO_LED EMIO0 ,对应的 GPIO 编号为 54+0=54
#define PL_KEY ( 54 + 1 ) //EMIO_KEY EMIO1 ,对应的 GPIO 编号为 54+1=55
Ctrl+S 保存设计, SDK 会自动编译,在确认编译无误后,接下来便可以开始进行板级验证了。

5.板级验证

连接好开发板

//摸鱼结束!!!

//过程还是遇到了很多弯弯绕绕

//下次学习C编程~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫学习2

中国国家地理网 单张图片爬取 import requests url http://img0.dili360.com/ga/M00/02/AB/wKgBzFQ26i2AWujSAA_-xvEYLbU441.jpg!rw9 headers {"User-Agent": Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0…

解锁 JavaScript ES6:函数与对象的高级扩展功能

个人主页:学习前端的小z 个人专栏:JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! ES5、ES6介绍 文章目录 ES6函数扩展1 默认参数1.1 之前写法1.2 ES6 写法1.3 注意点 2 …

基于VGG16使用图像特征进行迁移学习的时装推荐系统

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…

解决Vscode Copilot连不上网问题

这段时间Copilot突然连不上网,修改vscode的proxy固然好使,但是还是不能从根本解决问题,并且会带来诸多问题,比如用vscode打开服务器这个proxy就失效了等等… 今天看到一种方法,很好的解决了我的问题。 直接修改本机的h…

【vue+ts】性能优化,defer优化白屏

代码: import {ref} from vueexport function useDefer(maxCount 100) {const count ref(0)let raqId:any null;function updateFrame() {count.valueif (count.value > maxCount) {return;}raqId requestAnimationFrame(updateFrame)}updateFrame();onUnmo…

【React篇】简述React-Router 的实现原理及工作方式

React Router 路由的基础实现原理分为两种,如果是切换 Hash 的方式,那么依靠浏览器 Hash 变化即可;如果是切换网址中的 Path,就要用到 HTML5 History API 中的 pushState、replaceState 等。在使用这个方式时,还需要在…

如何使用AES128位进行视频解密

要实现AES128位加解密&#xff0c;可以使用JavaScript的crypto-js库。以下是一个简单的示例&#xff1a; HTML代码&#xff1a; <video controlsList"nodownload" controls></video> 首先&#xff0c;需要安装crypto-js库&#xff1a; npm install cr…

数据库管理软件:Navicat Premium 17 中文激活版

Navicat Premium 是一套可创建多个连接的数据库开发工具&#xff0c;让你从单一应用程序中同时连接 MySQL、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。它与 OceanBase 数据库及 Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Clo…

Linux基础指令目录管理001

Linux目录管理是Linux操作系统中的一项基本而重要的任务&#xff0c;涉及到创建、删除、移动、查看和修改目录结构。 操作系统&#xff1a; CentOS Stream 操作命令&#xff1a; mkdir 创建目录 [rootlocalhost ~]# mkdir 秘密 [rootlocalhost ~]# ls -lhrt 总用量 1.2M …

万字解析线控底盘技术

文章出处&#xff1a;汽车学堂Automooc 引言 在当今这个由科技驱动的时代&#xff0c;汽车电动化、智能化已成为汽车行业的热门话题。特斯拉的自动驾驶功能、蔚来的换电模式、以及比亚迪的刀片电池技术&#xff0c;这些创新不仅引领着市场趋势&#xff0c;也推动着消费者对智…

SiC晶圆市场步入价格调整期:技术革新与产能扩张共促成本降低,加速下游应用拓展

近期硅碳&#xff08;SiC&#xff09;晶圆市场传出了降价的风声&#xff0c;似乎一场价格战即将拉开序幕。那么&#xff0c;当前SiC晶圆市场的实际情况如何呢&#xff1f; 供应链中多数企业普遍认同SiC晶圆价格确实在下滑。环球晶圆董事长徐秀兰公开表示&#xff0c;全球6英寸…

深入解读 Android Hook 技术-从原理到实践

在Android开发中&#xff0c;Hook技术是一种强大的手段&#xff0c;它允许开发者拦截和修改系统或应用的行为。通过Hook&#xff0c;我们可以在事件传递的过程中插入自定义的逻辑&#xff0c;从而实现对应用行为的监控和修改。 Android 系统有自己的事件分发机制&#xff0c;…

Leetcode2028. 找出缺失的观测数据

Every day a Leetcode 题目来源&#xff1a;2028. 找出缺失的观测数据 解法1&#xff1a;模拟 统计当前 m 个元素的总和 curSum sum(rolls)&#xff0c;总共 mn 个元素和为 total (m n) * mean。 排除 2 种情况&#xff1a; total - curSum > 6 * n&#xff1a;n 个…

链表(2)反转链表

题目描述 反转一个单链表。&#xff08;题目来源&#xff09; 思路一 其实&#xff0c;反转一个单向链表&#xff0c;我们可以看成是将链表中的每个结点的指向反向&#xff08;即从后一个结点指向前一个结点&#xff09;。 我们在考虑情况的时候&#xff0c;还是可以先考虑一般…

【基础计算机网络】应用层

一、网络应用模型 1.1 客户/服务器模型 1.1.1 工作流程 服务器处于接收请求的状态&#xff0c;客户机发出服务请求&#xff0c;并等待接收结果&#xff0c;服务器收到请求后&#xff0c;分析请求&#xff0c;进行必要的处理&#xff0c;得到结果并发送给客户机客户程序必须知…

变种水仙花

变种水仙花 题干要求&#xff1a; 变种水仙花数 - Lily Number&#xff1a;把任意的数字&#xff0c;从中间拆分成两个数字&#xff0c;比如1461 可以拆分成&#xff08;1和461&#xff09;,&#xff08;14和61&#xff09;,&#xff08;146和1),如果所有拆分后的乘积之和等于…

Ollama 本地大模型框架

该篇教程主要讲解*Ollama的安装和简单使用* Ollama&#xff1a; 在本地启动并运行大型语言模型。 主要流程目录&#xff1a; 1.安装 2.使用 2.1.下载模型 2.2.简单使用 2.3.中文模型 2.4.中文社区 3.总结 1.安装 创建一个容器 切换”高级视图“ 参考填写 ollama oll…

java家政上门系统源码,App端采用uniapp开发编写,可打包H5 、微信小程序、微信公众号、Android、IOS等。

家政上门系统是一种通过互联网或移动应用平台&#xff0c;为用户提供在线预约、下单、支付和评价家政服务的系统。该系统整合了家政服务资源&#xff0c;使用户能够便捷地找到合适的服务人员&#xff0c;同时也为家政服务人员提供了更多的工作机会。 本套家政上门系统源码&…

Golang | Leetcode Golang题解之第120题三角形最小路径和

题目&#xff1a; 题解&#xff1a; func minimumTotal(triangle [][]int) int {n : len(triangle)f : make([]int, n)f[0] triangle[0][0]for i : 1; i < n; i {f[i] f[i - 1] triangle[i][i]for j : i - 1; j > 0; j-- {f[j] min(f[j - 1], f[j]) triangle[i][j]…

旅游行业:解锁收入增长的新策略!

随着科技的飞速发展和人们生活水平的提高&#xff0c;旅游行业已成为全球范围内最具活力和潜力的行业之一。然而&#xff0c;在这个充满机遇与挑战的市场中&#xff0c;如何确保收入的持续增长&#xff0c;成为每一家旅游企业都必须面对的问题。在这个背景下&#xff0c;用友BI…