伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ZYNQ FPGA的PS端IIC設備接口使用

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2025-04-17 11:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

zynq系列中的FPGA,都會自帶兩個iic設備,我們直接調用其接口函數(shù)即可運用。使用xilinx官方提供的庫函數(shù),開發(fā)起來方便快捷。

一:配置vavido

創(chuàng)建block design,勾選iic設備,可以看到iic的引腳可以進行這種分配,對照原理圖,勾選對應的引腳即可。

56c47362-19d6-11f0-9310-92fbcf53809c.png

二:sdk開發(fā)

創(chuàng)建好工程后,在sdk中對iic設備進行初始化,和對iic設備的讀寫操作。

首先是對iic設備進行初始化,初始化iic設備的基地址,設備id,iic時鐘頻率等信息。

u32 XpsIic_Initialize(XIicPs*InstancePtr,u16 DeviceID,u32 iic_clk) { int Status; XIicPs_Config *Config;// print("查找設備信息");Config = XIicPs_LookupConfig(DeviceID);if (NULL== Config) { print("查找id失敗");return XST_FAILURE;} Status = XIicPs_CfgInitialize(InstancePtr, Config, Config->BaseAddress);if (Status!= XST_SUCCESS) { return XST_FAILURE;} Status = XIicPs_SelfTest(InstancePtr);if (Status!= XST_SUCCESS) { return XST_FAILURE;} /*  * 設置i2c的sclk時鐘  */  Status=XIicPs_SetSClk(InstancePtr, iic_clk);if (Status!= XST_SUCCESS) { print("設置clk失敗");return XST_FAILURE;} return XST_SUCCESS;}

然后就是iic的讀寫操作,我們使用官方提供的iic接口函數(shù),有時候也需要對其再次進行封裝,這樣自己使用起來比較順手。

1:發(fā)送函數(shù)

s32 XIicPs_MasterSendPolled(XIicPs*InstancePtr, u8 *MsgPtr,              s32 ByteCount, u16 SlaveAddr)             

這是一個用于master的輪詢發(fā)送函數(shù),我們常用的iic發(fā)送函數(shù)模式就是輪詢的,至于中斷模式的,則是另一個函數(shù)XIicPs_MasterSend()。兩者看起來容易混淆

4個參數(shù):

@param InstancePtr is a pointer to the XIicPs instance. 設備指針

@param MsgPtr is the pointer to the send buffer. 待發(fā)送數(shù)據(jù)數(shù)組指針

@param ByteCount is the number of bytes to be sent. 發(fā)送數(shù)據(jù)的個數(shù)

@param SlaveAddr is the address of the slave we are sending to. 從機地址

2:接收函數(shù)

s32 XIicPs_MasterRecvPolled(XIicPs*InstancePtr, u8 *MsgPtr,          s32 ByteCount, u16 SlaveAddr)

此函數(shù)也是只用于輪詢模式的,不適合中斷模式的讀取,中斷模式的接收函數(shù)叫XIicPs_MasterRecv()

四個參數(shù):

@param InstancePtr is a pointer to the XIicPs instance. 設備指針

@param MsgPtr is the pointer to the receive buffer. 接收數(shù)據(jù)存儲的地方

@param ByteCount is the number of bytes to be received. 接收到的數(shù)據(jù)個數(shù)

@param SlaveAddr is the address of the slave we are receiving from. 從機地址

對于讀函數(shù),需要在注意的地方在于需要根據(jù)實際設備的讀時序進行封裝,直接調用這個函數(shù)可能不會成功。

舉個例子:

56e3f11a-19d6-11f0-9310-92fbcf53809c.png

在這個時序中可以看出,我們是先發(fā)送一個寫動作,但沒有實際數(shù)據(jù)寫入,然后在發(fā)送一個讀指令。在sdk中寫函數(shù)和讀函數(shù)是分開的,所以我們在讀取數(shù)據(jù)時,可能跟我們在使用模擬iic操作的時候不太一樣。

u32XpsIic_ADS1015_Read(XIicPs *InstancePtr,u8Write_addr,u8ConReg_addr,u8Read_addr) { int status;u8buf[1]; buf[0] = ConReg_addr; status =XIicPs_MasterSendPolled(InstancePtr, buf,1,Write_addr); //先發(fā)送 寫地址+轉換寄存器地址if(status != XST_SUCCESS) {returnXST_FAILURE; }  while(XIicPs_BusIsBusy(InstancePtr)); status =XIicPs_MasterRecvPolled(InstancePtr, ADS1015Buf,2, Read_addr); //在發(fā)送讀地址進行讀取數(shù)據(jù)if(status != XST_SUCCESS) {returnXST_FAILURE; }returnXST_SUCCESS; }

注意事項:

使用iic的接口函數(shù)進行開發(fā)時,從機的器件地址是7位的,不帶讀寫位。比如你在調用讀/寫函數(shù)時,程序內部會在這個地址的后面自動的補上這個讀寫位,所以這也和上面提到的為什么sdk有單獨的讀寫函數(shù),也是基于這個原因。你調用寫函數(shù)時,就會在后自動補上0;調用讀函數(shù)時,就會在后面自動補1。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1662

    文章

    22476

    瀏覽量

    638348
  • 接口
    +關注

    關注

    33

    文章

    9572

    瀏覽量

    157462
  • Zynq
    +關注

    關注

    10

    文章

    632

    瀏覽量

    49541
  • IIC設備
    +關注

    關注

    0

    文章

    3

    瀏覽量

    5271

原文標題:ZYNQ——PS端IIC設備接口使用

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ZYNQ Ultrascale+ MPSOC FPGA教程】第三十二章PL讀寫PSDDR數(shù)據(jù)

    PL和PS的高效交互是zynq soc開發(fā)的重中之重,我們常常需要將PL的大量數(shù)據(jù)實時送到PS處理,或者將
    的頭像 發(fā)表于 01-30 09:54 ?1.7w次閱讀
    【<b class='flag-5'>ZYNQ</b> Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第三十二章PL讀寫<b class='flag-5'>PS</b><b class='flag-5'>端</b>DDR數(shù)據(jù)

    ZYNQ7000系列 PS、PL、AXI 、啟動流程基本概念

    /005899fe6815 二、ZYNQ7020 分為PS、PL PS: 處理系統(tǒng) (Processing System) , 就是與
    的頭像 發(fā)表于 05-12 10:25 ?2w次閱讀
    <b class='flag-5'>ZYNQ</b>7000系列 <b class='flag-5'>PS</b>、PL、AXI 、啟動流程基本概念

    ZYNQ中的ps到底擔任了什么作用?

    ZYNQ中的ps到底擔任了什么作用?,除了不用FPGA設計接口驅動還有什么?
    發(fā)表于 01-26 14:01

    ZYNQ PSIIC接口使用筆記分享

    ZYNQ7000系列FPGAPS自帶兩個IIC接口接口PIN IO可擴展為EMIO形式即將I
    發(fā)表于 12-23 17:06

    ZYNQ PSIIC接口使用筆記分享

      ZYNQ7000系列FPGAPS自帶兩個IIC接口,接口PIN IO可擴展為EMIO形式即
    發(fā)表于 01-08 16:44

    ZYNQ PSIIC接口怎么使用?

    ZYNQ PSIIC接口使用筆記
    發(fā)表于 02-23 06:23

    Zynq-7000 PSIIC接口使用筆記

    ZYNQ7000系列FPGAPS自帶兩個IIC接口,接口PIN IO可擴展為EMIO形式即將I
    的頭像 發(fā)表于 07-25 17:56 ?3572次閱讀
    <b class='flag-5'>Zynq</b>-7000 <b class='flag-5'>PS</b><b class='flag-5'>端</b><b class='flag-5'>IIC</b><b class='flag-5'>接口</b>使用筆記

    ZYNQ PSIIC接口使用筆記

    ZYNQ7000系列FPGAPS自帶兩個IIC接口,接口PIN IO可擴展為EMIO形式即將I
    發(fā)表于 01-28 08:05 ?26次下載
    <b class='flag-5'>ZYNQ</b> <b class='flag-5'>PS</b><b class='flag-5'>端</b><b class='flag-5'>IIC</b><b class='flag-5'>接口</b>使用筆記

    ZYNQ:使用PL將任務從PS加載到PL

    的協(xié)議,可用于寄存器式控制/狀態(tài)接口。例如,Zynq XADC 使用 AXI4-Lite 接口連接到 Zynq PS。
    的頭像 發(fā)表于 05-10 09:52 ?5003次閱讀

    ZYNQ 的啟動流程介紹

    普通的 FPGA 一般是可以從 flash 啟動,或者被動加載,但是ZYNQ不行,ZYNQ必須PS參與
    的頭像 發(fā)表于 07-22 10:10 ?1.1w次閱讀

    ZYNQ7020的PS的基本開發(fā)流程

    這篇文章記錄ZYNQ7020的PS的基本開發(fā)流程,關于PL的開發(fā)流程,參考之前文章,這里放個超鏈接。
    的頭像 發(fā)表于 07-24 18:12 ?1.3w次閱讀

    FPGAs,ZynqZynq MPSoC器件的特點

    Zynq MPSoC是Zynq-7000 SoC(之后簡稱Zynq)的進化版本。Zynq是賽靈思發(fā)布的集成PL(FPGA)和
    的頭像 發(fā)表于 08-15 09:16 ?4063次閱讀

    有關AXI IICPS IIC的自調試技巧

    AXI IICPS IIC 控制器都符合 NXP IIC 總線規(guī)范。用戶必須確保其選擇使用的從設備的時序參數(shù)與UM10204 的第 4
    發(fā)表于 08-25 10:29 ?2805次閱讀

    Zynq系列FPGA的亮點

    Zynq 系列的亮點在于 FPGA 里包含了完整的 ARM 處理子系統(tǒng)(PS),每一顆 Zynq 系列的處理器都包含了Cortex-A9處理器,整個處理器的搭建都以處理器為中心, 而且
    的頭像 發(fā)表于 08-06 10:20 ?2505次閱讀
    <b class='flag-5'>Zynq</b>系列<b class='flag-5'>FPGA</b>的亮點

    xilinx ZYNQ7000系列基本開發(fā)流程之PS

    ZYNQ 芯片分為 PL 和 PS, PS 的 IO 分配相對是固定的,不能任意分配,雖然 PS
    的頭像 發(fā)表于 08-11 09:36 ?1.4w次閱讀
    xilinx <b class='flag-5'>ZYNQ</b>7000系列基本開發(fā)流程之<b class='flag-5'>PS</b><b class='flag-5'>端</b>