基于ATmega8515的USB-CAN適配器的實(shí)現(xiàn)
CAN(Controller Area Network)總線作為一種多主機(jī)局部網(wǎng)現(xiàn)場(chǎng)總線,由于其組網(wǎng)的靈活性和便捷性、通信的高效性和可靠性以及低廉的成本,在工廠的分散控制領(lǐng)域受到了廣泛的應(yīng)用. 現(xiàn)在的工廠自動(dòng)化控制,既需要“分散控制”,更需要有效的“集中管理”,以保障生產(chǎn)的安全和效率,而聯(lián)絡(luò)各種設(shè)備的現(xiàn)場(chǎng)總線和對(duì)設(shè)備進(jìn)行監(jiān)控的工作站(通常為工業(yè)PC機(jī)) 之間的通信成為一個(gè)關(guān)鍵的咽喉. 以往的監(jiān)控站和現(xiàn)場(chǎng)總線之間的通信大多采用兩種方式:一是設(shè)計(jì)專用的通信卡和現(xiàn)場(chǎng)總線進(jìn)行通信;二是通過(guò)PC機(jī)的RS-232C標(biāo)準(zhǔn)接口和現(xiàn)場(chǎng)總線進(jìn)行接口.使用專用的通信卡對(duì)于現(xiàn)在的小型化控制設(shè)備已不太方便和實(shí)用,而以最高波特率僅為38. 4kb/s 的RS-232C標(biāo)準(zhǔn)接口和最高波特率達(dá)1 Mb/s的CAN總線進(jìn)行接口,無(wú)疑會(huì)造成CAN總線和監(jiān)控站之間的通信“瓶頸”問(wèn)題.
可見(jiàn),包括RS-232 在內(nèi)的接口已經(jīng)無(wú)法滿足PC機(jī)與外部設(shè)備之間不斷提高的速度以及穩(wěn)定性、易用性等方面的要求,并給工程技術(shù)人員的設(shè)計(jì)和用戶的運(yùn)用帶來(lái)諸多不便. USB(通用串行總線) 的出現(xiàn)解決了上述問(wèn)題. USB以其優(yōu)越的易用性、穩(wěn)定性、兼容性、擴(kuò)展性、完備性、網(wǎng)絡(luò)性和低功耗的特點(diǎn)得到了廣泛的歡迎和應(yīng)用,目前的PC機(jī)無(wú)論是臺(tái)式還是便攜式,均帶有 USB插口,并且在最新發(fā)布的USB2. 0 版本中,USB 的帶寬已經(jīng)提升到了480Mb/s. 基于上述原因,作者利用Atmel公司最新推出的RISC架構(gòu)的微控器ATmega8515 , 設(shè)計(jì)了一種USB總線到CAN總線的專用適配器來(lái)對(duì)CAN 總線上的設(shè)備進(jìn)行監(jiān)控. 用USB和CAN總線進(jìn)行對(duì)接,解決了CAN總線和PC機(jī)間的通信“瓶頸”問(wèn)題,提高了通信速度及效率,同時(shí)又達(dá)到了穩(wěn)定、易用的目的.
1 USB-CAN適配器的硬件設(shè)計(jì)
本文所設(shè)計(jì)的USB-CAN適配器的主要特點(diǎn)是:(1) PC機(jī)和CAN總線之間數(shù)據(jù)傳輸波特率可以達(dá)到CAN總線1 Mb/s 的最高傳輸效率; (2) PC機(jī)和CAN總線之間數(shù)據(jù)傳輸可靠性高,其硬件系統(tǒng)電路如圖1 所示,其中CAN 總線的控制器選用Philips公司的獨(dú)立CAN總線控制器SJA1000 ,USB總線控制器選擇全速器件USBN9603 ,兩個(gè)總線控制器之間的協(xié)調(diào)處理器采用高性能的AVR 單片機(jī)ATmega8515,從而保障了通信速率;CAN 總線控制器和CAN 總線進(jìn)行光電隔離,采用DC/DC 電源變換器件給光電隔離器件及其后端器件供電,徹底隔離CAN 總線和PC機(jī)之間的電氣干擾,保障了PC機(jī)的安全性.
圖1 USB-CAN適配器電氣原理圖
1. 1 外部微控制器
獨(dú)立CAN總線控制器SJA1000 和全速USB總線節(jié)點(diǎn)控制器USBN9603必須有外部微控制器進(jìn)行控制才能工作. 設(shè)計(jì)中采用Atmel公司最新推出的高性能、低功耗的8 位AVR微控制器ATmega8515 ,給USB-CAN適配器帶來(lái)諸多優(yōu)點(diǎn),并且提高了其性價(jià)比.
ATmega8515具有低功耗特點(diǎn),供電電壓在4.5 ~5.5V DC ,其引腳Vcc 和GND之間最高電流為20mA. 而USB口電源為+ 5V DC,最大可提供500mA電流,故在適配器的電路設(shè)計(jì)中利用USB口提供的電源直接供電,免去了電源電路,使電路更為簡(jiǎn)潔.
ATmega8515 是RISC架構(gòu),有多達(dá)130 條功能強(qiáng)大的指令(大部分只用一個(gè)時(shí)鐘周期執(zhí)行) ,32×8通用工作寄存器,完全靜態(tài)運(yùn)作,在16MHz 的晶振下運(yùn)行速度可以達(dá)到16MIPS ,片上2周期的乘法器,其運(yùn)算速度是目前常用的8051單片機(jī)的10多倍,用它可以大大減少USB總線控制器和CAN總線控制器之間協(xié)調(diào)處理的時(shí)間,提高了USB-CAN適配器的實(shí)際通信速率.
微控制器具有非易失性的程序和數(shù)據(jù)存儲(chǔ)器,8K字節(jié)的在線可編程Flash;可選駐留代碼區(qū)帶有獨(dú)立的鎖存位,通過(guò)片上駐留程序可以在線編程實(shí)現(xiàn)真正的Read-While-Write 操作;512字節(jié)的EEPROM,可進(jìn)行10 萬(wàn)次擦寫(xiě),使USB-CAN 適配器的重要設(shè)置參數(shù)在掉電情況下仍能保存;512 字節(jié)的SRAM,可選用對(duì)AVR 微控制器進(jìn)行C 或C + + 編程的編譯器, 為開(kāi)發(fā)比較大的程序帶來(lái)了方便( 例如AT90S1200 沒(méi)有RAM空間來(lái)建立堆棧,只能運(yùn)用匯編器) ;帶有軟件加密位;而且微控制器的外圍器件中有2 個(gè)定時(shí)P計(jì)數(shù)器,具有獨(dú)立的預(yù)分頻、比較模式及捕捉模式;3 個(gè)PWM通道;可編程串行USART;主P從SPI 串行接口,如圖1 中J2 和SPI 的MISO、MOSI、SCK相接,J2 接在串行下載線ISP 上可在線編程;具有獨(dú)立片上振蕩器的可編程看門(mén)狗計(jì)時(shí)器,這些給USB-CAN 適配器控制軟件提供了充足的存儲(chǔ)、開(kāi)發(fā)空間和安全性.
ATmega8515可以擴(kuò)展高達(dá)64K字節(jié)的外部程序存儲(chǔ)器,帶有ALE (即外部數(shù)據(jù)存儲(chǔ)器地址鎖存使能) 引腳,可以很方便地與SJA1000 和USBN9603引腳相連,這是除了AT90S4414/8815 外其它AVR 微處理器所沒(méi)有的. 如圖1 所示,SJA1000 在Meag8515 的空間地址為0x7F00H ~ 0x7F7FH , USBN9603 在Meag8515 的空間地址為0xBF00H~0xBFFFH.
1. 2 USB總線控制器
USB -CAN適配器中的USB 總線控制器USBN9603是全速USB 總線節(jié)點(diǎn)控制器,傳輸數(shù)據(jù)波特率最高可達(dá)12Mb/s. USBN9603內(nèi)部集成收發(fā)器,通過(guò)18~27Ω的終端電阻與USB 電纜連接,如圖1中R7、R8 ;片內(nèi)集成了倍頻電路PLL ,可降低EMI ;并具有可編程時(shí)鐘輸出功能,如圖1 中U2 的CLKOUT引腳,在加電復(fù)位狀態(tài)下,默認(rèn)頻率輸出為4 MHz ,通過(guò)微處理器編程設(shè)置,其輸出頻率為frequency = 48 MHz/(CLKDIV + 1) ,其中CLKDIV 為0~15 之間的整數(shù),當(dāng)CLKDIV = 2時(shí),可以為ATmega8515 提供16MHz 時(shí)鐘源,簡(jiǎn)化了微處理器外圍電路;USBN9603 內(nèi)部集成了1個(gè)3. 3V 的調(diào)節(jié)器,通過(guò)1 個(gè)1. 5 kΩ的上拉電阻(如圖1中R1) 連接到USB 的D + 數(shù)據(jù)線上,可以使USB 主控制器識(shí)別出有1 個(gè)USB 全速設(shè)備正在連接.
USBN9603 有7 個(gè)基于FIFO 的端點(diǎn):1 個(gè)必需的雙向控制端點(diǎn)EPC0 (8 字節(jié)緩存), 3 個(gè)發(fā)送端點(diǎn)EPC1、EPC3 和EPC5 (每個(gè)64 字節(jié)緩存) ,3 個(gè)接端點(diǎn)EPC2、EPC4 和EPC6 (每個(gè)64 字節(jié)緩存) . 充分利用USBN9603 的FIFO ,可以使ATmega8515 微處理器和USBN9603 控制器并行運(yùn)行,大大提高了適配器的運(yùn)行效率.
USBN9603 的MODE0、MODE1 和ATmega8515 的2 個(gè)引腳相連,通過(guò)控制2 個(gè)引腳的電平,可以選擇USBN9603 和微處理器之間的接口方式(如表1 所示) .
表1 USBN9603 接口方式
USBN9603 支持DMA ,圖1 中ATmega8515 通過(guò)控制BACK為低電平來(lái)使能或高電平禁止DMA. 此外,USBN9603 的中斷輸出INTR 接到ATmega8515 的INTR0 上,使ATmega8515 能夠?qū)SBN9603進(jìn)行及時(shí)的狀態(tài)診斷和事件處理.
1. 3 CAN總線控制器
USB -CAN適配器中的SJA1000是工業(yè)自動(dòng)控制領(lǐng)域中獨(dú)立的CAN總線控制器, 是PhilipsSemiconductors公司繼PCA82C200的下一代產(chǎn)品,在PCA82C200 的BasicCAN模式基礎(chǔ)上, 增加了符合CAN2.0 協(xié)議規(guī)定的PeliCAN 模式, 因此它和PCA82C200 在電氣上是兼容的;支持11 位標(biāo)識(shí)符ID和29 位標(biāo)識(shí)符ID ;在最高達(dá)24MHz 的晶振下,通信速率達(dá)1 Mb/s ;發(fā)送緩存13 個(gè)字節(jié),接收緩存有64個(gè)字節(jié),采用FIFO 模式,減少了接收等待時(shí)間,提高了實(shí)際通信效率.
USB-CAN 適配器數(shù)據(jù)傳輸處理框圖如圖2 所示,CAN 總線控制器的數(shù)據(jù)地址復(fù)用口和ATmega8515的PA 口相連,它的中斷使能端和ATmega8515 的INT1引腳相連,使得ATmega8515能夠?qū)JA1000進(jìn)行及時(shí)的狀態(tài)診斷和事件處理;串行數(shù)據(jù)傳輸端通過(guò)光電隔離器件6N137和CAN控制器接口器件PCA82C250相連,使USB-CAN適配器的穩(wěn)定性及抗干擾能力大為提高.
評(píng)論