0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AMD Xilinx AC701单板运行IIC EEPROM例程

jf_pJlTbmA9 来源:博客园-HankFu 作者:博客园-HankFu 2023-07-10 17:03 次阅读

概述
AMD Xilinx Vitis内部集成了各种外设的例程,为工程师提供了快速上手的代码。

AMD Xilinx有很多开发板。各种单板的硬件参数不一定完全一致,有时需要根据单板硬件设计、Vivado中的Block Design设计,修改外设例程的参数。

IIC EEPROM例程
本文描述在如何运行IIC EEPROM例程。

硬件设计
运行运行IIC EEPROM例程,如果时Zynq-7000/MPSoC, 要在Block Design设计中使能PS的IIC控制器。如果是传统FPGA,要在Block Design设计中添加MicaroBlaze和AXI IIC控制器。然后在Vivado中导出XSA文件,给Vitis后续设计使用。

创建Platform
在Vitis中,先使用Vitis创建Platform。具体步骤是,在Vitis的菜单 “File - New ” 中,选择“Platform Project”, 指定名称如“ac701_multiboot_hw_platform”, 再选择对应的XSA文件和 Processor 如 “micraoblaze_0”,再点击“Finish”。

100570959-302544-1.png

导入IIC EEPROM例程
1. 打开hw_platform工程。
2. 双击“platform.spr”文件。
3. 双击“micraoblaze_0”的 “board support package”。
4. 等待Drivers窗口显示
5. 点击axi_iic_0行右边的import examples
6. 选择"xiic_eeprom_example"
7. 点击"OK"

100570959-302545-2.png
100570959-302546-3.png

之后Vitis会创建一个工程,包含文件xiic_eeprom_example.c。

IIC EEPROM例程更改
下面是在AMD Xilinx AC701 单板运行IIC EEPROM例程所需要的更改。

中断
IIC EEPROM例程使用了中断,需要根据AC701 MicroBlaze硬件工程的设计,修改中断号。

文件xiic_eeprom_example.c中原来使用的中断号是XPAR_INTC_0_IIC_0_VEC_ID,要改成新的中断号。

旧的中断号参数:

#define IIC_INTR_ID XPAR_INTC_0_IIC_0_VEC_ID

在workspace下,能搜索到文件xparameters.h,包含每个设备的中断号。 定义中断号的宏的名称,与Vivado硬件工程的BlockDesign中的IP名称有关,类似如下字符串:

#define XPAR_MICROBLAZE_0_AXI_INTC_AXI_IIC_0_IIC2INTC_IRPT_INTR 2U

因此,新的中断号参数设置为:

#define IIC_INTR_ID XPAR_MICROBLAZE_0_AXI_INTC_AXI_IIC_0_IIC2INTC_IRPT_INTR

IIC MUX
为了节省管脚,AMD Xilinx开发板一般使用一个IIC_MUX(IIC Switch),把一路IIC总线扩展成多路IIC总线。比如AC701使用了PCA9548扩展IIC总线。如果使用了IIC_MUX(IIC Switch), 要定义宏IIC_MUX_ENABLE,并且设置IIC_MUX_ADDRESS、IIC_EEPROM_CHANNEL。定义IIC_MUX_ENABLE后,就使能了函数MuxInit( )。

IIC_MUX_ADDRESS是IIC_MUX在与MPSoC/MicroBlaze之间连接的IIC总线上的地址,需要根据AC701的硬件设计设置。注意,是7位地址,是8位地址的二分之一。根据原理图,AC701 PCA9548的IIC地址是0x74。

IIC_MUX分出多个IIC总线(CHANNEL)。EEPROM所在的IIC总线(CHANNEL)需要根据AC701的硬件设计设置,软件代码中对应的设置是IIC_EEPROM_CHANNEL。AC701上,EEPROM的IIC总线(CHANNEL)是3,IIC_EEPROM_CHANNEL设置成8。这个参数最后在MuxInit( )中被使用。

/*
* The IIC_MUX_ADDRESS defines the address of the IIC MUX device on the
* IIC bus. Note that since the address is only 7 bits, this constant is the
* address divided by 2.
* The IIC Slaves on the KC705/ZC702/ZC706 boards are connected to an
* IIC MUX.
* IIC_EEPROM_CHANNEL is the Channel number of EEPROM for IIC Mux. On KC705 it
* is 0x08 and ZC702 is 0x04.Please refer the User Guide's of the respective
* boards for further information about the Channel number to use EEPROM.
*/
#define IIC_MUX_ADDRESS 0x74
#define IIC_EEPROM_CHANNEL 0x08

/*
* This define should be uncommented if there is IIC MUX on the board to which
* this EEPROM is connected. The boards that have IIC MUX are KC705/ZC702/ZC706.
*/
#define IIC_MUX_ENABLE

EEPROM_ADDRESS
EEPROM_ADDRESS定义EEPROM在IIC总线上的地址。也请注意,是7位地址,是8位地址的二分之一。根据原理图,AC701 EEPROM的IIC地址是0x54。

调试技巧
刚测试时,不熟悉运行流程。建议在函数入口处、返回处多加些打印,了解运行流程。

在判断函数的返回值时,加入下列打印,能快速了解出错的代码和原因。

if (Status != XST_SUCCESS) {
xil_printf("Fail at %s : %drn", __func__, __LINE__ );
return XST_FAILURE;
}

添加打印,成功运行情况的的打印如下:

Begin at XIic_SetAddress : 397
XII_ADDR_TO_SEND_TYPE at XIic_SetAddress : 431
Begin at XIic_SetAddress : 398
XII_ADDR_TO_SEND_TYPE at XIic_SetAddress : 432
SUCCESS at MuxInit : 840
Begin at XIic_SetAddress : 398
XII_ADDR_TO_SEND_TYPE at XIic_SetAddress : 432
Success at IicEepromExample : 465
Successfully ran IIC eeprom Example

本文转载自:博客园

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5201

    浏览量

    132638
  • Xilinx
    +关注

    关注

    70

    文章

    2121

    浏览量

    119374
  • IIC
    IIC
    +关注

    关注

    11

    文章

    285

    浏览量

    37806
  • 开发板
    +关注

    关注

    25

    文章

    4434

    浏览量

    94020
收藏 人收藏

    评论

    相关推荐

    视频:看看Xilinx Artix-7评估套件AC701里面都有些什么

    本视频是AC701开发套件的详细演示。AC701是搭载Xilinx Aritx-7 FPGA的开发套件,主要面向大批量、成本敏感型应用。Artix-7 FPGA具有业界领先的每瓦性能比优势,A
    发表于 07-26 19:54

    怎么续订AC701许可证

    我的AC701的Vivado许可证版本限制为~2014.5。有没有更新此许可证,以便我可以使用最新版本的Vivado?以上来自于谷歌翻译以下为原文My Vivado license for my
    发表于 12-20 11:18

    AC701能否通过Artix 7的PCIe链路与PC通信?

    Artix 7的PCIe链路建立Ac701与主机Pc之间的通信。请使用UG964中描述的套件提供的测试示例:我们使用Questasim跟踪模拟流程,因此我们成功编译了xilinx库并启动
    发表于 09-10 07:56

    请问AC701AC701 GTP之间的吞吐量有多少?

    我想使用一些AC701开发板测试一些板对板数据传输速率和延迟。我真实地期望通过GTP收发器(SMA)获得两个AC701开发板之间的吞吐量?谢谢
    发表于 09-10 12:04

    编译ac701评估板的BIST时出错该怎么办?

    你好,尝试编译ac701评估板的BIST项目时出错。我按照指令xtp194-ac701-bist-c-2014-2.pdf,在我重置synth_1然后点击“生成比特流”后,几十分钟后我在日志中有
    发表于 09-25 10:43

    AC701服务器连接时收到以下错误

    你好,连接到AC701板时,我们收到以下错误:服务器上没有硬件目标[localhost:3121]我们已经安装了硅实验室的USB-UART设备驱动程序,但是在COM& amp; LPT端口。我们会批评您的建议。最好
    发表于 09-27 09:39

    AC701电路板外设与KCU105电路板有哪些不同?

    我是AC701主板的快乐拥有者,并通过一些PCI-E教程。我注意到IPI中的电路板选项卡列出了除PCI-E之外的所有AC701电路板外设,与具有它的KCU105电路板不同。我错过了什么吗?这是一个
    发表于 09-29 14:12

    请问有人在ac701中实现SATA3吗?

    嗨,我对AC701板上的SATA主机控制器实现有点困惑。是否可以实施SATA 3或仅限于SATA2。有些信息令人困惑,因为我看到sata 3它需要速度等级3 ARTIX7。有没有人在ac701中实现SATA3?谢谢
    发表于 10-08 10:08

    AC701风扇温度接近90摄氏度

    嗨,Vivado硬件管理器正在测量我的AC701设备上接近90摄氏度的温度。a)这不好吗?我在数据表中读到,对于C级设备,温度额定为85C。b)我在哪里可以订购兼容的风扇?找不到任何信息。
    发表于 10-17 08:53

    AC701是否可以将Vadj设置为1.8V?

    我想通过FMC连接器将我的AC701连接到我的ZCU-102以测试接口。由于我看起来不能将我的ZCU-102 FMC电压设置为高于1.8V,因此我需要将AC701 Vadj电压设置为驱动FMC的组
    发表于 10-22 08:54

    AC701运行双极时,XADC偏置有问题

    您好,我目前正在帮助我的大学将为Digilent Nexys4设计的学校项目移植到Xilinx AC701电源评估板上。该项目由声音效果管道组成,除XADC外,港口的一切工作正常。它配置为使用事
    发表于 04-02 10:10

    宏基AC701彩显图纸

    宏基AC701彩显图纸 电视机电路图 芯片电路图 显示器电路图
    发表于 10-15 16:03 181次下载

    Artix-7 FPGA AC701开发板-板载Debug Checklist

    Artix-7 FPGA AC701 开发板 - 板载Debug Checklist。
    发表于 08-08 18:27 100次下载

    Xilinx的Artix-7 FPGA AC701评估套件专门支持高性能系统

    赛灵思公司(Xilinx)今天宣布Artix-7 FPGA AC701评估套件正式推出,专门支持开发满足低成本、低功耗应用需求的高性能系统。这款最新评估套件配套提供All Programmable
    发表于 09-26 16:27 2269次阅读

    Artix-7 FPGA AC701评估套件的特点性能与应用

    查看Artix-7 FPGA AC701评估套件,该套件具有领先的每瓦特Artix-7系列系统性能,可为您的成本敏感型应用提供快速原型设计。
    的头像 发表于 11-21 06:19 3548次阅读