色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

I2C數(shù)據(jù)傳輸?shù)娜齻€(gè)主要API

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux系統(tǒng)開(kāi)發(fā) ? 作者:嵌入式Linux系統(tǒng)開(kāi) ? 2023-07-22 15:04 ? 次閱讀

I2C Data Transfer

I2C 數(shù)據(jù)傳輸主要有三個(gè) API

int i2c_master_send(const struct i2c_client *client,const char *buf,int count)

client:I2C 設(shè)備對(duì)應(yīng)的 i2c_client。
buf:要發(fā)送的數(shù)據(jù)。
count:要發(fā)送的數(shù)據(jù)字節(jié)數(shù),要小于 64KB,以為 i2c_msg 的 len 成員變量是一個(gè) u16(無(wú)符號(hào) 16 位)類(lèi)型的數(shù)據(jù)。
返回值:負(fù)值,失敗,其他非負(fù)值,發(fā)送的字節(jié)數(shù)。

int i2c_master_recv(const struct i2c_client *client,char *buf,int count)
client:I2C 設(shè)備對(duì)應(yīng)的 i2c_client。
buf:要接收的數(shù)據(jù)。
count:要接收的數(shù)據(jù)字節(jié)數(shù),要小于 64KB,以為 i2c_msg 的 len 成員變量是一個(gè) u16(無(wú)符號(hào) 16 位)類(lèi)型的數(shù)據(jù)。
返回值:負(fù)值,失敗,其他非負(fù)值,發(fā)送的字節(jié)數(shù)。

int i2c_transfer(struct i2c_adapter *adap,struct i2c_msg *msgs,int num)

adap:所使用的 I2C 適配器,i2c_client 會(huì)保存其對(duì)應(yīng)的 i2c_adapter。
msgs:I2C 要發(fā)送的一個(gè)或多個(gè)消息。
num:消息數(shù)量,也就是 msgs 的數(shù)量。
返回值:負(fù)值,失敗,其他非負(fù)值,發(fā)送的 msgs 數(shù)量。

i2c_master_send 和 i2c_master_recv 都是對(duì) i2c_transfer 的封裝。因此我們重點(diǎn)研究 i2c_transfer。

圖片

其中,adap->algo->master_xfer 由芯片原廠提供。在 MTK 平臺(tái),是 mtk_i2c_transfer 函數(shù),不同平臺(tái)命名不同。

static int mtk_i2c_transfer(struct i2c_adapter *adap,struct i2c_msg msgs[], int num)
{
 int ret;
 int left_num = num;
 struct mtk_i2c *i2c = i2c_get_adapdata(adap);

  //打開(kāi)時(shí)鐘
 ret = mtk_i2c_clock_enable(i2c);
 if (ret)
  return ret;

  //初始化硬件
 mtk_i2c_init_hw(i2c);

 i2c- >auto_restart = i2c- >dev_comp- >auto_restart;

 if (i2c- >auto_restart && num == 2) {
  if (!(msgs[0].flags & I2C_M_RD) && (msgs[1].flags & I2C_M_RD) &&
      msgs[0].addr == msgs[1].addr) {
   i2c- >auto_restart = 0;
  }
 }

 if (i2c- >auto_restart && num >= 2 && i2c- >speed_hz > MAX_FS_MODE_SPEED)
  i2c- >ignore_restart_irq = true;
 else
  i2c- >ignore_restart_irq = false;

 while (left_num--) {
  if (!msgs- >buf) {
   dev_dbg(i2c- >dev, "data buffer is NULL.n");
   ret = -EINVAL;
   goto err_exit;
  }

  if (msgs- >flags & I2C_M_RD)
   i2c- >op = I2C_MASTER_RD;
  else
   i2c- >op = I2C_MASTER_WR;

  if (!i2c- >auto_restart) {
   if (num > 1) {
    /* combined two messages into one transaction */
    i2c- >op = I2C_MASTER_WRRD;
    left_num--;
   }
  }

  /* always use DMA mode. */
  ret = mtk_i2c_do_transfer(i2c, msgs, num, left_num);
  if (ret < 0)
   goto err_exit;

  msgs++;
 }
 /* the return value is number of executed messages */
 ret = num;

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

    關(guān)注

    9

    文章

    1950

    瀏覽量

    64757
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1509

    瀏覽量

    62261
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1495

    瀏覽量

    124231
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于數(shù)據(jù)傳輸接口

    單片機(jī)用于數(shù)據(jù)傳輸的外設(shè)有哪些?原諒在下孤陋寡聞,我所知道的有SPI、I2C,不知還有哪些?誰(shuí)的數(shù)據(jù)傳輸速度最快?
    發(fā)表于 09-02 12:22

    VEML6040顏色傳感器是如何利用I2C總線進(jìn)行數(shù)據(jù)傳輸

    VEML6040是什么?VEML6040顏色傳感器的外圍電路是怎樣的?VEML6040顏色傳感器是如何利用I2C總線進(jìn)行數(shù)據(jù)傳輸呢?
    發(fā)表于 02-14 06:35

    imx8mp i2c數(shù)據(jù)傳輸速度慢怎么處理?如何加速?

    時(shí)鐘的 i2c 加載相同的二進(jìn)制數(shù)據(jù)需要大約 5.2 秒。 我們可以做些什么來(lái)加速 i2c 數(shù)據(jù)傳輸?我們使用了 yocto/hardnott 和 kirkstone,兩者都很慢。
    發(fā)表于 05-16 06:28

    如何將USB HID連接到EEPROM設(shè)備控制NUC240的I2C數(shù)據(jù)傳輸

    控制NUC240的I2C數(shù)據(jù)傳輸。 您可以在下列時(shí)間下載樣本代碼http://www.nuvoton.com/resources-downlo. 1227151637。 nuvoton 核
    發(fā)表于 08-22 08:08

    如何控制USB HID連接到EEPROM設(shè)備上來(lái)控制NUC240的I2C數(shù)據(jù)傳輸

    控制NUC240的I2C數(shù)據(jù)傳輸。 您可以在下列時(shí)間下載樣本代碼http://www.nuvoton.com/resources-downlo. 1227151637。 nuvoton 核
    發(fā)表于 08-30 06:47

    HT45R37使用I2C進(jìn)行數(shù)據(jù)傳輸的方法 (C語(yǔ)言)

    HT45R37使用I2C進(jìn)行數(shù)據(jù)傳輸的方法 (C語(yǔ)言)HT45R37 提供SIM 串行傳輸功能,分別是SPI 功能和I2C 功能,本文介紹H
    發(fā)表于 03-27 08:36 ?12次下載

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法 HT56R678 內(nèi)建有SIM 功能,其中包括了SPI 和I2C 兩種通信接口,本文以HT56R678 為母體,介紹使用I2C 進(jìn)行
    發(fā)表于 03-27 09:25 ?16次下載

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法

    HT56R678使用I2C進(jìn)行數(shù)據(jù)傳輸的方法HT56R678 內(nèi)建有SIM 功能,其中包括了SPI 和I2C 兩種通信接口,本文以HT56R678 為母體,介紹使用I2C 進(jìn)行
    發(fā)表于 03-28 22:39 ?7次下載

    什么是IrDa/I2C管理總線

    什么是IrDa/I2C管理總線 IrDa:(Infrared Data:紅外數(shù)據(jù)傳輸)是利用紅外線方式實(shí)現(xiàn)電腦之間的數(shù)據(jù)傳輸。它也需要一個(gè)界面,即紅外線接
    發(fā)表于 02-05 11:47 ?728次閱讀

    I2C隔離器如何實(shí)現(xiàn)雙向數(shù)據(jù)傳輸

    觀看此視頻,了解ADuM1250/ADuM2250 iCoupler?數(shù)字隔離器如何利用Philips針對(duì)I2C開(kāi)發(fā)的電平邏輯系統(tǒng)來(lái)實(shí)現(xiàn)雙向數(shù)據(jù)傳輸
    的頭像 發(fā)表于 08-01 06:06 ?5461次閱讀

    i2c總線用來(lái)做什么_i2c總線數(shù)據(jù)傳輸過(guò)程

    I2C總線控制器為微控制器或微處理器提供控制I2C總線的接口,它控制所有I2C總線的特殊序列、協(xié)議、仲裁、時(shí)序,這里指MPC8250提供的I2C總線控制接口。
    發(fā)表于 11-24 14:16 ?7309次閱讀

    I2C總線數(shù)據(jù)傳輸速度要求

    Semiconductors)在1980年代初期開(kāi)發(fā)。I2C總線因其簡(jiǎn)單性和靈活性而被廣泛應(yīng)用于各種電子設(shè)備中,如傳感器、顯示器、存儲(chǔ)器等。 I2C總線數(shù)據(jù)傳輸速度 I2C總線的
    的頭像 發(fā)表于 01-17 15:15 ?193次閱讀

    I2C總線的工作模式介紹

    兩根線組成:數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)。數(shù)據(jù)線負(fù)責(zé)傳輸數(shù)據(jù),而時(shí)鐘線則用于同步數(shù)據(jù)傳輸I2C
    的頭像 發(fā)表于 01-17 15:32 ?125次閱讀

    I2C總線與Arduino的接口示例

    基礎(chǔ) I2C總線由兩條線組成:數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)。SDA用于傳輸數(shù)據(jù),而SCL用于同步數(shù)據(jù)傳輸
    的頭像 發(fā)表于 01-17 15:34 ?140次閱讀

    I2C總線數(shù)據(jù)包結(jié)構(gòu)詳解

    。以下是I2C總線數(shù)據(jù)包結(jié)構(gòu)的詳解: 一、I2C總線數(shù)據(jù)包的基本組成 I2C總線上的數(shù)據(jù)傳輸
    的頭像 發(fā)表于 01-17 15:46 ?121次閱讀
    主站蜘蛛池模板: 俄罗斯人与动ZOZ0| 亚洲永久精品ww47| 国产曰韩无码亚洲视频| 91精品欧美一区二区三区| 跳蛋按摩棒玉势PLAY高H| 免费麻豆国产黄网站在线观看| 国产亚洲精品A久久777777| 被肉日常np快穿高h| 中国xxxxx| 亚洲色大成网站WWW永久麻豆| 色老头色老太aaabbb| 男生扒开美女尿口戳戳| 九九热国产视频| 国产乱码免费卡1卡二卡3卡四卡| jizz黑丝| 91av成年影院在线播放| 亚洲视频第二页| 乌克兰10一12x video| 秋霞久久久久久一区二区| 年轻的的小婊孑2中文字幕| 久久久久伊人| 精品无码一区二区三区不卡| 国产精品久久久久久久久齐齐| 超碰视频在线| G0GO人体大尺香蕉| 3a丝袜论坛| 中文免费视频| 中文字幕乱偷无码AV蜜桃| 亚洲一在线| 亚洲欧美精品无码大片在线观看 | G国产精品无马| 征服丝袜旗袍人妻| 一个人在线观看免费高清视频| 亚洲 国产 日韩 欧美 在线| 手机免费毛片| 丝袜美女被啪啪不带套漫画| 三级黃60分钟| 婷婷四房播客五月天| 四虎永久精品视频在线| 少妇无码吹潮久久精品AV| 日本浴室日产在线系列|