当前位置: 首页 > news >正文

AXI GPIO 2——ZYNQ学习笔记

AXI GPIO同一通道混合输入输出使用示例

硬件设计


xdc约束

set_property -dict {PACKAGE_PIN M17 IOSTANDARD LVCMOS33} [get_ports uart_rxd]
set_property -dict {PACKAGE_PIN L17 IOSTANDARD LVCMOS33} [get_ports uart_txd]set_property -dict {PACKAGE_PIN P20 IOSTANDARD LVCMOS33} [get_ports {axi_gpio_tri_io[0]}]
set_property -dict {PACKAGE_PIN P21 IOSTANDARD LVCMOS33} [get_ports {axi_gpio_tri_io[1]}]
set_property -dict {PACKAGE_PIN K21 IOSTANDARD LVCMOS33} [get_ports {axi_gpio_tri_io[2]}]
set_property -dict {PACKAGE_PIN J20 IOSTANDARD LVCMOS33} [get_ports {axi_gpio_tri_io[3]}]

main.c

#include <stdio.h>
#include "axi_gpio.h"int main(){u32 axi_reg_data = 0;axi_gpio_config();out_axi_gpio(1,0);axi_reg_data = read_axi_reg();printf("AXI GPIO S\r\n");printf("axi reg = %p\r\n",axi_reg_data);return 0;
}

axi_gpio.c

#include <stdio.h>
#include "xparameters.h"
#include "xgpio.h"
#include "xil_exception.h"
#include "xscugic.h"
#include "axi_gpio.h"XGpio 	AXI_Gpio	;
extern	XScuGic Intc		;#define GPIO_CHANNEL1			1											//AXI GPIO		通道号#define AXI_GPIO_ID 			XPAR_GPIO_0_DEVICE_ID						//AXI GPIO		器件ID//axi gpio 初始化
void axi_gpio_config(void){XGpio_Initialize(&AXI_Gpio, AXI_GPIO_ID);								//初始化AXI GPIOXGpio_SetDataDirection(&AXI_Gpio,GPIO_CHANNEL1,0x0000000C);				//设置对应通道为0011输出输入LED_ON;
}//读取通道当前状态
u32 read_axi_reg(void){return XGpio_DiscreteRead(&AXI_Gpio,GPIO_CHANNEL1);
}//输出函数
//bit_pos:要修改的数据位
//value:要修改的数据
void out_axi_gpio(u32 bit_pos,u8 value){u32 out_data;out_data = modify_bit(read_axi_reg(),bit_pos,value);XGpio_DiscreteWrite(&AXI_Gpio,GPIO_CHANNEL1,out_data);
}//掩码与数据改变
//data:要修改的原数据
//bit_pos:要修改的数据位
//value:要修改的数据
u32 modify_bit(u32 data, u32 bit_pos, u8 value){u32 mask = 1U << bit_pos;      // 创建指定位的掩码if (value) {data |= mask;                   // 设置该位为1} else {data &= ~mask;                  // 设置该位为0}return data;
}

axi_gpio.h

#include <stdio.h>
#include "xparameters.h"
#include "xgpio.h"extern  XGpio 	AXI_Gpio	;#define GPIO_CHANNEL1			1											//AXI GPIO		通道号#define LED_ON		XGpio_DiscreteWrite(&AXI_Gpio,GPIO_CHANNEL1,0X00000003)							//控制IO输出1
#define LED_OFF		XGpio_DiscreteWrite(&AXI_Gpio,GPIO_CHANNEL1,0X00000000)							//控制IO输出0void axi_gpio_config(void);
u32 read_axi_reg(void);
u32 modify_bit(u32 data, u32 bit_pos, u8 value);
void out_axi_gpio(u32 bit_pos,u8 value);

http://www.dtcms.com/a/330983.html

相关文章:

  • 力扣top100(day03-02)--图论
  • Java 技术栈中间件优雅停机方案设计与实现全景图
  • 【JavaEE】多线程 -- 线程状态
  • 数据结构之顺序表相关算法题
  • 【数据分享】351个地级市农业相关数据(2013-2022)-有缺失值
  • linux中date命令
  • SAP-ABAP:SAP消息系统深度解析:架构设计与企业级应用实践
  • Wireshark中捕获的大量UDP数据
  • 23.Linux : ftp服务及配置详解
  • (论文速读)DiffusionDet - 扩散模型在目标检测中的开创性应用
  • AI搜索重构下的GEO优化服务商格局观察
  • 李沐-第六章-LeNet训练中的pycharm jupyter-notebook Animator类的显示问题
  • 轻松同步 Outlook 联系人到 Android
  • 深入解析SAE自动驾驶分级标准(0-5级)及典型落地实例
  • Ubuntu 软件源版本不匹配导致的依赖冲突问题及解决方法
  • C++ 23种设计模式的分类总结
  • C++23输出革命:std::print的崛起与工业界标准滞后的现实困境
  • 18.12 BERT问答系统核心难题:3步攻克Tokenizer答案定位与动态填充实战
  • c/c++ UNIX 域Socket和共享内存实现本机通信
  • 2021睿抗决赛 猛犸不上 Ban
  • diffusers库学习--pipeline,模型,调度器的基础使用
  • 深入解析Prompt缓存机制:原理、优化与实践经验
  • Centos9傻瓜式linux部署CRMEB 开源商城系统(PHP)
  • 流式数据服务端怎么传给前端,前端怎么接收?
  • Keil 微库(MicroLib)深度解析
  • USB 3.0 协议层 包定义
  • 微软对传统网页设计工具在2010年停止开发
  • Sql server 命令行和控制台使用二三事
  • web网站开发,在线%射击比赛成绩管理%系统开发demo,基于html,css,jquery,python,django,model,orm,mysql数据库
  • 一文讲透Go语言并发模型