首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于嵌入式系统的机械车载监控终端研究
来源:本站整理  作者:佚名  2009-08-21 10:16:59



3.2 CAN模块的硬件设计

  通过CAN模块接口,ARM处理器可以直接访问CAN寄存器组,这些寄存器可以配置CAN核心模块、CAN信息处理模块以及访问信息RAM的方式。本系统采用飞利浦公司的TJA1050作为收发器,在CAN接口和CAN总线之间的收发器,作用是将3.3V的逻辑电平转换为CAN的逻辑电平,也就是将发送和接收到的信号转换成CAN总线和ARM可以识别的信号。


图3 CAN模块的电路设计

4 ARM中CAN模块的软件设计

  在构造和特性上,7202的CAN控制器与标准的CAN模块基本没有区别,只是在寄存器的个数与基地址的偏移上有些不同。


图4 CAN模块操作顺序

  如图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] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:288,886.70000 毫秒