AXI-IIC官方示例解析

本文详述了基于Xilinx开发板的AXI-IIC官方示例,包括使用中断模式的xiic_eeprom_example和轮询模式的xiic_low_level_tempsensor_example。通过XIic_Recv和XIic_Send函数实现IIC通信,解析了这两个函数的用法,帮助读者理解如何与EEPROM和温度传感器交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

AXI-IIC官方示例解析

说明:本文是作者自己对Xilinx的AXI-IIC的官方示例的解析,如有错误望各位指正。



前言

在使用Xilinx官方的IP核AXI-IIC时,想参考一下官方的程序示例,可是示例的介绍多为英文,且介绍不太详细。

示例列表

在此,作者结合自己的实践来尝试分析相关示例,希望对大家有所帮助。

说明:软件为Vivado 2019.2和Vitis 2019.2。
AXI-IIC版本为2.0。
AXI-IIC版本


xiic_eeprom_example

该示例基于ML300/ML310/ML410/ML403/ML501/ML507/ML510/ML605/SP601, SP605, KC705 , ZC702 和 ZC706 等Xilinx开发板。
该示例使用中断模式来读写EEPROM。

在Vivado上添加AXI-IIC并将SCL和SDA连接至EEPROM引脚后,编译、新建vitis工程。

之后添加官方示例xiic_eeprom_example。
仔细查看开发者写的注释,根据相关说明来编写。
作者采用的是24LC04A,我根据说明只修改了EEPROM的地址。

EEPROM地址修改

xiic_low_level_tempsensor_example

该示例为使用polled模式驱动IIC接口的温度传感器的示例。我使用的是IIC的其他传感器,感觉可以参考这个示例。

经过分析,使用XIic_Recv和XIic_Send两个函数即可实现我需要的功能。它们的声明在xiic_l.c

XIic_Recv

下图为XIic_Recv的介绍,注意红线标出的“to be sent”是开发者的笔误,应该是“to be received”。我当时因为这个还视图想自己编写代码,后来发现原来是说明存在错误。

XIic_Recv

* 该函数用于向IIC从机发送数据。
* @param	BaseAddress 使用的IIC接口对应的baseaddress.
* @param	Address     IIC从机的地址
* @param	BufferPtr   向从机发送的数据指针
* @param	ByteCount   发送的数据字节数.
* @param	Option      发送完数据后释放总线还是保持
*		XIIC_STOP = 以STOP结束,即释放总线,
*		XIIC_REPEATED_START = 不以STOP结束,保持总线.
*
* @return	接收到的字节数.

XIic_Send

以下是XIic_Send的介绍。

XIic_Send

* 该函数用于从IIC从机接收数据。
* @param	BaseAddress 使用的IIC接口对应的baseaddress.
* @param	Address     IIC从机的地址
* @param	BufferPtr   接收的缓存指针
* @param	ByteCount   接收的数据字节数.
* @param	Option      接收完数据后释放总线还是保持
*		XIIC_STOP = 以STOP结束,即释放总线,
*		XIIC_REPEATED_START = 不以STOP结束,保持总线.
*
* @return	发送的字节数.

总结

以后如果要使用其他示例或需要补充,作者会更新本文。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值