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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于P87C591的CAN總線控制系統(tǒng)的設計研究

          基于P87C591的CAN總線控制系統(tǒng)的設計研究

          作者: 時間:2012-03-01 來源:網(wǎng)絡 收藏

          引言

          現(xiàn)場總線技術是一種基于現(xiàn)場設備之間進行數(shù)據(jù)通訊的新型總線系統(tǒng),它綜合了計算機技術、數(shù)字通訊技術、自動控制技術、和智能儀表等各種技術手段,從根本上突破了傳統(tǒng)的“點對點”式的模擬信號或數(shù)字—模擬信號控制的局限性,構成了一種全分散、全數(shù)字化、智能化雙向、互連、多變量、多結點的通信控制系統(tǒng)。

          是德國BoSCH公司為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通訊協(xié)議。以其高性能、高可靠性及其獨特的設計越來越受到人們的重視,并被公認為是汽車電控系統(tǒng)中最有前途的總線之一。奔馳、寶馬、大眾等一些國際著名汽車生產(chǎn)廠家已經(jīng)在各自的產(chǎn)品中采用了技術。目前,國內的汽車生產(chǎn)廠家也已經(jīng)開始重視該項技術。毫無疑問,CAN總線技術將是今后車載網(wǎng)絡領域的主流協(xié)議標準。


          芯片的特點

          是一個單片8位高性能微控制器,除了80C51的標準特性之外,器件還為實際應用提供許多專用的硬件功能。片中帶16K字節(jié)內部程序存儲器,可外部擴展到64K字節(jié);512字節(jié)片內數(shù)據(jù)RAM,可外部擴展到64K字節(jié);并且有3個16位定時/計數(shù)器T0, T1(標準80C51)和附加的T2(捕獲比較),2個8位分辨率的脈寬調制輸出(PWM),包含一個看門狗定時器T3。中包括4個中斷優(yōu)先級,l5個中斷源,為編寫高效率的程序軟件提供了強大的硬件支持。

          P87C591是NXP半導體公司推出的帶有在片CAN控制器SJA 1000的新型微控制器。它完全履行CAN 2.0規(guī)范并提供一個獨立CAN控制器的軟件移植路徑。其中包括增強型驗收濾波器、支持系統(tǒng)維護、診斷、系統(tǒng)優(yōu)化以及接收FIFO特性。該嵌入式CAN控制器包括了具有CAN的擴充特性。該嵌入式CAN控制器包括了下列功能模塊:

          ① CAN內核模塊根據(jù)CAN 2. 0規(guī)范控制CAN幀的接收和發(fā)送。

          ② CAN接口包含5個實現(xiàn)CPU與CAN控制器連接的特殊功能寄存器。

          ③ CAN控制器的發(fā)送緩沖區(qū)能夠保存一個完整的CAN信息格式。只要通過CPU啟動發(fā)送,信息字節(jié)就從發(fā)送緩沖區(qū)傳輸?shù)紺AN內核模塊。

          ④ 所有驗收濾波器驗收的接收數(shù)據(jù)都保存在接收FIFO中。取決于操作模式和數(shù)據(jù)長度的不同,最多可存放21個CAN信息。

          ⑤ 當接收一個信息時,CAN內核模塊將串行位流轉換成并行數(shù)據(jù)輸入到驗收濾波器,通過該可編程濾波器,P87C591確定實際接收到的信息。


          P87C591微控制器內部總線通過80C51微處理器接口與PeIiCAN相連。通過CANADR(地址)、CANDAT(數(shù)據(jù))、CANMOD(模式)、CANSTA(狀態(tài))和CANCON(控制)5個特殊功能寄存器對PeIiCAN寄存器和RAM區(qū)進行訪問。圖1為P87C591的功能框圖。

          基于P87C591的CAN總線控制系統(tǒng)的設計研究

          硬件電路設計

          本文所設計的控制系統(tǒng)的CAN總線節(jié)點硬件電路由微處理器(P87C591)、CAN總線通信接口的收發(fā)器(NXP公司的82C250)和功能裝置(傳感器、執(zhí)行器等)組成。如 圖2所示為控制系統(tǒng)CAN總線節(jié)點通訊相關的硬件電路原理圖。由于P87C591本身含有CAN模塊,因此不需要外加CAN控制器,所需要的外部元件僅僅是一個晶振加兩個電容,一個連接到復位腳的電容(使用片內復位電路)以及一個收發(fā)器用于將P87C591連接到CAN總線。

          為了防止干擾,在CAN總線節(jié)點硬件設計上采取了以下措施:

          ①82C250與CAN總線的接口部分采取了抗干擾措施。82C250的CANH和CANL引腳各自通過一個5? 的電阻與CAN總線相連,電阻可起到一定的限流作用,保護82C250免受過流的沖擊。CANH和CANL與地之間并聯(lián)了兩個30pF的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射能力。另外在兩根CAN總線接入端與地之間分別反接了一個保護二極管,當CAN總線有較高的負電壓時,通過二極管的短路可起到一定的過壓保護作用。

          ② 總線兩端應接有兩個120?電阻,對于匹配總線阻抗起著重要的作用,忽略掉它們會使數(shù)據(jù)通信的抗干擾性及可靠性大大降低甚至無法通信。

          軟件設計

          在CAN總線程序設計中,初始化程序是整個軟件設計中的重點和難點,它直接關系到系統(tǒng)能否正常工作。對CAN 控制器進行初始化,實際上就是對集成CAN控制器的P87C591芯片中的寄存器進行初始化設置,并對報文接收緩沖區(qū)進行設置。內容包括:操作模式、TXDC輸出管腳的配置、總線定時、驗收濾波器、中斷等。CAN控制器初始化流程圖如圖3所示。

          對于CAN控制器的初始化,只與表1中所列寄存器相關。大多數(shù)CAN寄存器具有一個方便的恢復特性,在硬件復位或使CAN控制器進入復位模式后用戶配置可保持不變(表1中標注“不變”)。

          CAN初始化子程序如下:
          void init_can_controller(void)
          {
          /*進入CAN控制器復位模式*/
          CANMOD=0x01; /*將CAN控制器設置為復位模式以啟動初始化*/
          /*TXDC Port (P1.1)配置*/
          P1M2=P1M2|0x02; /*管腳TXDC設置為推挽模式*/
          /*配置與CAN有關的中斷*/
          CANSTA=0x03; /*使能接收和發(fā)送中斷*/
          /*CAN位定時的配置*/
          CANADR=BTR0; /*BTR0和BTR1編程為100kbit/s,在16MHz條件下*/
          CANDAT=0x00;
          CANADR=BTR1;
          CANDAT=0x14; /*用戶可根據(jù)具體的CAN網(wǎng)絡來調整BTR0、BTR1的參數(shù)*/
          /*驗收濾波器1配置為接收ID=10000000XXX*/
          CANADR=ACR0; /*將地址設置到驗收代碼寄存器0(BANK1)*/
          CANDAT=0x80; /*驗收代碼0用于濾波*/
          CANADR=AMR0; /*將地址設置到驗收屏蔽寄存器0(BANK1)*/
          CANDAT=0x00; /*BANKl:與驗收屏蔽0有關*/
          CANDAT=0xFF; /*BANKl:與驗收屏蔽1無關,允許任何數(shù)據(jù)通過濾波器*/
          CANDAT=0xFF; /*BANKl:與驗收屏蔽2無關,允許任何數(shù)據(jù)通過濾波器*/
          CANDAT=0xFF; /*BANKl:與驗收屏蔽3無關,允許任何數(shù)據(jù)通過濾波器*/
          CANADR=ACFMOD; /*將地址設置到ACF模式寄存器*/
          CANDAT=0xFF; /*單驗收濾波器使用29位ID(EFF)*/
          CANADR=ACFPRIO; /*將地址設置到ACF優(yōu)先級寄存器*/
          CANDAT=0xFF; /*所有濾波器都為高優(yōu)先級*/
          CANADR=ACFEN; /*將地址設置到ACF使能寄存器*/
          CANDAT=0x01; /*使能Bankl的驗收濾波器*/
          /*選擇操作模式退出CAN控制器復位模式*/
          CANMOD=0x00; /*使CAN控制器進入操作模式*/
          }


          結束語

          本 文從硬件和軟件的角度對內嵌CAN控制器(SJA1000)的P87C591進行了詳細的介紹,不僅給出了P87C591的CAN總線硬件電路原理圖,還給出了CAN總線的初始化子程序。P87C591是個高性能的CAN微控制器,可用于汽車和通用的工業(yè)應用。尤其在汽 車 車身控制系統(tǒng)中它可以發(fā)揮很好的作用,通過使用該系統(tǒng)進行CAN總線的車身控制,可以簡化線路,減少車內線束連接的復雜性,保證信號無干擾、實時的傳輸,并且實現(xiàn)系統(tǒng)實時診斷、測試和報警功能。隨著汽車電子技術的發(fā)展,其在汽車電控系統(tǒng)中必將得到更廣泛的應用。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();