<strike id="kiyse"></strike>
  • <tr id="kiyse"></tr>
  • <strike id="kiyse"></strike><samp id="kiyse"><tbody id="kiyse"></tbody></samp>
    <strike id="kiyse"><s id="kiyse"></s></strike>
    <tr id="kiyse"></tr>
    <noframes id="kiyse"><code id="kiyse"></code></noframes>
    <th id="kiyse"></th>
    <samp id="kiyse"></samp>
  • <th id="kiyse"><s id="kiyse"></s></th>
  • EM9x60串口通訊應用方案

     2008-7-18             

            串口通訊,是工業自動化、智能終端、通信管理等領域傳統且重要的通訊手段。最常用到的串口通信模式往往是兩種:RS232和RS485。其中RS232通訊方式有三線制和九線制兩種。

     

            英創所有型號的嵌入式主板均提供有串行通信接口(串口),根據不同的主板型號,串口的數量也不同,如: ETR232i、 ETR186提供有3個串口;EM9000、EM9161提供有4個串口;EM9260、EM9360、EM9160則直接提供多達6個串口。除了系統板載的串口以外,客戶還可根據自己的應用進行靈活擴展。基于英創的嵌入式系統的精簡ISA總線或專用的擴展底板,可擴展出更多的通用串口,現可用的擴展配件有:ETA502、ETA503、ETA504。所有的串口的通訊的最高波特率均能達到115200bps。

     

            英創工控主板直接提供的串口既有標準的RS232接口,也有TTL電平的串行接口,這意味著,TTL電平的串口只需要添加簡單的外圍電路驅動,就可直接轉換為標準RS232、RS485接口以及RS422接口。某些用戶(如電力系統用戶)還可以根據實際情況需要,在串口上添加光電隔離電路,以達到保護端口的目的。英創公司給用戶提供的開發底板(隨基本開發套件提供)就充分地考慮了用戶對于串口應用的多方面要求,既引出了RS232接口,也引出了 RS485接口,滿足了用戶靈活使用的需要。

     

    串口擴展模塊

            英創公司所提供的基于系統提供串口的嵌入式主板,均是通過嵌入式主板上的插針的方式,作為與用戶的接口。這些串口,能夠滿足大多數的應用環境。除止之外,還可以使用英創公司的串口擴展模塊進行擴展。

     

    ETA503

            ETA503是基于英創公司的嵌入式系統所特有的精簡ISA總線,擴展4個串口的擴展模塊。4個串口均是9線制通用RS232電平信號。

            該模塊可以通過ISA總線在英創公司的所有嵌入式主板(X86系列及ARM系列)中使用,即可以通過短的排線連接在ISA總線上,這種方式可以快速實現功能評估,也可以將ETA503當作一個元器件一樣,用插針插在應用系統中所提供的插座上(ARM9+ETA503應用方案示列參考:《WinCE系統多串口擴展方案》)。

     

    RS485通訊接口

            在很多的工業應用場合中,長距離的通訊,仍是采用RS485的通訊方式,這種方式的應用簡單、通訊可靠、成本也很低。

     

            其接法是:將通用的串行通訊口的接收(RX)與發送(TX)分別接至RS485接口芯片的接收輸出(RO)與發送輸入(TI)口,再用一個信號來控制RS485的收/發狀態。英創公司提供的RS485通訊電路中,對RS485的收發控制采用了自動收/發控制電路。這樣,一是減少了對系統資源的占用,二是保持與RS232一樣的驅動程序,從而提高程序的執行效率。

     

            自動收/發控制原理:

     

            在通訊空閑狀態,TXD(數據發送信號)為高, A點為高,B點經R21給C11充電,其充電時間為T1,該時間定為串口發送一個字節所需的時間,由R21與C11的參數來確認。充滿后,R/T為低,RS485處于接收數據的狀態。

     

            在發送數據時,TXD起始位產生第一個下降沿,使A點為低,B點經過D5進行快速放電,使R/T很快變為高,RS485處于數據發送狀態。在發送過程中,當TXD變成高電平時,C11通過R21緩慢充電,使R/T仍然保持在發送狀態,可有效吸收總線上的反射信號。當RC充電結束,使R/T轉入接受狀態時,總線上的上拉、下拉電阻將維持TXD高電平的發送狀態,直至整個bit發送結束。

     

            當數據發送完畢以后,TXD變為高電平,RC又開始充電,即經T1時間后,RS485又轉換為數據接收狀態。

     

            雖然RS485接口芯片具有一定的抗浪涌能力,但是在很多的工業現場,仍存在對接口芯片及系統有威脅的干擾。所以通常會采取一定的措施來進行系統的保護。如光電隔離與TVS等。需注意的是,如加了光電隔離,必須使其電源也隔開,這樣才能起到隔離作用。

     

    ETA232

            在英創所提供的嵌入式主板中,即給了RS232電平信號的串行通訊接口,也給出了TTL電平信號的串行通訊接口,且TTL電平信號的串口支持MODEM控制。如用戶在使用中,要用到TTL電平信號的串口來作RS232的通訊或是控制MODEM,則需要將TTL電平信號轉換為RS232電平信號。為此,英創公司也提供了相應的轉換模塊ETA323,將TTL接口的信號轉換為9線制標準的RS232接口。

     

    基于英創公司的嵌入式系統的串口的基本應用

            對于英創公司所提供的串口通訊的驅動,均是以中斷服務的形式,實現與底層硬件間的通訊。

     

            下面以X86系列為例,說明其最基本的應用原理:

     

            中斷服務程序的任務,就是對串口數據的接收及用戶數據的發送進行處理并對數據環形BUFF管理的過程。

     

            當有數據被接收時,中斷服務程序便將所接收到的數據從硬件模塊中取出,并按一定的規則送入到指定的串口的接收BUFF中存貯。用戶使用GetInputData( )函數來讀取接收BUFF中的數據。應注意的是,GetInputData( )函數一次只能從BUFF中讀取一個字節的數據,所以,在應用程序中,應重復調用這個函數直到函數的返回值為-1時,才表明將接收BUFF中的數據全部讀出。

     

            當用戶要發送數據時,調用PutOutputData ( )將用戶已準備好的數據,依次填入數據發送BUFF中。在數據填完后,調用StartSend( )啟動串口發送中斷,這時數據的發送將由中斷服務程序來完成。應注意的是,PutOutputData ( )函數一次也只能將一個字節的數據填入BUFF中,要反復調用該函數直到所有的數據都被填入BUFF。如PutOutputData ( )函數返回了-1,則表明BUFF已被填滿,再往BUFF中填數據,將不會被接授。

     

            對于用戶的應用程序,可以參考以下的說明:

     

            1、 用戶可以用查詢或定時或其它的方式,對串口的數據讀取。如確認接收BUFF中有數據存在,建議一次將其全部讀出。讀取串口數據的參考程序如下:

     

    int ReadRxdBuff( int ComIdx , unsigned char *RxBuff , int MaxLen )

    {

           int i1,i2;

     

           for(i2=0 ; ; )

           {

               // 檢查某個串口是否有數據,如沒有數據則退出,否則,將數據放入緩存器以便使用

               i1 = GetInputData( ComIdx );

               if( i1==-1 )

                         break;

                  RxBuff[i2]=char ( i1 );

                  i2++;     

                  if(i2==MaxLen)

                         break;

           }

           return i2;

    }

     

            函數的參數說明如下:

     

            ComIdx                               要讀取的串口序號

            *RxBuff                               讀出的數據要存放的數據緩存器

            MaxLen                               讀出數據的最大長度,以限制一次性讀取的長度

     

            2、當用戶有數據需要發送時,首先應將要發送的數據準備好,再依次將的要發送的數據一次性全部填入對應的發送BUFF中。再啟動數據發送。應注意的是,要發送的數據的長度要有一定的限制,不能超出發送BUFF的長度。數據發送的參考程序如下:

     

    int SendTxdBuff( int ComIdx , unsigned char *TxBuff , int TxLen )

    {

           int i1,i2;

          

           for( i2=0; i2 <>

           {

               i1=PutOutputData( ComIdx ,TxBuff[i2] );

                  // 每填入一個數據,建議檢查一下BUFF是否被填滿

                  if( i1==-1 )

                         break;

           }

           // 數據被填入BUFF后,應啟動發送中斷。讓中斷程序來完成數據的發送

           StartSend( ComIdx );

           return i2;

    }

     

            函數的參數說明如下:

     

            ComIdx                               要發送數據的串口序號

            *TxBuff                               要發送的數據

            TxLen                                  發送數據的長度

    国产精品嫩草影院永久一| 18精品久久久无码午夜福利| 亚洲精品tv久久久久| 国产精品色视频ⅹxxx| 国产精品高清一区二区三区不卡| 精品国产一区二区麻豆| 少妇人妻偷人精品无码视频新浪| 国产精品久久久久久五月尺| 国产偷久久久精品专区| 国产精品福利一区二区久久| 波霸在线精品视频免费观看| 精品乱码久久久久久中文字幕 | 精品无码国产一区二区三区麻豆| 久久精品国产这里是免费| 亚洲国产精品毛片av不卡在线| 青娱分类视频精品免费2| 无码精品久久久久久人妻中字| 国产精品V亚洲精品V日韩精品| 四虎永久在线精品免费网址| 99久久国产综合精品swag | 精品国产免费观看一区| 亚洲国产成人精品电影| 日韩在线精品一二三区| 亚洲国产午夜精品理论片在线播放| 国产成人精品免高潮在线观看| 好吊妞这里有精品| 日韩中文字幕精品免费一区| 日韩精品无码中文字幕一区二区| 国自产精品手机在线观看视频| 无码乱码观看精品久久| 国产综合精品在线| 久久久无码精品亚洲日韩蜜臀浪潮| 91精品全国免费观看青青| 亚洲国产成人精品无码久久久久久综合 | 亚洲精品天堂成人片AV在线播放| 人妻少妇精品中文字幕av蜜桃| 国内精品九九久久久精品| 老司机精品视频在线| 精品国产91久久久久久久a | 久久这里只有精品66| 777午夜精品久久av蜜臀|