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 下,

会出现

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

现在关于这个复制进去不显示:

       俺改成先复制要使用的文件夹,然后添加main.c就会刷新出来

        感觉是软件的小问题~

③添加头文件路径

这里注意选择到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编程~

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值