针对采用应答机制设定的波特率检测方法的缺点,本文提出了一种新的自动波特率检测方法。本自动波特率检测系统巧妙地利用了ARM处理器的中断端口,将CAN总线上的波形记录到ARM处理器内,然后对获得的波形进行分析,得出系统的波特率。其检测速度快(小于200ms),检测准确(得出的波特率为一个精确值,而非范围值),不向被测网络发送数据,并且成本很低,无须增加任何芯片。

具体实现方法是:硬件方面,将隔离CAN接口的RX引脚接到ARM的定时器捕获端口。在软件方面,首先将RX引脚相邻两个上跳变和下跳变的间隔周期都记录下来;其次将周期数据排序,数据应呈阶梯状;然后将数据按阶梯分段并求出每个阶梯的中位数,第一个阶梯为1位数据的持续时间,第二个阶梯为2位数据的持续时间……以此类推。由于CAN总线不会连续6位出现相同电平,因此阶梯只有5阶,且第二个数据等于第一个数据的2倍,第三个数据等于第一个数据的3倍,以此类推。根据这个特性可以校验数据并调整最终获得的1位数据的持续时间。最终的波特率即为1位持续时间的倒数。流程图如图4所示。

基于ARM单片机和智能手机的CAN总线分析仪设计

图4波特率检测流程图

2.2智能手机界面设计

智能手机界面的设计采用Eclipse。Eclipse是一个开放源代码的、基于Java的可扩展开发平台,它只是一个框架和一组服务,用于通过插件组件构建开发环境,并附带了一个标准的插件集,包括Java开发工具。手机运行界面如图5、图6所示。

基于ARM单片机和智能手机的CAN总线分析仪设计

图5软件运行界面

基于ARM单片机和智能手机的CAN总线分析仪设计

3实验验证

为了验证本蓝牙CAN分析仪的设计效果,构建了1个包含以ARM为核心的主板、锂电池、智能手机(安装了安卓系统)、模拟被测系统的USB-CAN的测试系统,然后进行实际测试。测试流程图如图7所示。

基于ARM单片机和智能手机的CAN总线分析仪设计

图7实际测试流程图

实际测试系统如图8所示。实际测试显示,在模拟CAN总线上只要有数据的流通,针对不同的CAN总线的波特率设置,本文设计的蓝牙CAN分析仪能够准确、快速地自动检测波特率且能实现数据的接收和发送。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查