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

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

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

RISC V的I2C操作

XL FPGA技術(shù)交流 ? 2024-11-01 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


接口處理

top接口

output system_i2c_0_io_sda_writeEnable,

output system_i2c_0_io_sda_write,

input system_i2c_0_io_sda_read,

output system_i2c_0_io_scl_writeEnable,

output system_i2c_0_io_scl_write,

input system_i2c_0_io_scl_read,

soc接口處理

.system_i2c_0_io_sda_write(system_i2c_0_io_sda_write),

.system_i2c_0_io_sda_read(system_i2c_0_io_sda_read),

.system_i2c_0_io_scl_write(system_i2c_0_io_scl_write),

.system_i2c_0_io_scl_read(system_i2c_0_io_scl_read),

WriteEnable信號的處理

I2CSDASCL對應(yīng)FPGA雙向IO,需設(shè)置為弱上拉。

I2C對應(yīng)的三態(tài)門的OE信號:需要賦值為I2C SDA/SCLwrite信號;rtl中的表述如下:

主要原因在于:i2c通信過程中,當(dāng)總線空閑時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDASCL都是線""關(guān)系。

2)引腳在輸出信號的同時還將引腳上的電平進(jìn)行檢測,檢測是否與剛才輸出一致,為"時鐘同步""總線仲裁"提供了硬件基礎(chǔ)。

assign system_i2c_0_io_sda_writeEnable = !system_i2c_0_io_sda_write;

assign system_i2c_0_io_scl_writeEnable = !system_i2c_0_io_scl_write;

Interface配置示例


I2C寄存器設(shè)置

在I2C的設(shè)置中第一步是要配置寄存器。寄存器的說明在ds文檔中。

tsuData中,1代表10ns;

Timeout中,1表示10ns

tLow和tHigh的1代表10ns




10.1.3 軟件部分(Risc V

l I2C通信主要包括以下幾個部分:

1、主設(shè)備發(fā)送起始位(Start

2、主/從發(fā)送數(shù)據(jù)(TxData(注:軟件處理時,主發(fā)送從設(shè)備的地址和讀/寫位,與發(fā)送數(shù)據(jù)處理方式相同)

3、主/從接收數(shù)據(jù)(RxData

4、主/從發(fā)送應(yīng)答信號(ACK

5、主設(shè)備發(fā)送停止位(Stop


l 對應(yīng)的C函數(shù):

1、主設(shè)備發(fā)送起始位(Start

i2c_masterStartBlocking(I2C_CTRL);//master send start signal

2、主/從發(fā)送數(shù)據(jù)(TxData

i2c_txByte(I2C_CTRL, 0xC0);//master/slave send data

3、/從接收數(shù)據(jù)(RxData

i2c_rxData(I2C_CTRL)//master/slave receive data

4、主/從發(fā)送應(yīng)答信號(ACK

i2c_txAckBlocking(I2C_CTRL);//master/slave send ACKi2c_txNackBlocking(I2C_CTRL);//master/slave send NaCK#(不需要發(fā)送ACK,但是需要等待一個應(yīng)答周期的時候,用Nack函數(shù))

5、主設(shè)備發(fā)送停止位(Stop

i2c_masterStopBlocking(I2C_CTRL);//master send stop

l 小結(jié):

RISC V中提供的關(guān)于I2C的函數(shù),相當(dāng)于把I2C通信過程中各個狀態(tài)進(jìn)行了分解的,上述提到的各個函數(shù)功能,除了必須通過I2C主設(shè)備實(shí)現(xiàn)的功能:發(fā)送startstop之外,函數(shù)本身并沒有主從之分;

當(dāng)需要RISC V中的I2C做從設(shè)備時,只需監(jiān)控總線狀態(tài)(如是否接收到有效的數(shù)據(jù)等),同時調(diào)用對應(yīng)的函數(shù),給主設(shè)備發(fā)送應(yīng)答信號,根據(jù)主設(shè)備提供的指令,接收/發(fā)送相應(yīng)的數(shù)據(jù)即可;

硬件驗(yàn)證平臺


原文標(biāo)題:RISC V的I2C操作

文章出處:【微信公眾號:易靈思FPGA技術(shù)交流】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

    關(guān)注

    1644

    文章

    22007

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?1354次閱讀

    I2C總線通信原理 如何設(shè)計(jì)I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進(jìn)行通信的串行通信協(xié)議。它最早由飛利浦公司(現(xiàn)被恩智浦電子收購)于1982年推出,是一種簡單
    的頭像 發(fā)表于 01-31 15:01 ?1005次閱讀

    I2C總線與Arduino的接口示例

    在現(xiàn)代電子設(shè)計(jì)中,I2C總線因其簡單性和靈活性而廣受歡迎。它允許多個設(shè)備共享同一通信線路,從而節(jié)省空間和成本。Arduino,作為一個多功能的微控制器平臺,自然也支持I2C通信。 I2C總線
    的頭像 發(fā)表于 01-17 15:34 ?1491次閱讀

    I2C總線的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,扮演著至關(guān)重要的角色。它允許多個設(shè)備共享同一總線,進(jìn)行數(shù)據(jù)傳輸,從而簡化了系統(tǒng)設(shè)計(jì)并降低了成本。 I2C總線的基本特性 I2C總線由
    的頭像 發(fā)表于 01-17 15:32 ?906次閱讀

    I2C總線故障排除技巧

    I2C總線是一種廣泛使用的串行通信協(xié)議,它允許多個設(shè)備在兩條線上(數(shù)據(jù)線SDA和時鐘線SCL)進(jìn)行通信。由于其簡單性和靈活性,I2C總線在嵌入式系統(tǒng)中非常流行。然而,當(dāng)I2C總線出現(xiàn)問題時,可能會
    的頭像 發(fā)表于 01-17 15:20 ?2125次閱讀

    I2C總線設(shè)備地址設(shè)置方法

    通常是一個7位或10位的數(shù)字,用于標(biāo)識總線上的每個設(shè)備。在7位尋址模式下,地址范圍是0x00到0x7F,而在10位尋址模式下,地址范圍是0x000到0x3FF。I2C地址的最低位(LSB)通常用于指示讀/寫操作。 硬件地址設(shè)置 1. 地址引腳配置 許多
    的頭像 發(fā)表于 01-17 15:17 ?3861次閱讀

    I2C總線應(yīng)用實(shí)例分析

    在現(xiàn)代電子系統(tǒng)中,I2C總線因其簡單、靈活和高效的特點(diǎn)而被廣泛應(yīng)用于各種設(shè)備之間的通信。 I2C總線概述 I2C總線由Philips(現(xiàn)為NXP)在1980年代初期開發(fā),最初用于音頻和視頻設(shè)備
    的頭像 發(fā)表于 01-17 15:09 ?691次閱讀

    I2C總線上拉電阻阻值如何確定?

    導(dǎo)讀I2C總線在產(chǎn)品設(shè)計(jì)中被廣泛應(yīng)用,盡管其結(jié)構(gòu)簡單,但經(jīng)常發(fā)生上拉電阻設(shè)計(jì)不合理的問題。本文將對I2C上拉電阻的選擇進(jìn)行簡要分析。一根信號線上,通過電阻連接一個固定的高電平VCC,信號線初始、空閑
    的頭像 發(fā)表于 12-27 11:34 ?1762次閱讀
    <b class='flag-5'>I2C</b>總線上拉電阻阻值如何確定?

    I2C協(xié)議的基礎(chǔ)知識

    本文從I2C協(xié)議的概述開始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結(jié)構(gòu),最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計(jì)算。
    的頭像 發(fā)表于 10-22 15:51 ?1946次閱讀
    <b class='flag-5'>I2C</b>協(xié)議的基礎(chǔ)知識

    使用USCI I2C主站

    電子發(fā)燒友網(wǎng)站提供《使用USCI I2C主站.pdf》資料免費(fèi)下載
    發(fā)表于 10-21 09:30 ?0次下載
    使用USCI <b class='flag-5'>I2C</b>主站

    I2C噪聲毛刺濾波

    電子發(fā)燒友網(wǎng)站提供《I2C噪聲毛刺濾波.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 14:39 ?6次下載
    <b class='flag-5'>I2C</b>噪聲毛刺濾波

    了解I2C總線

    電子發(fā)燒友網(wǎng)站提供《了解I2C總線.pdf》資料免費(fèi)下載
    發(fā)表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b>總線

    I2C基本指南

    電子發(fā)燒友網(wǎng)站提供《I2C基本指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-10 09:40 ?0次下載
    <b class='flag-5'>I2C</b>基本指南

    CAN轉(zhuǎn)I2C橋接器

    電子發(fā)燒友網(wǎng)站提供《CAN轉(zhuǎn)I2C橋接器.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 11:10 ?0次下載
    CAN轉(zhuǎn)<b class='flag-5'>I2C</b>橋接器

    UART轉(zhuǎn)I2C橋接器

    電子發(fā)燒友網(wǎng)站提供《UART轉(zhuǎn)I2C橋接器.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 09:24 ?1次下載
    UART轉(zhuǎn)<b class='flag-5'>I2C</b>橋接器

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學(xué)習(xí)
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品