• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    I2C總線器件編程開發(fā)關鍵技術

    2018-12-06 02:10:08黃忠良
    汽車電器 2018年11期
    關鍵詞:機設備高電平字節(jié)

    黃忠良

    (沙洲職業(yè)工學院,江蘇 張家港 215600)

    在微機控制領域,作為外圍芯片的I2C總線器件因結構簡單,可靠性高,得到了廣泛應用。例如存儲芯片24C02,用于記錄密碼及公里數(shù)等,廣泛用于汽車儀表系統(tǒng)。I2C(Inter-Integrated Circuit)總線又稱IIC總線或I2C總線,是PHLIPS公司推出的一種高性能串行總線。采用I2C串行總線技術可以精簡系統(tǒng)硬件設計,提高系統(tǒng)可靠性,同時,系統(tǒng)也易于擴充與升級。24C02作為I2C總線接口存儲芯片,屬串行EEPROM,容量2 kbit,斷電后數(shù)據(jù)不會丟失,常用于記錄密碼及公里數(shù)等場合。

    1 24C02及I2C總線接口電路

    24C02引腳圖如圖1所示,24C02與51單片機接口電路如圖2所示。

    圖1 24C02引腳

    應用I2C總線器件進行編程時,由單片機主機完成I2C總線初始化、數(shù)據(jù)傳送、產生時鐘信號和終止發(fā)送功能,從機24C02接收主機發(fā)送的數(shù)據(jù)。I2C總線具有總線裁決功能,主要依靠從機設備地址實現(xiàn)。對于24C02,8位從機設備地址的高4位固定為1010,后3位為A2、A1、A0,最后1位是數(shù)據(jù)傳送的方向位 (R/W),主機將數(shù)據(jù)寫入從機為“0”,主機從從機讀出數(shù)據(jù)為“1”。

    圖2 24C02與單片機接口電路

    2 I2C總線的數(shù)據(jù)傳送

    2.1 起始條件與停止條件

    只有在起始條件滿足后才能進行數(shù)據(jù)傳送,起始條件與停止條件如圖3所示。

    圖3 起始條件與停止條件

    從圖3可看出,當SCL處于高電平期間,SDA從高電平向低電平跳變時產生起始條件。當SCL處于高電平期間時,SDA從低電平向高電平跳變時產生停止條件。

    2.2 I2C位數(shù)據(jù)傳輸規(guī)定

    位數(shù)據(jù)的有效性及應答信號時序如圖4所示。

    圖4 位數(shù)據(jù)的有效性及應答信號時序

    主機進行數(shù)據(jù)傳送時,從最高位開始逐位傳送,時鐘信號線為高電平期間,位數(shù)據(jù)必須保持不變。另外,每傳送8位數(shù)據(jù) (即一個字節(jié))后,從機都必須產生一個應答信號。

    3 I2C總線接口數(shù)據(jù)讀寫時序與編程

    3.1 24C02字節(jié)讀取時序

    從機讀操作有3種不同的方式:讀當前地址內容、讀隨機地址內容、讀順序地址內容。圖5為24C02讀隨機地址內容操作時序。

    圖5 24C02字節(jié)讀時序

    隨機讀操作允許主機對存儲器的任意字節(jié)進行讀操作,主機首先通過發(fā)送起始信號、從機設備地址和它想讀取的字地址執(zhí)行一個偽寫操作。在從機應答之后,主機重新發(fā)送起始信號和從機設備地址,注意此處R/W位為1,從機響應并發(fā)送應答信號,然后輸出所要求的一個8位字節(jié)數(shù)據(jù),主機不發(fā)送應答信號但產生一個停止信號。

    3.2 24C02字節(jié)寫入時序

    24C02字節(jié)寫操作時序如圖6所示。

    圖6 24C02字節(jié)寫時序

    主機先發(fā)送起始命令,然后發(fā)送從機設備地址數(shù)據(jù),主機在收到從機產生的應答信號后,再發(fā)送一個字的地址數(shù)據(jù),主機再次收到從機的應答信號后,最后發(fā)送數(shù)據(jù)到相應存儲單元。從機再次應答,并在主機產生停止信號后開始內部數(shù)據(jù)的擦寫,在內部擦寫過程中,從機不再應答主機的任何請求。

    3.3 24C02字節(jié)寫入編程

    下列代碼完成24C02字節(jié)寫入。

    void write_byte (uchar add,uchar dat )

    {

    void init ();//I2C總線初始化

    void start (void);//起始條件

    I2Cwr_byte (0xa0);//寫24C02地址

    void ack (void);//從機24C02應答

    I2Cwr_byte (add);//寫單元地址

    void ack (void);//從機24C02應答

    I2Cwr_byte (dat);//寫數(shù)據(jù)

    void ack (void);//從機24C02應答

    void stop (void);//結束條件

    }

    說明:上述用到的幾個被調用函數(shù)定義如下。

    ①void init ();//I2C總線初始化

    {

    sda=1;

    scl=1;

    }

    ②void start (void);//起始條件

    {

    scl=0;//拉低SCL再改SDA以防誤操作

    delay ();

    sda=1;

    delay ();

    scl=1;

    delay ();

    sda=0;

    delay ();

    }

    ③I2Cwr_byte(uchar dat) /*單字節(jié)傳送操作*/

    {

    uchar i;

    scl=0;//時鐘線上的信號為低電平期間,數(shù)據(jù)線上電平狀態(tài)允許變化

    for (i=0;i<8;i++) //采用逐位傳送方式

    {

    if (dat&0x80);//為先傳最高位狀態(tài)作準備

    {

    sda=1;

    }

    else

    {

    sda=0;

    }

    dat=dat<<1;//準備傳送后面一位

    delay ();

    scl=1;//總線數(shù)據(jù)傳送

    delay ();

    scl=0;

    delay ();

    }

    sda=1;//主機釋放總線

    delay ();

    }

    ④void stop (void);//停止條件

    {

    scl=0;//先拉低SCL,再改變SDA

    delay ();

    sda=0;

    delay ();

    scl=1;

    delay ();

    sda=1;

    delay ();

    }

    ⑤void ack (void) //從機應答

    {

    uchar I;

    scl=1;

    delay ();

    while ((sda==1) && (i<200)) i++;//等待接收應答或作超時處理

    scl=0;

    delay ();

    }

    另外,有關24C02字節(jié)的讀取編程見圖5。

    4 結束語

    24CXX芯片目前已廣泛應用在斷電后仍然需要保持存儲數(shù)據(jù)的場合。上述I2C總線存儲單元讀寫編程方法已在Proteus上仿真調試成功。就I2C總線器件編程開發(fā)而言,正確理解操作時序至關重要,否則會導致通信失敗。

    猜你喜歡
    機設備高電平字節(jié)
    一種基于FPGA的PWM防錯輸出控制電路
    No.8 字節(jié)跳動將推出獨立出口電商APP
    TS-03C全固態(tài)PDM中波發(fā)射機開關機控制電路原理及故障分析
    科技傳播(2019年15期)2019-08-22 08:07:44
    No.10 “字節(jié)跳動手機”要來了?
    淺談煤炭生產企業(yè)綜機設備管理問題與優(yōu)化策略
    簡談MC7字節(jié)碼
    DM 50KW中波廣播發(fā)射機欠推動故障分析
    陶瓷工程中冷等靜壓機設備的監(jiān)造工作
    PDM 1kW中波廣播發(fā)射機保護電路分析
    論港機設備狀態(tài)檢測預知維修與管理
    齐河县| 安乡县| 河北区| 镇宁| 太白县| 中西区| 广平县| 安仁县| 盐池县| 普洱| 大英县| 巩留县| 云安县| 盘锦市| 靖西县| 舟山市| 通许县| 汤原县| 榆社县| 遂溪县| 任丘市| 凉城县| 宁都县| 宝兴县| 嘉定区| 左云县| 罗源县| 河西区| 胶南市| 闽侯县| 盘锦市| 仙游县| 乐至县| 博野县| 潜山县| 甘孜| 嘉义县| 砀山县| 贵港市| 绥棱县| 北宁市|