微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 多功能嵌入式车辆行驶监控终端设计

多功能嵌入式车辆行驶监控终端设计

时间:06-17 来源:作者:李怀俊 点击:
2.4 LIN总线接口电路设计

LIN是低成本网络中的汽车通信协议标准,可以提高通信质量、降低成本,将是在汽车中使用汽车分级网络的重要因素。LIN总线是一种简单的单总线系统,其软件协议栈比较简单。一个LIN网络由一个主机节点和一个以上的从机节点组成,所有的节点都包括有从机服务程序,用来发送和接收数据,仅有一个节点包含有主机服务程序。主机程序主要用于发送同步间隔、同步场和ID场(或命令),以控制和协调各个节点的有序通信。

LPC2292微控制器集成有实现LIN总线节点的必要硬件,包括UART、捕获输入和足够的定时器,特别是其捕获输入功能,为LIN的帧头识别、帧同步 &波特率测量提供了极大的便利。LIN总线接口电路如图5所示,主要由LIN物理层接口芯片TJA1020构成,与LPC2292串口2相连,其主要完成MCU通信信号与LIN物理总线信号之间的相互转换,为MCU提供一个与LIN物理总线的接口。

2.5 红外通用接口模块

出于用户统一采集数据需求考虑,本系统设计了通用的红外接口。它能够支持红外遥控和数据通信,支持IrDA协议,能够方便地与各种符合协议标准的设备进行通信。该模块由HSDL7001编解码芯片和HSDL3600红外收发芯片组成。 HSDL7001与MCU串口相连,原理框图如图6所示。

HSDL7001可驱动IrDA兼容的收发器,最高传输速率达11 502 kbps,其内部有1个SIR编码器和1个SIR解码器,支持内部(外接3.684 MHz晶振)和外部16XCLK输入两种模式。当使用内部时钟时,波特率可通过A0、A1和A2进行调整。

3 终端软件设计

嵌入式μClinux具有结构小巧、实时性强、稳定性高、可定制性强的特点。在网络通信方面,嵌入式操作系统支持TCP/IP及其他协议并提供通信协议动态挂接技术,以及操作系统内部的进程通信应用接口技术。本设计采用稳定的2.4版本的内核,并对它进行合理的裁减和加载,作为操作平台。μClinux己对本系统采用的主控器有了很好的支持,但在编译本系统的内核前,需要修改 uclinux/linux-2.4.x/arch/armnommu/config.in文件中关于外部存储空间的定义,以满足本系统关于外部 Flash、CH375B和LCD液晶屏等器件的存储空间的划分。

3.1 进程管理

μClinux的进程调度沿用了Linux的传统,系统每隔一定时间挂起进程,同时系统产生快速和周期性的时钟计时中断,并通过调度函数(定时器处理函数)决定进程何时拥有相应的时间片,然后进行相关进程切换,这通过父进程调用:fork函数生成子进程来实现。

本系统中,为每个任务建立数据处理子进程,包括:车速、转速等信号采集处理任务、串口定时通信任务、USB数据传输任务、GPRS数据传输任务、LCD数据显示更新任务等。子进程采用由μClinux内核中的cron组件触发任务机制。系统中的crontab文件记录了终端的定时数据处理任务信息(可由系统前台设定任务执行周期),时间一到即可被cron触发其相应的子进程。由于采用多进程处理,终端可方便地实现多种信号的实时采集以及数据的及时处理、存储和上送。

3.2 设备驱动程序编写

设备驱动程序是内核与硬件之间的唯一接口,也是内核代码的一部分。当硬件设备要与内核进行交互时,就会产生一个中断信号,通过驱动程序预定义的入口点进入内核,入口点将此信号保存在栈中并保存被中断任务的寄存器的值。内核提取保存在栈中的中断信号,再由内核调用相应的中断处理程序。应用程序可以像操作普通文件一样对硬件设备进行操作。
本系统用到LPC22292的4路A/D采样接口对水温、刹车气压以及发动机电压状态等参数进行采集。下面以A/D采样驱动程序为例进行分析:

①应用程序只有通过对设备文件的open、close、read/write、ioctl等进行操作才能访问硬件设备,Linux的扩展文件操作结构 file_operations实现了标准的文件操作到硬件设备操作的映射,每个设备驱动程序都要实现这个接口所定义的部分或全部函数。A/D驱动程序的扩展文件操作结构如下:

②在设备驱动程序中使用中断,是提高系统数据处理速率的有效手段。有两项工作要做:
第一,在初始化函数中的register_chrdev()调用之后,使用request_irq()函数安装中断处理程序。request_irq()函数声明如下:

其中的参数irq是驱动程序使用的设备中断号;handler是中断服务函数指针;flags是一个与中断管理有关的各种选项的字节掩码;device在/proc/interrupts中用于显示中断的拥有者;dev_id这个指针用于共享的中断信号线,返回0成功,非0失败。

A/D驱动程序安装如下一个中断处理程序:

第二,实现这个中断服务程序,参数必须与request_irq()登记时要

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

网站地图

Top