欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

您好,歡迎來電子發(fā)燒友網(wǎng)! ,新用戶?[免費注冊]

您的位置:電子發(fā)燒友網(wǎng) > 電子技術應用 > 汽車電子 >

車載網(wǎng)絡系統(tǒng)硬件及其驅動的設計

2009年12月29日 11:30 不詳 作者:胡小斌 郝衛(wèi)東 夏澎 用戶評論(0

車載網(wǎng)絡系統(tǒng)硬件及其驅動的設計

 1引言

  在電子技術迅速發(fā)展以及在汽車上廣泛應用的今天,汽車電子化程度越來越高。汽車電子系統(tǒng)中電子控件繁多、通信復雜度增大必然導致整車布線龐大而且復雜,安裝空間緊缺,運行可靠性降低,故障維修難度增大。并且為提高信號利用率,要求數(shù)據(jù)信息互通,資源共享,傳統(tǒng)的電氣系統(tǒng)點對點的通訊方式已遠不能滿足這種需求。對上述問題,在已有成熟的計算機網(wǎng)絡和現(xiàn)代控制技術的基礎上,汽車網(wǎng)絡技術應運而生。通過總線將汽車上的各種電子裝置與設備連成一個網(wǎng)絡,實現(xiàn)設備之間的信息共享,既減少了線束, 又可更好地控制和協(xié)調汽車的各個系統(tǒng),使汽車性能達到最佳。

  2系統(tǒng)硬件設計

  本硬件系統(tǒng)所設計的車載網(wǎng)絡具備數(shù)據(jù)處理、數(shù)據(jù)存儲、數(shù)據(jù)通信、參數(shù)設置、顯示等功能,能夠很好地對傳感器采集到的車速、車內溫度、發(fā)動機運行狀態(tài)、水溫以及油量等數(shù)據(jù)進行傳輸、處理、存儲,并通過顯示屏顯示,使駕駛員及時了解車體總的運行狀況。系統(tǒng)按功能主要分為處理器模塊、USB接口模塊、存儲模塊、 UART異步串行口模塊、CAN模塊、10/100M以太網(wǎng)接口模塊、顯示模塊以及電源。系統(tǒng)總體結構如圖2.1所示。

系統(tǒng)總體結構

  2.1 處理器模塊

  該系統(tǒng)采用Samsung公司開發(fā)的一種32位RISC微處理器S3C2410,內含一個 ARM920T內核,芯片中集成了16KB 指令Cache、16KB 數(shù)據(jù)Cache、MMU、外部存儲器控制器、NANDFlash控制器、1個LCD控制器、SDRAM控制器、 3個通道兩個獨立的 UART、4個通道的DMA、 8通道的10位ADC、觸摸屏接口、IIC總線接口、1個USB主機接口,1個USB設備接口、117位通用I/O口和24位外部中斷源。 S3C2410x支持從NAND Flash啟動,系統(tǒng)采用NAND Flash與SDRAM組合,可以獲得非常高的性價比。

  2.2USB接口模塊

  S3C2410的USB支持USB1.1版本,由懸空和喚醒功能。USB設備控制器可以用DMA接口提供一個高性能完備的速率功能控制解決方案,允許批量傳輸、中斷傳輸和控制傳輸。S3C2410擴展USB十分方便,按照USB1.1標準協(xié)議連接即可,可以同時支持USB的低速和高速傳輸。

  2.3UART串行口模塊

  UART,指的是異步串行口。在 ARM9微控制器中包含有兩個UART0和UART1。UART0僅提供TXD和RXD信號引腳,UART1增加了一個調制截調器 MODEM接口,其余方面兩者都是完全相同的。

  2.4 CAN模塊

  本系統(tǒng)采用 Philips公司生產(chǎn)的適合汽車環(huán)境和一般工業(yè)系統(tǒng)環(huán)境的獨立 CAN控制器MCP2510。MCP2510支持 CAN2.0B,而且具有一些新特征,應用非常廣泛,是比較典型的獨立CAN控制器。SJA1000有兩種操作模式,即基本CAN模式和具有很多擴展功能的Peli CAN模式。

  2.5顯示模塊

  由于本系統(tǒng)選用芯片已集成了LCD控制器,所以只要選擇合適的 LCD顯示屏即可。系統(tǒng)選擇SHARP公司的LQ080V3DG01顯示屏。 LQ080V3DG01是一款 TFT-LCD顯示模塊,它由彩色TFT-LCD模板、驅動電路、控制電路、電源電路和背光單元組成,顯示分辨率為RGB640×480,具備3.3V和 5V兩種供電方式。

  3驅動程序設計

  車載網(wǎng)絡系統(tǒng)的軟件由三部分組成:實時操作系統(tǒng)、硬件驅動程序和運行于操作系統(tǒng)、 10/100M以太網(wǎng)USB存儲設備、 USB鼠標、 USB鍵盤、 GPRS/CDMA、 GPS 之上的應用程序。實時操作系統(tǒng)采用源碼公開的Linux操作系統(tǒng)。硬件驅動程序主要為USB設備驅動、CAN控制器驅動、串口驅動和LCD控制器驅動。

  3.1 USB設備驅動程序的設計

   Linux的USB內核子系統(tǒng)中,提供了幾個與設備驅動程序開發(fā)直接相關的核心數(shù)據(jù)結構,定義于內核源代碼的<linux/usb.h>中。限于篇幅,下面只討論在 Linux下設計一個典型 USB設備驅動程序的通用架構流程。

USB設備驅動程序的通用架構流程

  以上即為Linux中一個典型USB設備驅動程序的框架,通常包含設備初始化、設備卸載、設備打開、設備釋放以及對設備進行讀、寫、控制等部分,是一種相對固定的格式。

 3.2CAN控制器驅動程序的設計

  Linux下驅動程序的編寫有特定的規(guī)以及一些必要的模塊,init_module模塊是驅動程序中用來加載設備的,系統(tǒng)初始化時調用。此處用 arm9200_mcp2510_init()作為CAN總線驅動程序的入口函數(shù),他將主要完成對MCP2510初始化,調用 register_chrdev()函數(shù)向系統(tǒng)注冊字符型設備驅動程序,使用request_irq()函數(shù)為CAN總線的中斷處理程序。根據(jù)傳遞CAN 數(shù)據(jù)的要求,設計了如下的數(shù)據(jù)結構予以存放一幀數(shù)據(jù)和對接收緩沖區(qū)進行管理:

Typedef struct{ unsigned int id; / * CAN網(wǎng)絡中節(jié)點的標志符 * /
unsigned char data[8]; /* 要傳的數(shù)據(jù),最大為8個字節(jié) * /
unsigned char dlc; / * 發(fā)送的數(shù)據(jù)長度 * /
int IsExt; / * 判斷消息是否為擴展幀 * /
}
candata; Typedef struct{ Candata MCP2510_Candata[128];/ * 定義一個接收緩沖區(qū) * /
int nCanRevpos; / *數(shù)據(jù)存入緩沖區(qū)的位置指針 * /
int nCanReadpos; / *數(shù)據(jù)讀出的位置指針 * /
int loopbackmode;
wait_queue_head_t wq;
spinlock_t lock;
}
MCP2510_DEV;

  數(shù)據(jù)結構file_operations是驅動程序中一個重要的數(shù)據(jù)結構,內核就是通過這個結構來訪問驅動的。應用程序通過對_read()、_write()、_ioctl()函數(shù)調用驅動中相應的程序來讀寫數(shù)據(jù)和控制字符設備的工作。

  3.3 串口驅動程序的設計

  串口驅動程序采用查詢方式,主要包括串口初始化函數(shù)、數(shù)據(jù)接收函數(shù)和數(shù)據(jù)發(fā)送函數(shù)。串口初始化函數(shù)USIinit()主要是用來設置 USART工作是的參數(shù),用戶應用程序可以通過調用數(shù)據(jù)接收函數(shù)RevUSData()對接收到的函數(shù)進行各種處理。USART的數(shù)據(jù)接收和發(fā)送都是一個主動的過程,因此此函數(shù)的設計較為簡單。數(shù)據(jù)發(fā)送函數(shù)SendUSData()類似于數(shù)據(jù)接收函數(shù),可以被用戶程序調用。

  3.4 LCD控制器驅動程序的設計

  在驅動LCD設計過程中首要的是要配置LCD控制器,而在配置LCD控制器時最重要的則是指定幀緩沖區(qū)(FrameBuffer)。幀緩沖設備對應的設備文件是/dev/fb*,數(shù)據(jù)結構如下:

Static struct file_operations
fb_fops={ ower:THIS_MODULE,
read:fb_read,
write:fb_write,
ioctl:fb_ioctl,
mmap:fb_mmap,
open:fb_open,
}

  其中的函數(shù)對具體的硬件進行操作,對寄存器進行設置,對顯示緩沖進行映射。初始化函數(shù)首先初始化LCD控制器,在Linux中可以用kmalloc()函數(shù)動態(tài)分配連續(xù)LCD顯示緩沖區(qū)。接著就是初始化一個fb_info結構,補充成員變量,調用register_framebuffer(& fb_info),將fb_info注冊入內核。結構fb_info的成員函數(shù):
struct fb_ops{
int (*fb_get_fix)(struct fb_fix_screeninfo *fix, int con, struct fb_info *info);
int (*fb_get_var)(struct fb_var_screeninfo *var, int con, struct fb_info *info);
int (*fb_set_var)(struct fb_var_screeninfo *var, int con, struct fb_info *info);
}

  4結束語

  本文詳細介紹了嵌入式車載網(wǎng)絡系統(tǒng)的底層硬件和驅動程序的設計并成功地完成了硬件與軟件的調試。本文作者創(chuàng)新點:此網(wǎng)絡系統(tǒng)極大地減少了電控裝置數(shù),節(jié)省了粗大線束占用的汽車寶貴空間資源以及實現(xiàn)了汽車內部電子儀表間的數(shù)據(jù)共賞、通信與處理,從而提高了汽車的安全性能。

非常好我支持^.^

(0) 0%

不好我反對

(0) 0%

( 發(fā)表人:發(fā)燒友 )

      發(fā)表評論

      用戶評論
      評價:好評中評差評

      發(fā)表評論,獲取積分! 請遵守相關規(guī)定!

      ?