首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于CAN总线的智能车的设计与实现

基于CAN总线的智能车的设计与实现

控制器局域网络CAN(Controller Area Network)是德国BOSCH公司为解决现代汽车中众多电子设备之间的数据交换而开发的一种串行数据通信协议,它具有高可靠性和良好的错误检测能力。汽车上主要有高速(500 kb/s)和低速(125 kb/s)两种CAN总线,这两种总线通过网关连接,实现两个局域网间的数据共享。

目前,随着对系统复杂化、精细化的要求越来越高,传统的集中控制从实时性和可靠性上越来越不能满足要求,分布控制逐渐得到了广泛应用。分布控制就是系统由一个主控制器和若干个分控制器组成,分控制器分别处理一部分系统功能,以并行或串行的方式与主控制器进行数据和信息的交互。

1 系统的总体设计

本设计主要完成了智能车在预先铺贴的道路上行驶。整个系统硬件组成框图如图1所示,包括采集节点和控制节点,它们之间通过CAN总线完成数据的交互。采集节点通过传感器采集道路信息,经过信号调理电路传送到微控制器,微控制器对信息进行处理后把数据发送到CAN总线上。控制节点读取总线上的数据并转换成控制命令,控制执行机构以确保智能车不偏离道路并且保持较高的速度。


2 节点的硬件接口设计

2.1 采集节点SST89E564RD与CAN总线接口

SST89E564RD自身不具有CAN模块,因此扩展了CAN总线控制器,通过CAN总线收发器接入总线。本设计采用的CAN控制器是SJA1000,其兼容CAN2.0B协议,通过单片机对其进行初始化,主要实现数据的接收和发送等通信任务。收发器选用PCA82C250,它是一种应用广泛的CAN控制器与物理总线间的接口芯片,能够对总线的信息进行差动发送和接收。为了进一步提高系统的抗干扰能力,在PCA82C250和SJA1000之间用高速光耦6N137进行隔离,以降低由于不同节点的高共模电压引起的串扰甚至对器件的损坏,提高系统的可靠性,其通信速率高达10 Mb/s,完全能满足CAN总线需要。SST89E564RD与CAN总线的硬件接口如图2所示。


2.2 控制节点DSP 与CAN 总线接口

TMS320F2812 DSP 芯片内部集成了一个完整的增强型CAN 控制器, 称之为eCAN, 在硬件设计中, 不需要再加入独立的CAN 控制器来实现CAN 总线的底层协议, 直接通过收发器PCA82C250 连接总线。DSP 与CAN总线接口设计如图3 所示。


3 CAN节点软件设计

3.1 CAN总线通信数据格式

CAN协议通信格式中有数据帧、远程帧、出错帧和超载帧4种帧格式。其中,数据帧和远程帧的发送需要在CPU控制下进行,而出错帧和超载帧的发送则是在错误发生和超载发生时自动进行的。一个有效的CAN的数据帧由起始帧、仲裁域、控制域、数据域、应答域和结束帧组成。一帧信息除仲裁域、控制域和数据域外,其他信息都是CAN控制器发送数据时自动加上去的,而仲裁域、控制域和数据域则必须由CPU给出。TMS320F2812的CAN控制器支持标准格式和扩展格式两种不同的帧格式,本设计采用标准格式。标识符作为报文的名称,在仲裁过程期间,它首先被发送到总线,在接收器的验收判断中和仲裁过程确定访问优先权中都要用到。远程发送请求位RTR决定发送的是远程帧还是数据帧。数据长度码DLC用来确定每帧发送几个字节的数据,最多8 B。SJA1000可以工作在标准CAN模式和增强型CAN模式两种模式。标准CAN模式提供11 bit标识符的识别,而增强型CAN模式支持29 bit标识符识别。本设计选择SJA1000工作在标准CAN模式,与DSP的CAN模块选择的数据格式相吻合。

3.2 SST89E564RD软件设计

SST89E564RD软件的设计是在KeilC下完成的,主要由初始化模块、采集模块和通信模块组成。

(1)初始化模块。单片机在SJA1000的复位模式下完成对CAN控制器的初始化,向其控制寄存器写入控制字,确定CAN控制器的工作方式。

(2)采集模块。摄像头传感器采集到的信息经信号调理电路处理后传输到单片机,单片机采用图像滤波算法对所有信息进行预处理。

(3)通信模块。把采集模块处理完的信息通过CAN总线与其他节点进行信息交互。

3.3 TMS320F2812软件设计

TMS320F2812的eCAN模块主要由CAN协议内核和消息控制器构成。协议内核主要完成消息解码并向接收缓冲器发送解码后的消息,同时根据CAN协议向总线发送消息,消息控制器决定对接收到的消息的取舍。TMS320F2812软件主要由初始化模块、通信模块和驱动模块组成。

(1)初始化模块。其完成对CAN控制层中的寄存器进行初始化,包括时钟使能、引脚定义、波特率的设定和收发邮箱的配置等。初始化模块流程图如图4所示。

(2)通信模块。它包括报文发送模块、报文接收模块和CAN出错管理模块。

(3)驱动模块。它包括转向控制模块和速度控制模块。由于智能车处于弯道和直道的转向模型不同,本系统在转向控制模块中采用了分段比例控制算法,而对智能车速度的调整既要快速又要准确,还不能频繁波动,本系统在速度控制模块中采用了PID控制算法。

系统采用SST89E564RD微处理器实时采集道路信息,采用TMS320F2812进行数据的综合处理,输出相应命令给执行机构,所有数据通过CAN总线交互,方便功能拓展。通过模拟测试和大量环境试验,以及对记录、实时检测、数据分析的整理,该智能车目前运行可靠。后续将增添无线模块节点,为该智能车添加遥控功能。
返回列表