一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ZYNQ FPGA的PS端IIC設(shè)備接口使用

FPGA設(shè)計(jì)論壇 ? 來(lái)源:FPGA設(shè)計(jì)論壇 ? 2025-04-17 11:26 ? 次閱讀

zynq系列中的FPGA,都會(huì)自帶兩個(gè)iic設(shè)備,我們直接調(diào)用其接口函數(shù)即可運(yùn)用。使用xilinx官方提供的庫(kù)函數(shù),開(kāi)發(fā)起來(lái)方便快捷。

一:配置vavido

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

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

二:sdk開(kāi)發(fā)

創(chuàng)建好工程后,在sdk中對(duì)iic設(shè)備進(jìn)行初始化,和對(duì)iic設(shè)備的讀寫(xiě)操作。

首先是對(duì)iic設(shè)備進(jìn)行初始化,初始化iic設(shè)備的基地址,設(shè)備id,iic時(shí)鐘頻率等信息。

u32 XpsIic_Initialize(XIicPs*InstancePtr,u16 DeviceID,u32 iic_clk) { int Status; XIicPs_Config *Config;// print("查找設(shè)備信息");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;} /*  * 設(shè)置i2c的sclk時(shí)鐘  */  Status=XIicPs_SetSClk(InstancePtr, iic_clk);if (Status!= XST_SUCCESS) { print("設(shè)置clk失敗");return XST_FAILURE;} return XST_SUCCESS;}

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

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

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

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

4個(gè)參數(shù):

@param InstancePtr is a pointer to the XIicPs instance. 設(shè)備指針

@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ù)的個(gè)數(shù)

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

2:接收函數(shù)

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

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

四個(gè)參數(shù):

@param InstancePtr is a pointer to the XIicPs instance. 設(shè)備指針

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

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

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

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

舉個(gè)例子:

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

在這個(gè)時(shí)序中可以看出,我們是先發(fā)送一個(gè)寫(xiě)動(dòng)作,但沒(méi)有實(shí)際數(shù)據(jù)寫(xiě)入,然后在發(fā)送一個(gè)讀指令。在sdk中寫(xiě)函數(shù)和讀函數(shù)是分開(kāi)的,所以我們?cè)谧x取數(shù)據(jù)時(shí),可能跟我們?cè)谑褂?a href="http://www.www27dydycom.cn/analog/" target="_blank">模擬iic操作的時(shí)候不太一樣。

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ā)送 寫(xiě)地址+轉(zhuǎn)換寄存器地址if(status != XST_SUCCESS) {returnXST_FAILURE; }  while(XIicPs_BusIsBusy(InstancePtr)); status =XIicPs_MasterRecvPolled(InstancePtr, ADS1015Buf,2, Read_addr); //在發(fā)送讀地址進(jìn)行讀取數(shù)據(jù)if(status != XST_SUCCESS) {returnXST_FAILURE; }returnXST_SUCCESS; }

注意事項(xiàng):

使用iic的接口函數(shù)進(jìn)行開(kāi)發(fā)時(shí),從機(jī)的器件地址是7位的,不帶讀寫(xiě)位。比如你在調(diào)用讀/寫(xiě)函數(shù)時(shí),程序內(nèi)部會(huì)在這個(gè)地址的后面自動(dòng)的補(bǔ)上這個(gè)讀寫(xiě)位,所以這也和上面提到的為什么sdk有單獨(dú)的讀寫(xiě)函數(shù),也是基于這個(gè)原因。你調(diào)用寫(xiě)函數(shù)時(shí),就會(huì)在后自動(dòng)補(bǔ)上0;調(diào)用讀函數(shù)時(shí),就會(huì)在后面自動(dòng)補(bǔ)1。

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

    關(guān)注

    1642

    文章

    21918

    瀏覽量

    611929
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8885

    瀏覽量

    152960
  • Zynq
    +關(guān)注

    關(guān)注

    10

    文章

    614

    瀏覽量

    47894
  • IIC設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    5195

原文標(biāo)題:ZYNQ——PS端IIC設(shè)備接口使用

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    ZYNQ7000系列 PS、PL、AXI 、啟動(dòng)流程基本概念

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

    ZYNQ中的ps到底擔(dān)任了什么作用?

    ZYNQ中的ps到底擔(dān)任了什么作用?,除了不用FPGA設(shè)計(jì)接口驅(qū)動(dòng)還有什么?
    發(fā)表于 01-26 14:01

    zynq XC7Z100板卡學(xué)習(xí)資料:基于zynq XC7Z100 FMC接口通用計(jì)算平臺(tái)

    、USB口、UART-RS422、千兆網(wǎng)、JTAG調(diào)試等接口。二、基礎(chǔ)接口和性能核心板:使用 Zynq-7100SoC 對(duì)嵌入式應(yīng)用進(jìn)行快速原型設(shè)計(jì)以實(shí)現(xiàn)優(yōu)化;PS
    發(fā)表于 03-24 09:39

    ZYNQ PSIIC接口使用筆記分享

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

    ZYNQ PSIIC接口使用筆記分享

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

    ZYNQ PSIIC接口怎么使用?

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

    Zynq-7000 PSIIC接口使用筆記

    ZYNQ7000系列FPGAPS自帶兩個(gè)IIC接口接口PIN IO可擴(kuò)展為EMIO形式即將I
    的頭像 發(fā)表于 07-25 17:56 ?2611次閱讀
    <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自帶兩個(gè)IIC接口,接口PIN IO可擴(kuò)展為EMIO形式即將I
    發(fā)表于 01-28 08:05 ?25次下載
    <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 的啟動(dòng)流程介紹

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

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

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

    FPGAs,ZynqZynq MPSoC器件的特點(diǎn)

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

    有關(guān)AXI IICPS IIC的自調(diào)試技巧

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

    Zynq系列FPGA的亮點(diǎn)

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

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

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