有關AXI IIC和PS IIC的自調試技巧_第1頁
有關AXI IIC和PS IIC的自調試技巧_第2頁
有關AXI IIC和PS IIC的自調試技巧_第3頁
有關AXI IIC和PS IIC的自調試技巧_第4頁
有關AXI IIC和PS IIC的自調試技巧_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

有關AXIIIC和PSIIC的自調試技巧“IIC

協議與編程序列”一文,我們為內部集成電路

(IIC)

協議的初學者們提供了有關該協議基礎知識和編程序列的詳細解釋。在本篇博文中,我們將探討有關AXIIIC和PSIIC的自調試技巧。PSIIC編程序列調試:

控制器設置為“主發射器(Mastertransmitter)”。在Zynq-7000/ZynqUltraScale+器件中啟用PSIIC。確保SCL頻率配置為100kHz或400kHz。設置主發射器控制器的控制寄存器。

檢查中斷是否已清除,并且已配置實際SCL的時鐘分頻器。要測試與從設備的通信,請將從地址寫入PSI2C地址寄存器(I2C_Address),然后將數據寫入I2C_data_regHOLD位應根據數據大小來處理。當數據大小小于FIFO深度時,請清除HOLD位以終止事務傳輸,并生成STOP位。

在中斷使能寄存器(IER)中使能NACK中斷后,即可通過ISR來監控從設備應答(ACK)。驗證ISR中的COMP標記位已置位。這樣即可確認數據傳輸成功。如果主傳輸不成功,用戶可使用以下步驟進行調試:確保控制寄存器中的配置正確無誤檢查ISR中的NACK位,以確認從設備的響應按上述方式謹慎處理HOLD位。否則,將導致SCL下拉直至超時為止監控狀態寄存器中的TXDV位,檢查是否有任何暫掛數據正在等待傳輸狀態寄存器中的“總線繁忙(Busbusy)”位或BA位將有助于您了解數據傳輸期間的總線狀態。控制器設置為“主接收器(Masterreceiver)”與對應主發射器的步驟1相同,在Zynq-7000/ZynqUltraScale+器件中啟用PSIIC。確保SCL頻率配置為100kHz或400kHz。使用軟件應用來設置主接收器控制器的控制寄存器。

與對應主發射器的步驟3相同,檢查中斷是否已清除,并且已配置實際SCL的時鐘分頻器。將讀取數據計數填入PSIIC的傳輸大小寄存器。如果傳輸大小大于FIFO深度,則啟用HOLD位。將地址寫入從地址寄存器等待數據接收完成,可通過檢查狀態寄存器的RXDV位來確認。如果RXDV=0且ISR中有任意中斷位處于置位狀態,則停止傳輸并報告錯誤。同樣,如果RXDV=1且ISR中有任意中斷位處于置位狀態,則停止傳輸并報告錯誤。如果RXDV=1且未報告任何錯誤,則從FIFO讀取數據,直至狀態變為RXDV=1為止。如果尚未完成接收的剩余數據(來自從設備)小于FIFO深度,則清除HOLD位。等待ISR中的COMP位變為置位狀態以完成傳輸。以上對應編程序列的調試步驟適用于默認輪詢方法。

如果對主接收器使用中斷方法,則存在如下差異:您需要在數據傳輸前啟用中斷無需監控RXDV位,而需檢查ISR中的DATA位。常見問題解答

在IIS中,何謂“超時”?

如果在任何時間點上,主設備或接入的從設備將

SCL時鐘信號置于低位,且時間超過超時寄存器中指定的時間段,則會生成[TO]中斷位以避免出現停滯狀況。如何將PSIIC復位?

寄存器

RST_LPD_IOU2位9和10用于復位控制器支持哪些模式?

主設備模式、從設備模式以及多重主設備模式。

注:在多重主設備模式下,所有主設備中的SCL頻率需保持相同。支持哪些頻率?

僅支持100kHz和400kHz。用戶如何檢查總線錯誤?

在ISR寄存器中,監控總線上是否存在ARB_LOST、NACK、RX_OVF和RX_UNF錯誤。如何區分DATA標記與COMP標記?

在ISR寄存器中,對應每讀取14字節數據,DATA位就有一個觸發器,而COMP位則用于指示傳輸完成。PSIIC遵循何種規范?

NXP規范UM10204

支持的最大數據發射率是多少?

255

個字節AXIIIC編程序列調試:

用戶可以使用以下讀寫操作來調試AXIIICIP,以了解協議是否正常工作。快速獲取結果的首選選項是使用“動態”編程進行調試。動態讀取操作:此操作的最終目的是從從設備中讀取單一寄存器,以證明主從設備的功能是否正常。使用寫入操作將START+從設備地址一起寫入TXFIFO將從設備的子寄存器地址寫入TXFIFO使用讀取操作將RE-START+從設備地址一起寫入TXFIFO將STOP+要從從設備讀取的字節數一起寫入TXFIFO使用控制寄存器來啟用控制器輪詢RX_FIFO_EMPTY的狀態寄存器,以查看數據接收狀態(如果RX_FIFO=0,則數據已進入接收FIFO內)如果RXFIFO中無數據,且RX_FIFO_EMPTY為1,則可遵循以下步驟來了解問題:如果由于從設備不響應而導致無法接收數據,那么原因可能是指定地址不存在任何從設備。請復查從設備地址是否正確。如果您確認從設備地址正確無誤,請探測SCL/SDA以了解是否正在從從設備生成ACK。如果有來自從設備的ACK,請以相同方式檢查子寄存器,以對通信進行調試。檢查TX_FIFO_Empty標記,確認是否所有數據都已完成發射。如果步驟6中未發現任何問題,則表示您可從從設備接收數據,請檢查是否已建立通信。動態寫入操作:使用寫入操作將START+從設備地址一起寫入TXFIFO將從設備的子寄存器地址寫入TXFIFO將除最后一個字節外的所有數據字節都寫入TXFIFO將STOP+最后一個數據字節寫入TXFIFO使用控制寄存器來啟用控制器輪詢TX_FIFO_EMPTY的狀態寄存器,以判定數據發射狀態(TX_FIFO_Empty=1表示數據發射已完成)。如果用戶想要檢查寫入操作是否正確,可通過以下步驟來進行調試:請檢查發射占用寄存器,確認是否已發射所有數據。用戶還可以執行上述讀取操作以便通過讀取和驗證數據來交叉驗證寫入操作。如果有來自從設備的ACK,還請以相同方式檢查子寄存器,以對通信進行調試。檢查TX_FIFO_Empty標記,確認是否所有數據都已完成發射。如果步驟6中未發現任何問題,則表示您可將數據寫入從設備,請檢查是否已建立通信。如何開始進行基本設計測試?邏輯測試用例:從PS-IIC訪問EEPROM-用戶可參閱代碼示例以測試如何通過PSIIC控制器訪問從設備。針對從設備的低級AXIIIC寄存器訪問-用戶可使用隨附的代碼示例來測試AXIIIC控制器的基本功能。從AXI-IIC訪問EEPROM-用戶可參閱代碼示例以測試如何通過AXIIIC控制器訪問從設備。

Linux測試用例:從PS-IIC訪問EEPROM請參閱Wiki頁面/wiki/spaces/A/pages/18842160/Cadence+I2C+Driver以獲取PSIIC內核配置、設備樹節點和可用的用戶應用示例。從AXI-IIC訪問EEPROM請參閱Wiki頁面/wiki/spaces/A/pages/18841974/Linux+I2C+Driver以獲取AXIIIC內核配置、設備樹節點和可用的sysfs示例。時鐘拉伸IIC設備可以通過拉伸SCL來延緩通信。在SCL低位狀態下,總線上的任何IIC主設備或從設備均可額外下拉SCL以防止其重新拉高,使其能夠降低SCL時鐘速率或者將IIC通信停止一段時間。如何使用AXI-IIC來測試時鐘拉伸測試用例的目的是生成時鐘拉伸機制。簡單硬件設計示例如下:創建含2個AXI-IICIP實例的Vivado硬件設計在此測試用例中,2個IP的輸出頻率相同。每個AXIIICIP的SCL和SDA都應在外部環回,即SCL0到SCL1且SDA0到SDA1。設計就緒后,您就可以導出到SDK并包含以下附件中的源代碼。注:隨附的模塊框圖和源代碼示例已在ZCU102板上經過測試。用戶可以在自己的定制板上利用此測試用例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論