基于嵌入式系統(tǒng)的機(jī)械車(chē)載監(jiān)控終端研究
通過(guò)CAN模塊接口,ARM處理器可以直接訪(fǎng)問(wèn)CAN寄存器組,這些寄存器可以配置CAN核心模塊、CAN信息處理模塊以及訪(fǎng)問(wèn)信息RAM的方式。本系統(tǒng)采用飛利浦公司的TJA1050作為收發(fā)器,在CAN接口和CAN總線(xiàn)之間的收發(fā)器,作用是將3.3V的邏輯電平轉(zhuǎn)換為CAN的邏輯電平,也就是將發(fā)送和接收到的信號(hào)轉(zhuǎn)換成CAN總線(xiàn)和ARM可以識(shí)別的信號(hào)。
圖3CAN模塊的電路設(shè)計(jì)
4ARM中CAN模塊的軟件設(shè)計(jì)
在構(gòu)造和特性上,7202的CAN控制器與標(biāo)準(zhǔn)的CAN模塊基本沒(méi)有區(qū)別,只是在寄存器的個(gè)數(shù)與基地址的偏移上有些不同。
圖4CAN模塊操作順序
如圖4,在開(kāi)始進(jìn)行總線(xiàn)操作前需要做好4步工作。首先要使能CAN模塊,向CANEnableRegister寫(xiě)入0X01,由于ARM的引腳是復(fù)用的,所以在使能CAN模塊以前,先要將CAN模塊占用的引腳切換到特殊模式。然后要初始化CAN模塊,主要是正確的配置CommandMaskRegister,這個(gè)寄存器的作用是用來(lái)配置CAN模塊收發(fā)的信息體。接著,配置波特率,通過(guò)所想達(dá)到的CAN總線(xiàn)波特率,計(jì)算出計(jì)算公式各個(gè)變量的值,而CAN的波特率計(jì)算公式如下:(Tseg2+Tseg1+SJW+3)*BRP=CAN_CLK/Fbps。左邊的4個(gè)變量在BRP寄存器中,而等式右邊的CAN_CLK是一個(gè)固定值,在這里是48MHz。最后,配置信息存儲(chǔ)器,信息體的配置是與具體的應(yīng)用信息相關(guān)的,具體到信息緩沖寄存器組中的每一個(gè)寄存器的設(shè)置。需要提出的是,前面三步都是在初始化模式下完成的,而最后一步則是在正常模式下進(jìn)行。在進(jìn)行完這四部以后,就可以對(duì)CAN模塊進(jìn)行操作了。
linux操作系統(tǒng)把對(duì)CAN的操作看成是對(duì)文件的操作,對(duì)于文件,最基本的操作是打開(kāi)、關(guān)閉、讀和寫(xiě)。對(duì)于CAN模塊,讀與寫(xiě)操作分別實(shí)現(xiàn)接收數(shù)據(jù)的讀取和發(fā)送,打開(kāi)和關(guān)閉文件則分別實(shí)現(xiàn)CAN模塊的一些硬件資源的初始化和釋放先前所占有的資源,配置波特率、配置信息模式等配置特性的操作,則由ioctl函數(shù)完成的。
staticint_intcan_init(void)
?。?/p>
初始化默認(rèn)波特率、注冊(cè)驅(qū)動(dòng)程序
?。?/p>
intcan_open(structinode*inode,structfile*filp)
?。?/p>
設(shè)置CAN工作寄存器、初始化讀操作隊(duì)列、注冊(cè)CAN模塊中斷
?。?/p>
staticintcan_ioctl(structinode*inode,structfile*file,unsignedintcmd,unsignedlongarg)
?。?/p>
根據(jù)cmd參數(shù)選擇相應(yīng)的操作
}
上面列舉出了對(duì)CAN操作的初始化、打開(kāi)、和配置函數(shù),其他的還有讀、寫(xiě)、關(guān)閉等函數(shù),最后所要實(shí)現(xiàn)的功能就是CAN模塊中斷,在中斷中主要完成對(duì)于讀寫(xiě)位置標(biāo)志的改變,以實(shí)現(xiàn)阻塞型I/O操作,這樣,用戶(hù)通過(guò)應(yīng)用這些操作函數(shù)就完成了CAN總線(xiàn)的使用了。
5本文作者創(chuàng)新點(diǎn)
本設(shè)計(jì)利用嵌入式系統(tǒng)和CAN總線(xiàn),實(shí)現(xiàn)工程機(jī)械的車(chē)載監(jiān)控的集成化、信息化和智能化,通過(guò)在嵌入式系統(tǒng)CAN總線(xiàn)的應(yīng)用,可以方便的實(shí)現(xiàn)前端安全監(jiān)控、電液比例等單元監(jiān)控,并且可以進(jìn)行人機(jī)交互和圖像采集,有很好的應(yīng)用前景。
linux操作系統(tǒng)文章專(zhuān)題:linux操作系統(tǒng)詳解(linux不再難懂)相關(guān)推薦
技術(shù)專(zhuān)區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車(chē)電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論