亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于S3C2440A的IIC總線讀寫故障軟件處理研究

        2017-07-09 14:52:26曹雨
        科學與財富 2017年18期
        關(guān)鍵詞:故障處理

        曹雨

        摘 要: IIC總線讀寫故障是IIC器件使用過程中無法回避的現(xiàn)實問題,本文以實際研究為背景,以三星S3C2440A RISC微處理器為例介紹了IIC總線故障的分析及軟件處理方法,為實際應(yīng)用提供了參考。

        關(guān)鍵詞: S3C2440A;IIC總線;故障處理

        一、前言

        IIC總線是由Philips公司開發(fā)并成功推廣的一種雙向兩線通信方式,所有符合IIC總線協(xié)議的器件可通過IIC總線進行獨立通信,實現(xiàn)了IC之間的有效控制。由于IIC總線上可以掛載多個IIC器件,個別IIC器件如果出現(xiàn)故障可能引起總線鎖死,進而引起整個總線通信故障。本文以三星公司的一款RISC微處理器S3C2440A的IIC接口為例對IIC總線讀寫故障的分析及處理進行了研究,給出了故障現(xiàn)象分析及軟件處理方法。

        二、S3C2440A的IIC總線接口

        三星公司的S3C2440A為手持設(shè)備和普通應(yīng)用提供了低功耗和高性能的小型芯片微處理器的解決方案,其處理器是基于Advanced RISC Machines(ARM)公司設(shè)計的16/32位ARM920T核心。S3C2440A可以支持一個多主控IIC總線串行接口。一條專用串行數(shù)據(jù)線(SDA)和一條專用串行時鐘線(SCL)傳遞連接到IIC總線的主控和外設(shè)之間的信息。在多主控IIC總線模式中,多個S3C2440A可以發(fā)送或接收串行數(shù)據(jù)來自或到從設(shè)備。主機S3C2440A可以通過IIC總線啟動和結(jié)束數(shù)據(jù)傳輸,S3C2440A的IIC總線是使用標準總線仲裁步驟。為了控制多主控IIC總線操作,必須寫入值到以下寄存器中:IIC總線控制寄存器(IICCON)、IIC總線控制/狀態(tài)寄存器(IICSTAT)、IIC總線Tx/Rx數(shù)據(jù)移位寄存器(IICDS)、IIC總線地址寄存器(IICADD)。

        當釋放了IIC總線時,SDA和SCL線應(yīng)該都保持為高電平。一個高到低SDA的變化可以啟動一個起始條件。SCL穩(wěn)定保持在高電平時的一個低到高SDA的變化可以啟動一個停止條件。起始和停止條件通常由主設(shè)備產(chǎn)生。第一個數(shù)據(jù)字節(jié)為7位地址值,其在啟動起始條件后放到總線上,可以確定出主設(shè)備要選擇的從設(shè)備。第8位是決定傳輸方向(讀或?qū)懀?。每個放到SDA線上的字節(jié)都應(yīng)該總共為8位。字節(jié)可以在總線傳輸操作期間無限制的發(fā)送或接收。數(shù)據(jù)通常從最高有效位(MSB)開始發(fā)送,并且每個字節(jié)應(yīng)該立即通過應(yīng)答(ACK)位跟上。S3C2440A的IIC總線框圖如下圖1所示,圖2為主機發(fā)送器模式操作流程。

        圖1 IIC總線方框圖

        圖2 主機發(fā)送器模式操作流程

        三、S3C2440A的IIC故障現(xiàn)象分析及處理

        3.1 S3C2440A的IIC故障現(xiàn)象分析

        S3C2440A的U8和M9管腳分別為IICSCL和IICSDA引腳,也可復(fù)用為普通IO口GPE14和GPE15。系統(tǒng)IIC故障時,IIC讀寫無法正常進行,表現(xiàn)為讀寫數(shù)據(jù)錯誤或始終停留在讀寫狀態(tài)等待環(huán)節(jié)。通過軟件調(diào)試跟蹤或者將關(guān)鍵信息點打印輸出可判斷IIC讀寫是否處于故障狀態(tài)。

        在S3C2440A的實際應(yīng)用中有兩種典型的IIC故障問題:一是S3C2440A的IIC引腳接觸不良或損壞;二是總線上有IIC器件損壞進而使IIC總線數(shù)據(jù)讀寫異常。對于上述兩類問題的定位,可以利用S3C2440A的IIC引腳可復(fù)用的屬性來判斷,例如將U8和M9配置成普通IO口屬性,在無IIC操作時,通過對GPE14和GPE15的置高或置低,在IIC總線可測量處對電平進行實際測量,與期望電平進行對比,如果測量電平與期望電平不一致,則說明S3C2440A的引腳接觸不良或損壞,反之則可排除S3C2440A的IIC引腳問題。

        3.2 S3C2440A的IIC故障軟件處理

        為了防止S3C2440A的IIC故障引起讀寫狀態(tài)持續(xù)等待,在實際應(yīng)用中可添加等待超時處理。下面分別給出不含超時處理的Demo代碼及實際應(yīng)用中采用的超時處理代碼:

        /*不含超時處理的Demo代碼*/

        void IICWrite(U8 slvAddr, U32 addr, U8 data)

        {

        _iicMode = WRDATA;

        _iicPt = 0;

        _iicData[0] = (U8)addr;

        _iicData[1] = data;

        _iicDataCount = 2;

        rIICDS = slvAddr | ((addr & 0xff00) >> 8) << 1;

        rIICSTAT = 0xf0;

        while(_iicDataCount != -1);

        _iicMode = POLLACK;

        while(1)

        {

        rIICDS = slvAddr | ((addr & 0xff00) >> 8) << 1;

        _iicStatus = 0x100;

        rIICSTAT = 0xf0;

        rIICCON = 0xe0;

        while(_iicStatus == 0x100);

        if(?。╛iicStatus & 0x1))

        {

        break;

        }

        }

        rIICSTAT = 0xd0;

        rIICCON = 0xe0;

        Delay(1);

        }

        /*添加超時處理的代碼*/

        void IICWrite(U8 slvAddr, U32 addr, U8 data)

        {

        U16 cnt_1 = 0; //用于超時控制

        U16 cnt_2 = 0; //用于超時控制

        _iicMode = WRDATA;

        _iicPt = 0;

        _iicData[0] = (U8)addr;

        _iicData[1] = data;

        _iicDataCount = 2;

        rIICDS = slvAddr | ((addr & 0xff00) >> 8) << 1;

        rIICSTAT = 0xf0;

        while((_iicDataCount != -1) && (cnt_1 < CNTMAX))

        {

        cnt_1++;

        }

        _iicMode = POLLACK;

        while(1)

        {

        rIICDS = slvAddr | ((addr & 0xff00) >> 8) << 1;

        _iicStatus = 0x100;

        rIICSTAT = 0xf0;

        rIICCON = 0xe0;

        while((_iicStatus == 0x100) && (cnt_2 < CNTMAX))

        {

        cnt_2++;

        }

        if(?。╛iicStatus & 0x1))

        {

        break;

        }

        }

        rIICSTAT = 0xd0;

        rIICCON = 0xe0;

        Delay(1);

        }

        除此之外,還應(yīng)在軟件設(shè)計中添加必要的出錯處理與異常告警,比如對依靠IIC總線獲取的非核心數(shù)據(jù)使用前增加數(shù)據(jù)異常判斷,如出現(xiàn)異常值則給出錯誤提示并提供一組可用的缺省值以避免系統(tǒng)功能進入完全故障狀態(tài)。

        四、結(jié)束語

        本文給出的IIC總線故障分析及軟件處理方法是對實際應(yīng)用過程中所遇到的IIC故障問題的研究與總結(jié),雖以S3C2440A RISC微處理器為例進行闡述,對其他IIC器件的故障分析與處理同樣具有參考價值。在實際應(yīng)用中增加IIC讀寫等待超時處理與數(shù)據(jù)異常處理能夠有效地減小IIC器件故障給系統(tǒng)帶來的不利影響。

        參考文獻

        [1]何立民.I2C總線應(yīng)用系統(tǒng)設(shè)計[M].北京:北京航空航天大學出版社,1995.

        [2]侯喆,何凱.由于IIC總線鎖死引起保護裝置異常的問題分析[J].電力系統(tǒng)保護與控制,2010,38(7),106-108.

        猜你喜歡
        故障處理
        輸煤皮帶機的電氣組成和故障處理對策
        探討配電線路運行維護和故障處理
        試析汽輪機檢修中油系統(tǒng)的常見故障及處理方法
        智能閥門定位器的工作原理及故障處理
        電力系統(tǒng)配電自動化及故障的處理
        高校網(wǎng)絡(luò)維護與故障處理探析
        電力變壓器高壓試驗技術(shù)及故障處理
        鋼鐵冶煉機械設(shè)備的故障診斷及處理分析
        中國市場(2016年41期)2016-11-28 05:34:44
        天然氣管道運行中常見設(shè)備故障及處理對策
        大型化工裝置儀表自控系統(tǒng)的故障處理研究
        国产精品日韩欧美一区二区区| 免费黄网站久久成人精品| 区一区一日本高清视频在线观看 | 一区二区三区在线 | 欧| 久久男人av资源网站无码| 国产视频毛片| 97人妻蜜臀中文字幕| 日本一二三区在线不卡| 日射精情感性色视频| 日韩av精品国产av精品| 亚洲av日韩aⅴ无码电影| 2021年性爱喷水视频| 久久精品网站免费观看| 日韩中文字幕乱码在线| 成人免费av高清在线| 日本精品一区二区三区在线观看 | 老熟妇高潮喷了╳╳╳| 午夜无码片在线观看影院y| 国产精品亚洲综合久久| 欧洲美熟女乱又伦av影片| 久久久精品人妻久久影视| 日韩a∨精品日韩在线观看 | 强d乱码中文字幕熟女1000部| 日本精品中文字幕人妻| 后入丝袜美腿在线观看| 中文字幕免费不卡二区| 国产精品一区二区久久乐下载 | 魔鬼身材极品女神在线| 国产精品一区二区黑丝| 久久精品中文闷骚内射| 97人人超碰国产精品最新| 亚洲区小说区图片区qvod伊| 无码伊人久久大香线蕉| 亚洲免费女女在线视频网站| 亚洲av永久精品爱情岛论坛 | 欧美成人小视频| av二区三区在线观看| 一区二区亚洲精品国产精| 欧美乱妇高清无乱码免费| 成人国产精品一区二区视频| 久久久久无码精品亚洲日韩|