萌新的SOC学习之GPIO之MIO控制LED实验程序设计
如何设置完GPIO并且传递数据
我们先了解GPIO引脚的配置
每一个GPIO引脚都可以设置成输入输出 ,只有GPIO8 7 只能作为输出
我们现在做一个例子 GPIO 的bank我们知道有4个 bank0 1 2 3
DIRM_0 就是第一个bank 需要写入的是32位数据
因为写法是16进制 假设我们要操作 第10位置为1
那就是write 0x0000_0400 我们分析最后的几个位 我们可以看到是 100_0000_0000 正好是第10个管脚被置为了1
我们在上面的设置中还知道不仅要配置 DIRM 还要配置OEN
所以对于OEN这样的寄存器我们也需要把它的第十位设置为1 0x0000_0400 (16进制)
OEN寄存器比较特殊 只有当我们配置成输出模式的时候才有意义也就是在DIRM=1时 ,当我们前面的DIRM=0 时 OEN就会没有别的意义
我们把MIO设置为输入 只要把DIRM_0设置为 全0就可以了
接下来我们需要把数据写入
我们本次实验的任务是 使用PS端的MIO控制LED ,实现LED闪烁的效果
我们来看本次实验的系统框图
按照步骤创建完 会打开到一个SDK软件 其中的有
我们对这些数据敏感就会发现了
0xe000_a000
下一个实验GPIO之EMIO按键控制LED实验
实验任务: 使用ZYNQ底板上的三个用户按键分别控制PS端的三个LED的亮灭,其中一个按键需要通过EMIO进行扩展。
但是ZYNQ的底板上只有2个PS端的用户按键,要是用三个的话,就需要通过EMIO进行扩展
PS端的按键不够用 我们通过EMIO扩展 PL的按键
当我们的设计需要用到PL的资源时,我们就需要导出bitstream配置FPGA
我们想要读出数据可以直接使用GPIO_RO_x寄存器
把DIRM写0 就可以配置成输入了
如何配置MIO的输入?
配置成输入
读MIO_RO 寄存器
我们观察底板的电路图会发现
PS LED1 连接到的是 PS MIO8
PS LED0 连接到的是 PS MIO7
PS KEY0 连接到的是PS MIO12
PS KEY1 连接到的是PS MIO11
还有一个PS LED 直接接到了MIO0_LED上
PL端的KEY0 用的是L14
我们在vivado中实现 但是发现我们使用EMIO就需要给它分配管脚
在调用PS端的时候并不需要,因为它会自动给我们分配管脚
但是PL端需要我们自己去设置