女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

IIC通訊協議解析

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2022-11-14 16:52 ? 次閱讀

概述

IIC(Inter-Integrated Circuit)其實是IICBus簡稱,所以中文應該叫集成電路總線,它是一種串行通信總線,使用多主從架構,由飛利浦公司在1980年代為了讓主板、嵌入式系統手機用以連接低速周邊設備而發展。I2C的正確讀法為“I平方C”("I-squared-C"),而“I二C”("I-two-C")則是另一種錯誤但被廣泛使用的讀法。自2006年10月1日起,使用I2C協議已經不需要支付專利費,但制造商仍然需要付費以獲取I2C從屬設備地址。

接口

I2C串行總線一般有兩根信號線,一根是雙向的數據線SDA,另一根是時鐘線SCL。所有接到I2C總線設備上的串行數據SDA都接到總線的SDA上,各設備的時鐘線SCL接到總線的SCL上。

  • SCL - 串行時鐘線
  • SDA - 串行數據線
  • 在這里插入圖片描述

為了避免總線信號的混亂,要求各設備連接到總線的輸出端時必須是漏極開路(OD)輸出或集電極開路(OC)輸出。設備上的串行數據線SDA接口電路應該是雙向的,輸出電路用于向總線上發送數據,輸入電路用于接收總線上的數據。而串行時鐘線也應是雙向的,作為控制總線數據傳送的主機,一方面要通過SCL輸出電路發送時鐘信號,另一方面還要檢測總線上的SCL電平,以決定什么時候發送下一個時鐘脈沖電平;作為接受主機命令的從機,要按總線上的SCL信號發出或接收SDA上的信號,也可以向SCL線發出低電平信號以延長總線時鐘信號周期。總線空閑時,因各設備都是開漏輸出,上拉電阻Rp使SDA和SCL線都保持高電平。任一設備輸出的低電平都將使相應的總線信號線變低,也就是說:各設備的SDA是“與”關系,SCL也是“與”關系。 因此SDA和SCL 可以被拉低為低電平,但是不能被驅動為高電平,所以每條線上都要使用一個上拉電阻,默認情況下將其保持在高電平。 在這里插入圖片描述 IIC 總線上數據的傳輸速率在標準模式下可達 100kbit/s 在快速模式下可達 400kbit/s 在高速模式下可達 3.4Mbit/s。

通信協議

SDA 線上的數據必須在時鐘的高電平周期保持穩定。數據線的高或低電平狀態只有在 SCL 線的時鐘信號是低電平時才能改變。 在這里插入圖片描述

空閑狀態

SDA為高電平,SCL為高電平。

起始狀態

其中一種情況是在 SCL 線是高電平時 SDA 線從高電平向低電平切換,產生一個 下降沿 ,這個情況表示起始條件。

結束狀態

當 SCL 是高電平時 SDA 線由低電平向高電平切換,產生一個 上升沿 ,這個情況表示停止條件。 在這里插入圖片描述

傳輸數據

器件地址位

由于IIC總線上可能掛載著多臺設備,所以主設備在傳輸有效數據之前要先指定從設備的地址, 大多數從設備的地址是7位的,還有部分設備支持10位尋址 ,主設備如果需要向從機發送/接收數據,首先要發送對應從機的地址,然后會匹配總線上掛載的從機的地址。將數據發送至SDA數據線上即可。

讀寫位

緊接著的第 8 位是數據方向位(R/ W) ----'0'表示發送(寫),'1'表示請求數據(讀)。

應答信號位

主設備每發送完8bit數據后等待從設備的ACK。 即在第9個clock,若從設備發ACK,SDA會被拉低。 若沒有ACK,SDA會被置高,這會引起主設備發生RESTART或STOP流程,當ACK=0時為有效應答位,說明從機已經成功接收到該字節,若為1則說明接受不成功。

數據地址位

當找到往哪個設備寫數據之后,就開始尋址往這個設備的特定地址寫數據,和上述的發送器件地址一樣,直接將地址數據發送至SDA線即可。

數據位

發送到 SDA 線上的每個字節必須為8位,每次傳輸可以發送的字節數量不受限制,每個字節后必須跟一個響應位,首先傳輸的是數據的最高位 (MSB) 。 在這里插入圖片描述

示例

設置器件地址為0x78(0111 1000),數據地址為0x40(0100 0000),寫入數據0xAA(1010 1010)。

HAL_I2C_Mem_Write(&hi2c1 ,0x78,0x40,I2C_MEMADD_SIZE_8BIT,data_i,1,0x100);

查看HAL_I2C_Mem_Write說明可以得知,目標設備地址在調用接口之前,數據表中設備的7位地址值必須左移;即發送到從設備的數據已經右移了一位,所以0x78(0111 1000)右移一位變成0x3c(011 1100)。

/**
 * @brief  Write an amount of data in blocking mode to a specific memory address
 * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
 *                the configuration information for the specified I2C.
 * @param  DevAddress Target device address: The device 7 bits address value
 *         in datasheet must be shifted to the left before calling the interface
 * @param  MemAddress Internal memory address
 * @param  MemAddSize Size of internal memory address
 * @param  pData Pointer to data buffer
 * @param  Size Amount of data to be sent
 * @param  Timeout Timeout duration
 * @retval HAL status
  */
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress,
                                    uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout)

通過示波器抓取的波形如下所示。 在這里插入圖片描述

  • 在空閑狀態,SDA和SCL都是處于高電平狀態。

  • 在起始狀態,SDA先產生一個下降沿,之后SCL也出現一個下降沿,此時數據傳輸開始。

  • 在傳輸狀態,由于傳輸速率為100kbit/s,故SCL時鐘的切換時間為5us,一個周期為10us;當SCL為1的時候,SDA不會發生改變,故檢測SDA信號線的數據,當為低電平則為0,高電平則為1.

  • 在讀寫狀態,當SDA數據為0的時候,為寫狀態。

  • 在應答狀態,當SDA數據為0的時候,為應答狀態。 在這里插入圖片描述 上述為成功傳輸的例子,若不成功傳輸,設置器件地址為0x77(0111 0111),數據地址為0x40(0100 0000),寫入數據0xAA(1010 1010)。

    HAL_I2C_Mem_Write(&hi2c1 ,0x77,0x40,I2C_MEMADD_SIZE_8BIT,data_i,1,0x100);
    

    由于地址位0x77(0111 0111)右移一位,故發送出去的為0x3B(011 1011),通過示波器抓取的波形如下所示。 在這里插入圖片描述

    • 在應答狀態,由于沒有連接0x77地址(實際發送為0x3B)的設備,當SDA數據為1的時候,為非應答狀態,之后進入復位或者停止。 在這里插入圖片描述

審核編輯:湯梓紅

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

    關注

    11

    文章

    306

    瀏覽量

    39125
  • 通訊協議
    +關注

    關注

    10

    文章

    284

    瀏覽量

    20706
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    IIC通訊協議解析

    概述 IIC(Inter-Integrated Circuit)其實是IICBus簡稱,所以中文應該叫集成電路總線,它是一種串行通信總線,使用多主從架構,由飛利浦公司在1980年代為了讓主板、嵌入式
    發表于 09-12 16:09

    RS-232-C串口通訊協議解析

    RS-232-C串口通訊協議解析
    發表于 08-18 22:08

    知道通訊協議,怎么用LabVIEW解析

    知道通訊協議,求大師指導怎么用LabVIEW解析
    發表于 05-06 20:19

    stm32之IIC通信協議定義

    1.IIC通信協議定義 IIC通訊協議(Inter----Integrted Circuit)是由Phiips飛利浦公司開發的,由于他引腳少
    發表于 08-20 08:28

    IIC協議總線特點簡介

    IIC協議簡介I2C 通訊協議(Inter-Integrated Circuit)是由Phiilps公司開發的,由于它引腳少,硬件實現簡單,可擴展性強,不需要USART、CAN等
    發表于 08-20 06:12

    IIC通訊協議

    IIC通訊協議
    發表于 08-23 06:30

    LESSON8_IIC總線協議

    iic總線協議通訊方式,通訊工作原理!單片機入門知識
    發表于 06-17 16:48 ?11次下載

    基于KMP算法的串口通訊協議解析鄒鐵

    基于KMP算法的串口通訊協議解析_鄒鐵
    發表于 03-17 08:00 ?2次下載

    FPGA基礎知識之IIC協議讀寫解析

    400kbit/s。本文致力于講述如何用計數器控制和分頻時鐘控制兩種方式完成IIC的讀寫操作。 IIC協議 ??IIC協議是一種多機
    發表于 05-05 10:17 ?8558次閱讀
    FPGA基礎知識之<b class='flag-5'>IIC</b><b class='flag-5'>協議</b>讀寫<b class='flag-5'>解析</b>

    IIC與SPI通訊

    IICInter-Intergrated Circuit(內部集成電路)由數據線SDA和時鐘線SCL構成串行總線,可發送接收數據。SCL:通訊時起到控制作用。SDA:進行位傳輸數據。軟件IIC:通過
    發表于 12-29 19:32 ?3次下載
    <b class='flag-5'>IIC</b>與SPI<b class='flag-5'>通訊</b>

    STM32第九章-IIC通訊應用

      說到IIC(通常也叫I2C,其實都是一樣的)通訊,是一種最簡單的通訊協議。在學習STM32時第一個接觸的就是串口USART
    發表于 02-07 10:32 ?9次下載
    STM32第九章-<b class='flag-5'>IIC</b><b class='flag-5'>通訊</b>應用

    振弦采集模塊的通訊協議IIC

    振弦采集模塊的通訊協議IICIIC 通訊協議本身即是基于設備地址和寄存器的物理層
    的頭像 發表于 11-17 10:02 ?989次閱讀
    振弦采集模塊的<b class='flag-5'>通訊</b><b class='flag-5'>協議</b>( <b class='flag-5'>IIC</b>)

    IIC通訊協議的電路設計

    前面我們概述過一些常見的通訊協議,本文著重講講關于IIC協議
    的頭像 發表于 04-19 11:00 ?2432次閱讀
    <b class='flag-5'>IIC</b><b class='flag-5'>通訊</b><b class='flag-5'>協議</b>的電路設計

    iic通訊的ardunio的文件下載

    里面很多iic通訊的ardunio的文件
    發表于 07-05 10:55 ?4次下載

    EtherCAT通訊協議詳細解析

    Automation GmbH)研發。EtherCAT自2003年被引入市場以來,憑借其高性能、低延遲和靈活的拓撲結構,迅速成為工業自動化領域的重要通信技術之一。本文將對EtherCAT通訊協議進行詳細解析,包括其概述、工作原
    的頭像 發表于 02-02 16:34 ?2515次閱讀