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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CAN總線的現(xiàn)場設備控制管理系統(tǒng)

          基于CAN總線的現(xiàn)場設備控制管理系統(tǒng)

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

          SJA1000作為微控制器的片外擴展芯片,其片選引腳CS應接在微控制器的P2.0 上,以用于決定CAN控制器各寄存器的地址。SJA1000通過CAN總線驅動器PCA82C250連接在物理總線上。PCA82C250器件可提供對總線的差動發(fā)送能力和對CAN控制器的差動接受能力,它同時完全和“ISO11898”標準兼容。由于通信信號傳輸?shù)綄Ь€的端點時會發(fā)生反射,而且反射信號會干擾正常信號的傳輸,因此,總線兩端應接有終端電阻R1、R2,以消除反射信號,其阻值應當與傳輸電纜的特性阻抗大致相當。

          2.CAN節(jié)點的軟件設計
          本節(jié)點的軟件編程主要包括A/D轉換(ADC)、CAN控制器的初始化、CAN總線數(shù)據(jù)的發(fā)送和接收等幾個部分。主程序的流程圖如圖3所示。


          下面分別對這幾個主要部分的程序設計做一介紹。
          2.1 A/D轉換部分
          筆者在本設計中采用的是單步A/D轉換模式,并將A/D轉換結果存入指定的數(shù)據(jù)存儲區(qū)。具體步驟如下:
          (1)通過設置ADC控制寄存器(ADCCON1和ADCCON(2)的值來確定A/D轉換的工作狀態(tài)和采樣通道號;
          (2)使能ADC中斷,置位SCONV位以啟動單步A/D轉換;
          (3)等待響應ADC中斷,并進入中斷服務程序;
          (4)把采樣所得的數(shù)據(jù)從ADCDATAL和ADC-DATAH兩個特殊寄存器中取出,并存入預設的片內數(shù)據(jù)存儲器中,然后退出中斷服務程序;
          (5)判斷所需通道是否采樣完畢,如果未完成,則設置采樣通道號并返回步驟(2),若完成則退出A/D轉換子程序。
          通過該程序可隨時根據(jù)實際需要更改采樣通道數(shù),并將采樣結果直接存入指定數(shù)據(jù)存儲區(qū),以為今后向CAN總線發(fā)送所得數(shù)據(jù)提供便利。

          2.2 SJA1000的初始化
          CAN的通信協(xié)議主要是由CAN控制器完成的,因此,要想實現(xiàn)CAN節(jié)點的數(shù)據(jù)傳送,對CAN控制器的初始化是十分關鍵的。這個步驟直接決定著該CAN網(wǎng)絡系統(tǒng)各節(jié)點所共同遵守的協(xié)議。對SJA1000進行初始化實際上就是通過單片機向其片內的各個寄存器寫入控制字的過程,其寄存器包括以下幾個:
          REG CONTROL―內部控制寄存器地址;
          REG COMMAND―內部命令寄存器地址;
          REG STATUS ―內部狀態(tài)寄存器地址;
          REG INTERRUPT―內部中斷寄存器地址;
          REG ACR―內部驗收代碼寄存器地址;
          REG AMR―內部驗收屏蔽寄存器地址;
          REG BTR0―總線定時寄存器0;
          REG BTR1―總線定時寄存器1;
          REG OCR―輸出控制寄存器。
          其中:BTR0、BTR1寄存器的內容可用于決定系統(tǒng)通信的波特率和CAN協(xié)議物理層中的同步跳轉寬度,因此,對于一個系統(tǒng)中的所有節(jié)點,這兩個寄存器的內容必須相同(包括上位機),否則將無法進行通信;OCR寄存器的內容用于決定CAN控制器的輸出方式;而寫入ACR、AMR寄存器的內容則要根據(jù)實際的網(wǎng)絡系統(tǒng)和報文標志符來決定。本設計中筆者采用的是BasicCAN模式。
          完成初始化后,CAN控制器就能正常運行了,但是要實現(xiàn)具體的數(shù)據(jù)收發(fā)任務,還必須編制特定的收、發(fā)程序。

          2.3 CAN總線數(shù)據(jù)的發(fā)送和接收
          (1)發(fā)送部分的程序設計
          用CAN總線發(fā)送數(shù)據(jù)的流程圖如圖4所示。實際上,在程序運行過程中,常常會在發(fā)送某一幀數(shù)據(jù)時發(fā)現(xiàn)上一幀的數(shù)據(jù)還沒有完全發(fā)送完畢(可以通過查詢狀態(tài)寄存器REG STATUS的第4位BIT TCS的顯、隱狀態(tài)可了解上次數(shù)據(jù)的發(fā)送情況)。因此,筆者采用的處理方法是:通過指令啟動本次發(fā)送之后,就不停地查詢狀態(tài)寄存器,以判斷本次發(fā)送是否完成,直到確定完成為止。這樣可以為下次發(fā)送提供便利,同時也有利于程序的順利執(zhí)行,從而避免出現(xiàn)錯誤。




          (2)接收部分的程序設計
          圖5所示是該系統(tǒng)接收部分的軟件流程圖。實際上,在對響應速度要求不太高的場合,以查詢方式來設計接收子程序是最簡單、最可靠的方式。如果總線上有數(shù)據(jù)發(fā)往本節(jié)點,則通過查詢狀態(tài)寄存器的第1位BIT_RBS的位狀態(tài),便可得知接收緩沖區(qū)(RXFIFO)中的可用信息,然后通過軟件將RXFIFO中的數(shù)據(jù)逐個“移入”到指定的片內存儲空間即可。對于這樣一個主要以數(shù)據(jù)采集功能為主的CAN節(jié)點,這些數(shù)據(jù)多半是由CAN網(wǎng)絡中的“控制中心”發(fā)來的控制信號,設計時把它們留給ADμC812進一步處理就可以了。

          參考文獻
          1 Bosch 公司 CAN 協(xié)議規(guī)范 V2.0版本
          2 肖海榮 周風余.基于SJA1000的系統(tǒng)智能節(jié)點設計 計算機自動測量與控制 2001、9(2)
          3 鄔寬明.原理和應用系統(tǒng)設計,北京航空航天大學出版社
          4 SJA1000獨立CAN控制器介紹,廣州周立功單片機發(fā)展有限公司.
          5 獨立CAN器件SJA1000的應用,東南大學學報,2002年3月.

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉