Xilinx FPGA Microblaze AXI_IIC使用方法及心得

2024-08-28 23:58

本文主要是介绍Xilinx FPGA Microblaze AXI_IIC使用方法及心得,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Xilinx FPGA Microblaze AXI_IIC使用方法及心得

前言

本着好好学习,认真负责的态度,我计划在空闲时间把自己用到的一些模块的使用方法与心得总结下与大家分享下,技术交流的同时共同进步,如有问题,欢迎批评指正!
本次先着重讲下AXI_IIC核的使用,后续还会包括以下模块

  1. UART_AXI核使用及AXI总线详解
  2. QSPI_AXI核的使用
  3. AXI_DMA与AXI_FIFO使用,实现PS与PL端数据交互
  4. PS端中断的使用及其详细调用过程
  5. PS端定时器、看门狗等模块的使用
  6. 使用R5核实现TCP/IP协议及R5核之间通过Cache数据交互
  7. 通过AXI_HWICAP模块实现远程更新

上述模块会在近期一一更新,感兴趣的朋友可以关注下我☺

平台

Vivado 2017.4
ZCU102开发板
PSoC开发板(赛普拉斯的一款开发板,处理器为Cortex M3,本实验中用于模拟IIC从设)
示波器

结果展示

本文默认你对相关基础已有了解,不做基础讲解,大家酌情继续阅读。
废话不多说,先上结果。
程序运行结果
上图是使用示波器抓取通信时的波形,黄色为SCL,绿色为SDA

实验设计思路

由于IIC总线需要从设才能正常进行通信,在实验器件,我就随便找了块开发板,模拟了一个IIC的从设备,程序运行时,使用AXI_IIC模块读取从设两个字节数据,从设地址为0x54,在PSoC内部编程使之每次被读取后两个字节数据各自加1,简单框图如下
程序设计思路

AXI_IIC 模块简介

AXI_IIC
上面是从官方文档里面截图下来的,具体可以看官方文档PG090,简而言之,AXI_IIC模块可以实现标准IIC总线,文档中详细介绍了AXI_IIC核内部寄存器,感兴趣或者实际使用遇到问题可以仔细查看下,可以配合文档末尾的读写操作步骤指导看,只是简单使用的话可以直接调用官方封装好的API文档,方便快捷。

实施过程

新建工程编译好后导入SDK,并在SDK中新建工程,可以先import example,查看官方的实例,然后再根据自己的需求改写代码,Documentation会链接到官方网站,里面有所有的API函数和数据定义等,建议直接看.h和.c,个人觉得官方的网站内容做的不太方便查看。
import example 的方法如下图
在这里插入图片描述
下图为XIic.h的部分内容截图,里面声明了会用到的函数,底层全部是官方封装好的,可以直接拿来调用,如果要自己写底层驱动,可能要花费较长时间精力,唯一不好的地方是,在遇到问题调试的时候,官方提供的函数会直接跳到汇编语言处。
xiic.h内容
下面在自己新建的工程里面参照example的方法初始化,然后就可以调用相关函数了,IIC收发主要用到XIic_MasterRecv()和XIic_MasterSend()两个函数,在主函数中直接调用即可。
下面附上我整理好的初始化代码,可以直接调用该函数进行初始化,需要输入设备指针,设备ID,另外我还增加了一个设备名,方便打印输出。

int IIC_axi_initialize(XIic *InstancePtr, u16 DeviceId, const char IICName[])
{int Status;XIic_Config *ConfigPtr;	/* Pointer to configuration data *//** Initialize the IIC driver so that it is ready to use.*/ConfigPtr = XIic_LookupConfig(DeviceId);if (ConfigPtr == NULL) {return XST_FAILURE;}Status = XIic_CfgInitialize(InstancePtr, ConfigPtr,ConfigPtr->BaseAddress);if (Status != XST_SUCCESS) {xil_printf("%s Initialization Failed\r\n",IICName);return XST_FAILURE;}else{xil_printf("%s Initialization Succeed\r\n",IICName);}return Status;
}

结语

时间精力有限,就先写这么多,要是有具体问题,欢迎留言讨论!

各位看客老爷要是觉得有用可以扫码打赏下以示支持,万分感谢!

这篇关于Xilinx FPGA Microblaze AXI_IIC使用方法及心得的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

C++中detach的作用、使用场景及注意事项

《C++中detach的作用、使用场景及注意事项》关于C++中的detach,它主要涉及多线程编程中的线程管理,理解detach的作用、使用场景以及注意事项,对于写出高效、安全的多线程程序至关重要,下... 目录一、什么是join()?它的作用是什么?类比一下:二、join()的作用总结三、join()怎么

mybatis中resultMap的association及collectio的使用详解

《mybatis中resultMap的association及collectio的使用详解》MyBatis的resultMap定义数据库结果到Java对象的映射规则,包含id、type等属性,子元素需... 目录1.reusltmap的说明2.association的使用3.collection的使用4.总

Spring Boot配置和使用两个数据源的实现步骤

《SpringBoot配置和使用两个数据源的实现步骤》本文详解SpringBoot配置双数据源方法,包含配置文件设置、Bean创建、事务管理器配置及@Qualifier注解使用,强调主数据源标记、代... 目录Spring Boot配置和使用两个数据源技术背景实现步骤1. 配置数据源信息2. 创建数据源Be

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

Olingo分析和实践之ODataImpl详细分析(重要方法详解)

《Olingo分析和实践之ODataImpl详细分析(重要方法详解)》ODataImpl.java是ApacheOlingoOData框架的核心工厂类,负责创建序列化器、反序列化器和处理器等组件,... 目录概述主要职责类结构与继承关系核心功能分析1. 序列化器管理2. 反序列化器管理3. 处理器管理重要方

Python错误AttributeError: 'NoneType' object has no attribute问题的彻底解决方法

《Python错误AttributeError:NoneTypeobjecthasnoattribute问题的彻底解决方法》在Python项目开发和调试过程中,经常会碰到这样一个异常信息... 目录问题背景与概述错误解读:AttributeError: 'NoneType' object has no at

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo