微波EDA网,见证研发工程师的成长!
首页 > 应用设计 > 汽车电子 > 车载网络系统硬件及其驱动的设计

车载网络系统硬件及其驱动的设计

时间:01-05 来源: 点击:
  1引言

  在电子技术迅速发展以及在汽车上广泛应用的今天,汽车电子化程度越来越高。汽车电子系统中电子控件繁多、通信复杂度增大必然导致整车布线庞大而且复杂,安装空间紧缺,运行可靠性降低,故障维修难度增大。并且为提高信号利用率,要求数据信息互通,资源共享,传统的电气系统点对点的通讯方式已远不能满足这种需求。对上述问题,在已有成熟的计算机网络和现代控制技术的基础上,汽车网络技术应运而生。通过总线将汽车上的各种电子装置与设备连成一个网络,实现设备之间的信息共享,既减少了线束, 又可更好地控制和协调汽车的各个系统,使汽车性能达到最佳。

  2系统硬件设计

  本硬件系统所设计的车载网络具备数据处理、数据存储、数据通信、参数设置、显示等功能,能够很好地对传感器采集到的车速、车内温度、发动机运行状态、水温以及油量等数据进行传输、处理、存储,并通过显示屏显示,使驾驶员及时了解车体总的运行状况。系统按功能主要分为处理器模块、USB接口模块、存储模块、 UART异步串行口模块、CAN模块、10/100M以太网接口模块、显示模块以及电源。系统总体结构如图2.1所示。

  2.1 处理器模块

  该系统采用Samsung公司开发的一种32位RISC微处理器S3C2410,内含一个 ARM920T内核,芯片中集成了16KB 指令Cache、16KB 数据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启动,系统采用NAND Flash与SDRAM组合,可以获得非常高的性价比。

  2.2USB接口模块

  S3C2410的USB支持USB1.1版本,由悬空和唤醒功能。USB设备控制器可以用DMA接口提供一个高性能完备的速率功能控制解决方案,允许批量传输、中断传输和控制传输。S3C2410扩展USB十分方便,按照USB1.1标准协议连接即可,可以同时支持USB的低速和高速传输。

  2.3UART串行口模块

  UART,指的是异步串行口。在 ARM9微控制器中包含有两个UART0和UART1。UART0仅提供TXD和RXD信号引脚,UART1增加了一个调制截调器 MODEM接口,其余方面两者都是完全相同的。

  2.4 CAN模块

  本系统采用 Philips公司生产的适合汽车环境和一般工业系统环境的独立 CAN控制器MCP2510。MCP2510支持 CAN2.0B,而且具有一些新特征,应用非常广泛,是比较典型的独立CAN控制器。SJA1000有两种操作模式,即基本CAN模式和具有很多扩展功能的Peli CAN模式。

  2.5显示模块

  由于本系统选用芯片已集成了LCD控制器,所以只要选择合适的 LCD显示屏即可。系统选择SHARP公司的LQ080V3DG01显示屏。 LQ080V3DG01是一款 TFT-LCD显示模块,它由彩色TFT-LCD模板、驱动电路、控制电路、电源电路和背光单元组成,显示分辨率为RGB640×480,具备3.3V和 5V两种供电方式。

  3驱动程序设计

  车载网络系统的软件由三部分组成:实时操作系统、硬件驱动程序和运行于操作系统、 10/100M以太网USB存储设备、 USB鼠标、 USB键盘、 GPRS/CDMA、 GPS 之上的应用程序。实时操作系统采用源码公开的Linux操作系统。硬件驱动程序主要为USB设备驱动、CAN控制器驱动、串口驱动和LCD控制器驱动。

  3.1 USB设备驱动程序的设计

   Linux的USB内核子系统中,提供了几个与设备驱动程序开发直接相关的核心数据结构,定义于内核源代码的<linux/usb.h>中。限于篇幅,下面只讨论在 Linux下设计一个典型 USB设备驱动程序的通用架构流程。

  以上即为Linux中一个典型USB设备驱动程序的框架,通常包含设备初始化、设备卸载、设备打开、设备释放以及对设备进行读、写、控制等部分,是一种相对固定的格式。


  3.2CAN控制器驱动程序的设计

  Linux下驱动程序的编写有特定的规以及一些必要的模块,init_module模块是驱动程序中用来加载设备的,系统初始化时调用。此处用 arm9200_mcp2510_init()作为CAN总线驱动程序的入口函数,他将主要完成对MCP2510初始化,调用 register_chrdev()函数向系统注册字符型设备驱动程序,使用request_irq()函数为CAN总线的中断处理程序。根据传递CAN 数据的要求,设计了如下的数据结构予以存放一帧数据和对接收缓冲区进行管理:

Typedef struct{ unsigned int id; / * CAN网络中节点的标志符 * /
unsigned char data[8]; /* 要传的数据,最大为8个字节 * /
unsigned char dlc; / * 发送的数据长度 * /
int IsExt; / * 判断消息是否为扩展帧 * /
}
candata; Typedef struct{ Candata MCP2510_Candata[128];/ * 定义一个接收缓冲区 * /
int nCanRevpos; / *数据存入缓冲区的位置指针 * /
int nCanReadpos; / *数据读出的位置指针 * /
int loopbackmode;
wait_queue_head_t wq;
spinlock_t lock;
}
MCP2510_DEV;

  数据结构file_operations是驱动程序中一个重要的数据结构,内核就是通过这个结构来访问驱动的。应用程序通过对_read()、_write()、_ioctl()函数调用驱动中相应的程序来读写数据和控制字符设备的工作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top