<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > SPI、IIC、UART、can區(qū)別

          SPI、IIC、UART、can區(qū)別

          作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏


          void wait_5ms( void ) {
          int i ;
          for ( i=0 ; i<1000 ; i++ )
          {
          ;
          }
          }

          //向24C04寫入器件地址和一個(gè)指定的字節(jié)地址。
          bit E_address(uchar page ,uchar Address )
          {
          I_start() ;
          if ( I_send( WRITE +page) )
          return ( I_send( Address ) ) ;
          else
          return ( FALSE ) ;
          }


          //參數(shù)的含義:從第幾個(gè)模塊(不超過3),模塊中第幾個(gè)字節(jié)(不超過255)
          //寫到RAM映象的第幾個(gè)字節(jié)和讀的長度
          bit E_read_block(uchar page, uchar addr,uchar arraypoint,uchar longth)
          {
          uchar i ;

          if ( E_address(page, addr ) ) {

          I_start() ;
          if ( I_send( READ+page ) ) {
          for ( i=0; i<=longth ;i++ )
          {
          EAROMImage[arraypoint+i] =I_receive();
          if ( i != longth ) I_Ack() ;
          else {
          I_clock() ;
          I_stop() ;
          }
          }
          return ( TRUE ) ;
          }
          else {
          I_stop() ;
          return ( FALSE ) ;
          }
          }
          else
          I_stop() ;
          return ( FALSE ) ;
          }

          bit E_write_block(uchar page,uchar addr,uchar arraypoint,uchar longth) {
          uchar i ;
          for ( i=addr; i<=addr+longth ; i++ ) {
          if ( E_address(page,i) && I_send( EAROMImage[arraypoint+i-addr] ) ) {
          I_stop() ;
          wait_5ms();
          }
          else
          return ( FALSE ) ;
          }
          return ( TRUE ) ;
          }

          //test
          voidmain() {
          EAROMImage[39]=0xfe;
          SCON = 0x5a;
          TMOD = 0x20;
          TCON = 0x69;
          TH1 =0xfd;
          I_init();//I2C 總線初始化
          P1=0xFF;

          if (E_write_block(0,8,39,1))
          P1=0xFE;//p10
          else
          {}

          if (E_read_block(0,8,55,1))
          {}
          else
          P1=P1&0xFD;

          if(EAROMImage[55]==0xfe)
          P1=P1&0x0FB;
          while(1);

          }
          posted @2009-02-22 22:41陳廣強(qiáng) 閱讀(116) |評論(0)| 編輯
          關(guān)于IIC總線

          I2C(Inter-Integrated Circuit)總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。I2C總線產(chǎn)生于在80年代,最初為音頻和視頻設(shè)備開發(fā),如今主要在服務(wù)器管理中使用,其中包括單個(gè)組件狀態(tài)的通信。例如管理員可對各個(gè)組件進(jìn)行查詢,以管理系統(tǒng)的配置或掌握組件的功能狀態(tài),如電源和系統(tǒng)風(fēng)扇??呻S時(shí)監(jiān)控內(nèi)存、硬盤、網(wǎng)絡(luò)、系統(tǒng)溫度等多個(gè)參數(shù),增加了系統(tǒng)的安全性,方便了管理。
          1 I2C總線特點(diǎn)
          I2C總線最主要的優(yōu)點(diǎn)是其簡單性和有效性。由于接口直接在組件之上,因此I2C總線占用的空間非常小,減少了電路板的空間和芯片管腳的數(shù)量,降低了互聯(lián)成本??偩€的長度可高達(dá)25英尺,并且能夠以10Kbps的最大傳輸速率支持40個(gè)組件。I2C總線的另一個(gè)優(yōu)點(diǎn)是,它支持多主控(multimastering), 其中任何能夠進(jìn)行發(fā)送和接收的設(shè)備都可以成為主總線。一個(gè)主控能夠控制信號的傳輸和時(shí)鐘頻率。當(dāng)然,在任何時(shí)間點(diǎn)上只能有一個(gè)主控。
          2 I2C總線工作原理
          2.1 總線的構(gòu)成及信號類型
          I2C總線是由數(shù)據(jù)線SDA和時(shí)鐘SCL構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、IC與IC之間進(jìn)行雙向傳送,最高傳送速率100kbps。各種被控制電路均并聯(lián)在這條總線上,但就像電話機(jī)一樣只有撥通各自的號碼才能工作,所以每個(gè)電路和模塊都有唯一的地址,在信息的傳輸過程中,I2C總線上并接的每一模塊電路既是主控器(或被控器),又是發(fā)送器(或接收器),這取決于它所要完成的功能。CPU發(fā)出的控制信號分為地址碼和控制量兩部分,地址碼用來選址,即接通需要控制的電路,確定控制的種類;控制量決定該調(diào)整的類別(如對比度、亮度等)及需要調(diào)整的量。這樣,各控制電路雖然掛在同一條總線上,卻彼此獨(dú)立,互不相關(guān)。
          I2C總線在傳送數(shù)據(jù)過程中共有三種類型信號, 它們分別是:開始信號、結(jié)束信號和應(yīng)答信號。
          開始信號:SCL為高電平時(shí),SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。
          結(jié)束信號:SCL為低電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。
          應(yīng)答信號:接收數(shù)據(jù)的IC在接收到8bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的IC發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU向受控單元發(fā)出一個(gè)信號后,等待受控單元發(fā)出一個(gè)應(yīng)答信號,CPU接收到應(yīng)答信號后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。
          目前有很多半導(dǎo)體集成電路上都集成了I2C接口。帶有I2C接口的單片機(jī)有:CYGNAL的 C8051F0XX系列,PHILIPSP87LPC7XX系列,MICROCHIP的PIC16C6XX系列等。很多外圍器件如存儲器、監(jiān)控芯片等也提供I2C接口。

          本文引用地址:http://www.ex-cimer.com/article/201611/322756.htm

          I2C總線的時(shí)鐘信號

          在I2C總線上傳送信息時(shí)的時(shí)鐘同步信號是由掛接在SCL時(shí)鐘線上的所有器件的邏輯“與”完成的。SCL線上由高電平到低電平的跳變將影響到這些器件,一旦某個(gè)器件的時(shí)鐘信號變?yōu)榈碗娖?,將使SCL線上所有器件開始并保護(hù)低電平期。此時(shí),低電平周期短的器件的時(shí)鐘由低至高的跳變并不影響SCL線的狀態(tài),這些器件將進(jìn)入高電平等待的狀態(tài)。

          當(dāng)所有器件的時(shí)鐘信號都變?yōu)楦唠娖綍r(shí),低電平期結(jié)束,SCL線被釋放返回高電平,即所有的器件都同時(shí)開始它們的高電平期。其后,第一個(gè)結(jié)束高電平期的器件又將SCL線拉成低電平。這樣就在SCL線上產(chǎn)生一個(gè)同步時(shí)鐘。可見,時(shí)鐘低電平時(shí)間由時(shí)鐘低電平期最長的器件決定,而時(shí)鐘高電平時(shí)間由時(shí)鐘高電平期最短的器件決定。

          I2C總線的傳輸協(xié)議與數(shù)據(jù)傳送

          起始和停止條件

          在數(shù)據(jù)傳送過程中,必須確認(rèn)數(shù)據(jù)傳送的開始和結(jié)束。在I2C總線技術(shù)規(guī)范中,開始和結(jié)束信號(也稱啟動(dòng)和停止信號)的定義如圖3所示。

          開始信號:當(dāng)時(shí)鐘總線SCL為高電平時(shí),數(shù)據(jù)線SDA由高電平向低電平跳變,開始傳送數(shù)據(jù)。

          結(jié)束信號:當(dāng)SCL線為高電平時(shí),SDA線從低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。

          開始和結(jié)束信號都是由主器件產(chǎn)生。在開始信號以后,總線即被認(rèn)為處于忙狀態(tài),其它器件不能再產(chǎn)生開始信號。主器件在結(jié)束信號以后退出主器件角色,經(jīng)過一段時(shí)間過,總線被認(rèn)為是空閑的。

          圖3超始和停止信號圖

          數(shù)據(jù)格式

          I2C總線數(shù)據(jù)傳送采用時(shí)鐘脈沖逐位串行傳送方式,在SCL的低電平期間,SDA線上高、低電平能變化,在高電平期間,SDA上數(shù)據(jù)必須保護(hù)穩(wěn)定,以便接收器采樣接收,時(shí)序如圖4所示。

          圖4 數(shù)據(jù)傳送時(shí)序圖

          I2C總線發(fā)送器送到SDA線上的每個(gè)字節(jié)必須為8位長,傳送時(shí)高位在前,低位在后。與之對應(yīng),主器件在SCL線上產(chǎn)生8個(gè)脈沖;第9個(gè)脈沖低電平期間,發(fā)送器釋放SDA線,接收器把SDA線拉低,以給出一個(gè)接收確認(rèn)位;第9個(gè)脈沖高電平期間,發(fā)送器收到這個(gè)確認(rèn)位然后開始下一字節(jié)的傳送,下一個(gè)字節(jié)的第一個(gè)脈沖低電平期間接收器釋放SDA。每個(gè)字節(jié)需要9個(gè)脈沖,每次傳送的字節(jié)數(shù)是不受限制的。

          I2C總線的數(shù)據(jù)傳送格式是在I2C總線開始信號后,送出的第一字節(jié)數(shù)據(jù)是用來選擇從器件地址的,其中前7位為地址碼,第8位為方向位(R/W)。方向位為“0”表示發(fā)送,即主器件把信息寫到所選擇的從器件中;方向位為“1”表示主器件將從從器件讀信息。格式如下:

          1

          0

          1

          0

          A2

          A1

          A0

          R/W

          注:前四位固定為1010。

          開始信號后,系統(tǒng)中的各個(gè)器件將自己的地址和主器件送到總線上的地址進(jìn)行比較,如果與主器件發(fā)送到總線上的地址一致,則該器件即被主器件尋址的器件,其接收信息還是發(fā)送信息則由第8位(R/W)決定。發(fā)送完第一個(gè)字節(jié)后再開始發(fā)數(shù)據(jù)信號。


          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: SPIIICUARTca

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();