色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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


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

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


          //參數(shù)的含義:從第幾個模塊(不超過3),模塊中第幾個字節(jié)(不超過255)
          //寫到RAM映象的第幾個字節(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陳廣強 閱讀(116) |評論(0)| 編輯
          關于IIC總線

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

          本文引用地址:http://cafeforensic.com/article/201611/322756.htm

          I2C總線的時鐘信號

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

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

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

          起始和停止條件

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

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

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

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

          圖3超始和停止信號圖

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

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

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

          I2C總線發(fā)送器送到SDA線上的每個字節(jié)必須為8位長,傳送時高位在前,低位在后。與之對應,主器件在SCL線上產(chǎn)生8個脈沖;第9個脈沖低電平期間,發(fā)送器釋放SDA線,接收器把SDA線拉低,以給出一個接收確認位;第9個脈沖高電平期間,發(fā)送器收到這個確認位然后開始下一字節(jié)的傳送,下一個字節(jié)的第一個脈沖低電平期間接收器釋放SDA。每個字節(jié)需要9個脈沖,每次傳送的字節(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)中的各個器件將自己的地址和主器件送到總線上的地址進行比較,如果與主器件發(fā)送到總線上的地址一致,則該器件即被主器件尋址的器件,其接收信息還是發(fā)送信息則由第8位(R/W)決定。發(fā)送完第一個字節(jié)后再開始發(fā)數(shù)據(jù)信號。


          上一頁 1 2 3 4 下一頁

          關鍵詞: SPIIICUARTca

          評論


          相關推薦

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

          關閉