時間:2008-07-11 11:25:00來源:ronggang
圖3 CAN模塊的電路設計[/align]
4 ARM中CAN模塊的軟件設計
在構造和特性上,7202的CAN控制器與標準的CAN模塊基本沒有區別,只是在寄存器的個數與基地址的偏移上有些不同。
[align=center]
圖4 CAN模塊操作順序[/align]
如圖4,在開始進行總線操作前需要做好4步工作。首先要使能CAN模塊,向CAN Enable Register寫入0X01,由于ARM的引腳是復用的,所以在使能CAN模塊以前,先要將CAN模塊占用的引腳切換到特殊模式。然后要初始化CAN模塊,主要是正確的配置Command Mask Register,這個寄存器的作用是用來配置CAN模塊收發的信息體。接著,配置波特率,通過所想達到的CAN總線波特率,計算出計算公式各個變量的值,而CAN的波特率計算公式如下:(Tseg2+Tseg1+SJW+3)* BRP = CAN_CLK/Fbps。左邊的4個變量在BRP寄存器中,而等式右邊的CAN_CLK是一個固定值,在這里是48MHz。最后,配置信息存儲器,信息體的配置是與具體的應用信息相關的,具體到信息緩沖寄存器組中的每一個寄存器的設置。需要提出的是,前面三步都是在初始化模式下完成的,而最后一步則是在正常模式下進行。在進行完這四部以后,就可以對CAN模塊進行操作了。
linux操作系統把對CAN的操作看成是對文件的操作,對于文件,最基本的操作是打開、關閉、讀和寫。對于CAN模塊,讀與寫操作分別實現接收數據的讀取和發送,打開和關閉文件則分別實現CAN模塊的一些硬件資源的初始化和釋放先前所占有的資源,配置波特率、配置信息模式等配置特性的操作,則由ioctl函數完成的。
static int _int can_init(void)
{
初始化默認波特率、注冊驅動程序
}
int can_open(struct inode *inode, struct file *filp)
{
設置CAN工作寄存器、初始化讀操作隊列、注冊CAN模塊中斷
}
static int can_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
{
根據cmd參數選擇相應的操作
}
上面列舉出了對CAN操作的初始化、打開、和配置函數,其他的還有讀、寫、關閉等函數,最后所要實現的功能就是CAN模塊中斷,在中斷中主要完成對于讀寫位置標志的改變,以實現阻塞型I/O操作,這樣,用戶通過應用這些操作函數就完成了CAN總線的使用了。
5 本文作者創新點
本設計利用嵌入式系統和CAN總線,實現工程機械的車載監控的集成化、信息化和智能化,通過在嵌入式系統CAN總線的應用,可以方便的實現前端安全監控、電液比例等單元監控,并且可以進行人機交互和圖像采集,有很好的應用前景。
參考文獻:
[1] 陶偉,魏洪興,劉淼.智能化工程機械通訊定位系統的研究.工程機械,2003(7): 1-3
[2] 陳翌,田捷,王金剛.嵌入式軟件技術開發.北京: 國防工業出版社,2003: 1-3
[3] 殷華文,劉黎明,劉萬里.工業控制網絡設計技術.自動化儀表,2002,13(11): 24-27
[4] 袁海斌.基于現場總線的工程機械控制與操縱系統關鍵技術研究[北京航空航天大學碩士學位論文]. 北京:北京航空航天大學,2004
[5] Mo-Yuen Chow,Yodyium Tipsuwan. Network-based control systems: A tutorial. IEEE industrial electronics society,2001(2): 1593-1602
[6] 李熙. 機動車輛安全監控系統設計與分析[J]. 微計算機信息, 2006, 5-1: 104-106
標簽:
上一篇:中央空調制冷系統的改造
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
相關資訊
產品新聞
更多>2025-09-08
2025-08-06
2025-07-08
2025-06-30
2025-06-16
2025-06-09