首页 > 其他分享 >AMD Xilinx AC701 单板运行IIC EEPROM例程

AMD Xilinx AC701 单板运行IIC EEPROM例程

时间:2023-05-11 14:11:35浏览次数:36  
标签:__ 例程 AC701 MUX AMD CHANNEL IIC EEPROM

概述

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

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

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 : %d\r\n", __func__, __LINE__ );
		return XST_FAILURE;
	}
          xil_printf("SUCCESS at %s : %d\r\n", __func__, __LINE__ );

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

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

标签:__,例程,AC701,MUX,AMD,CHANNEL,IIC,EEPROM
From: https://www.cnblogs.com/hankfu/p/17390868.html

相关文章

  • 例程练习1
    例程练习4.1代码:CREATEUSERuser1WITHPASSWORD"user1@123";GRANTSELECTONTABLEstudentTOuser1;运行结果:4.2代码:CREATEUSERuser2WITHPASSWORD"user2@123";CREATEUSERuser3WITHPASSWORD"user3@123";GRANTALLP......
  • 例程练习3
    例程练习4.11代码:CREATEROLErole1PASSWORD"role1@123";尝试登录role1,但是登录被拒绝,应该是没有登录权限;创建新角色role2;CREATEROLErole2LOGINPASSWORD'role2@123';此时新角色可以登录,使用新角色在无权限的情况下对student表操作;给角色2授权GRANTSELECT,UPDA......
  • 例程练习2
    例程练习4.8代码:尝试使用user1账户收回\c-user1REVOKEUPDATE(sno)ONTABLEstudentFROMuser4;接着使用管理员账户收回REVOKEUPDATE(sno)ONTABLEstudentFROMuser4;运行结果4.9代码:user4账户尝试收回接着使用管理员账户收回REVOKESELECTONT......
  • AMD
    AMD全称为AsynchronousModuleDefinition,即异步模块定义规范。模块根据这个规范,在浏览器环境中会被异步加载,而不会像CommonJS规范进行同步加载,也就不会产生同步请求导致的浏览器解析过程阻塞的问题了//main.jsdefine(["./print"],function(printModule){ pri......
  • STATA 按STKCD YEAR 合并所有的kamd
    uselinshi0510,clearbysstkcdyear:genbz=_nlocalk=_Nlocalaa""localbb""localdd""genbzz=""formatbzz%200sforvaluesi=1/`k'{localaa=stkcd[`i']localbb=year[`i']ifbz[`i&......
  • AMD MPSoC PS PCIe 使用要点
    AMDMPSoCPSPCIe使用要点目录AMDMPSoCPSPCIe使用要点需求文档要点框图地址转换窗口地址转换地址转换窗口示例示例代码总体流程地址转换配置代码注意事项参考文档需求有客户需要通过PCie从Windows系统访问MPSoC的DDR,从而使X86和A53通过共享DDR内存的方式交互大量数据。X8......
  • AMD MPSoC R5 AES加密示例
    AMDMPSoCR5AES示例目录AMDMPSoCR5AES示例测试环境测试单板测试工具R5AES测试流程创建Platform使能AES库导入AES示例定制AES密钥内存地址创建密文运行AES测试环境测试单板ZCU06测试工具Vitis2021.2R5AES测试流程创建Platform在Vitis的“File-New”中,......
  • OpenCL入门例程
    OpenCL是一个并行计算库。在VisualStudio中的配置类似于OpenCV,只需要把开发包下载下来,里面有include、lib、bin文件夹,在项目设置里添加上就行了。一般Windows系统自己带的就有OpenCL.dll,在Windows/System32/文件夹里。不同于英伟达的CUDA编程自己搞了个编译器集成到VisualStudio......
  • 全新 – Amazon EC2 R6a 实例由第三代 AMD EPYC 处理器提供支持,适用于内存密集型工作
    我们在Amazonre:Invent2021上推出了通用型AmazonEC2 M6a实例,并于今年2月推出了计算密集型 C6a实例。这些实例由运行频率高达3.6GHz的第三代AMDEPYC处理器提供支持,与上一代实例相比,性价比提高多达35%。如今,我们正在扩展产品组合,添加内存优化型 AmazonEC2R6a......
  • 一文搞懂 x64 IA-64 AMD64 Inte64 IA-32e 架构之间的关系
    想要搞清楚x64、IA64、AMD64指令集之间的关系,就要先了解Intel和AMD这两家公司在生产处理器上的发展历史。x86处理器1978年Intel生产了它的第一款16bit 处理器8086,之后几款处理器名字也都以86结尾,包括80186,80286,80386,80486,这些处理器的架构被统一称为x86架构。其......