AXI-IIC官方示例解析
AXI-IIC官方示例解析
說明:本文是作者自己對Xilinx的AXI-IIC的官方示例的解析,如有錯誤望各位指正。
文章目錄
- AXI-IIC官方示例解析
- 前言
- xiic_eeprom_example
- xiic_low_level_tempsensor_example
- XIic_Recv
- XIic_Send
- 總結(jié)
前言
在使用Xilinx官方的IP核AXI-IIC時,想?yún)⒖家幌鹿俜降某绦蚴纠?#xff0c;可是示例的介紹多為英文,且介紹不太詳細。
在此,作者結(jié)合自己的實踐來嘗試分析相關(guān)示例,希望對大家有所幫助。
說明:軟件為Vivado 2019.2和Vitis 2019.2。
AXI-IIC版本為2.0。
xiic_eeprom_example
該示例基于ML300/ML310/ML410/ML403/ML501/ML507/ML510/ML605/SP601, SP605, KC705 , ZC702 和 ZC706 等Xilinx開發(fā)板。
該示例使用中斷模式來讀寫EEPROM。
在Vivado上添加AXI-IIC并將SCL和SDA連接至EEPROM引腳后,編譯、新建vitis工程。
之后添加官方示例xiic_eeprom_example。
仔細查看開發(fā)者寫的注釋,根據(jù)相關(guān)說明來編寫。
作者采用的是24LC04A,我根據(jù)說明只修改了EEPROM的地址。
xiic_low_level_tempsensor_example
該示例為使用polled模式驅(qū)動IIC接口的溫度傳感器的示例。我使用的是IIC的其他傳感器,感覺可以參考這個示例。
經(jīng)過分析,使用XIic_Recv和XIic_Send兩個函數(shù)即可實現(xiàn)我需要的功能。它們的聲明在xiic_l.c
XIic_Recv
下圖為XIic_Recv的介紹,注意紅線標出的“to be sent”是開發(fā)者的筆誤,應(yīng)該是“to be received”。我當時因為這個還視圖想自己編寫代碼,后來發(fā)現(xiàn)原來是說明存在錯誤。
* 該函數(shù)用于向IIC從機發(fā)送數(shù)據(jù)。 * @param BaseAddress 使用的IIC接口對應(yīng)的baseaddress. * @param Address IIC從機的地址 * @param BufferPtr 向從機發(fā)送的數(shù)據(jù)指針 * @param ByteCount 發(fā)送的數(shù)據(jù)字節(jié)數(shù). * @param Option 發(fā)送完數(shù)據(jù)后釋放總線還是保持 * XIIC_STOP = 以STOP結(jié)束,即釋放總線, * XIIC_REPEATED_START = 不以STOP結(jié)束,保持總線. * * @return 接收到的字節(jié)數(shù).XIic_Send
以下是XIic_Send的介紹。
* 該函數(shù)用于從IIC從機接收數(shù)據(jù)。 * @param BaseAddress 使用的IIC接口對應(yīng)的baseaddress. * @param Address IIC從機的地址 * @param BufferPtr 接收的緩存指針 * @param ByteCount 接收的數(shù)據(jù)字節(jié)數(shù). * @param Option 接收完數(shù)據(jù)后釋放總線還是保持 * XIIC_STOP = 以STOP結(jié)束,即釋放總線, * XIIC_REPEATED_START = 不以STOP結(jié)束,保持總線. * * @return 發(fā)送的字節(jié)數(shù).總結(jié)
以后如果要使用其他示例或需要補充,作者會更新本文。
總結(jié)
以上是生活随笔為你收集整理的AXI-IIC官方示例解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB数字信号处理函数
- 下一篇: MATLAB浮点数与十六进制(浮点数)转