基于WINCE的CAN總線設(shè)備驅(qū)動(dòng)研究
目前嵌入式車載網(wǎng)絡(luò)系統(tǒng)一般采用LINUX嵌入式操作系統(tǒng),以ARM7s3c44Bo為微控制器,SJAl000為CAN控制器的解決方案,實(shí)現(xiàn)LINUX下的CAN通信.在WINCE平臺(tái)下,CAN卡的研究已經(jīng)有很多。也取得了不錯(cuò)的應(yīng)用效果,但以ARM9s3c2440為嵌入式系統(tǒng)硬件核心,外圍擴(kuò)展CAN控制器SJA1000,嵌入式操作系統(tǒng)采用WINCE的應(yīng)用方案幾乎沒有,所以值得研究.
1 嵌入式車載網(wǎng)絡(luò)的構(gòu)成
嵌人式車載網(wǎng)絡(luò)由若干個(gè)子節(jié)點(diǎn)控制器和主控制單元組成,其中主控單元對(duì)子節(jié)點(diǎn)進(jìn)行監(jiān)視與控制,實(shí)現(xiàn)不同的CAN數(shù)據(jù)總線系統(tǒng)問的數(shù)據(jù)交換,網(wǎng)絡(luò)的拓樸結(jié)構(gòu)如圖1所示.
圖1系統(tǒng)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
2系統(tǒng)采用的驅(qū)動(dòng)模型
目前基于WINCE的兩種驅(qū)動(dòng)模型是本機(jī)設(shè)備驅(qū)動(dòng)程序和流接口驅(qū)動(dòng)程序,不同的驅(qū)動(dòng)模型只能通過它們支持的軟件接口來區(qū)別.
本系統(tǒng)采用的是流接口驅(qū)動(dòng)程序,圖2給出了流接口驅(qū)動(dòng)的工作結(jié)構(gòu).流接口驅(qū)動(dòng)模型由設(shè)備管理器統(tǒng)一加載、管理和卸載,應(yīng)用程序通過文件系統(tǒng)的API函數(shù)調(diào)用流接口函數(shù),然后由流接口驅(qū)動(dòng)程序調(diào)用本機(jī)驅(qū)動(dòng)或者通過設(shè)備管理器與系統(tǒng)內(nèi)核或外圍設(shè)備進(jìn)行信息交流。
圖2流接口工作結(jié)構(gòu)
3車載網(wǎng)絡(luò)主控單元硬件平臺(tái)實(shí)現(xiàn)
本車載網(wǎng)絡(luò)主控單元的硬件平臺(tái)采用的是嵌入式處理器ARM9s3c2440,CAN控制器SJAlooO,CAN總線收發(fā)器82C250,人機(jī)界面采用觸摸屏.系統(tǒng)的硬件組成結(jié)構(gòu)如圖3所示.
圖3系統(tǒng)硬件組成結(jié)構(gòu)
車載網(wǎng)絡(luò)主控制單元同時(shí)跨接在兩個(gè)CAN網(wǎng)絡(luò)之間,實(shí)現(xiàn)對(duì)高速、低速CAN網(wǎng)絡(luò)的監(jiān)控和數(shù)據(jù)的共享,相當(dāng)于一個(gè)CAN的HUB.ARM9s3c2440和SJA1000之間的部分硬件原理下面將簡(jiǎn)單描述.
本系統(tǒng)采用的XC95144是xILINX公司的復(fù)雜可編程邏輯器件(CPLD).由于系統(tǒng)還要提供許多其他接盯,如USB和PCMICA,為了更高效利用ARM9s3c2440的系統(tǒng)資源,特別是中斷資源,在系統(tǒng)硬件的設(shè)計(jì)中采用了CPLD.CAN控制器SJAl000的中斷引腳連接到CPLD,通過編制CPLD的一些邏輯控制程序,產(chǎn)生SJA1000的片選信號(hào)與中斷信號(hào),若CAN-INT中斷,則觸發(fā)ARM處理器的EINT0引腳,EINT0的硬件中斷后,ARM捕捉到此中斷信號(hào).82C250是CAN總線收發(fā)器,在本系統(tǒng)的設(shè)計(jì)中82C250與SJA1000間采用了光耦器件來進(jìn)行連接.
4流接口驅(qū)動(dòng)相關(guān)函數(shù)的實(shí)現(xiàn)
4.1 WINCE下訪問SJAl000寄存器的實(shí)現(xiàn)
根據(jù)硬件平臺(tái),得到ARM9s3c2440與SJA1000連接的硬件地址,即SJA1000的物理基地址,再結(jié)合SJA1000各寄存器與基地址的偏移關(guān)系.可以得到寄存器的所有物理地址.
在WINCE下,由于有MMU管理單元,因此不能使用物理地址,而只能采用虛擬地址(VA)來訪問該寄存器.調(diào)用WINCE的系統(tǒng)函數(shù)VirtualAlloc,VirtualCopy把物理地址轉(zhuǎn)化為程序可以訪問的虛擬地址,然后通過SJA1000的虛擬地址來設(shè)置SJA1000的工作狀態(tài).SJA1000的基本工作流程如圖4所示.
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論