收藏 分销(赏)

基于CAN标准的CAN串转换通信技术研究样本.doc

上传人:精**** 文档编号:4656340 上传时间:2024-10-08 格式:DOC 页数:7 大小:400KB 下载积分:6 金币
下载 相关 举报
基于CAN标准的CAN串转换通信技术研究样本.doc_第1页
第1页 / 共7页
基于CAN标准的CAN串转换通信技术研究样本.doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 基于CAN2.0标准的CAN-串转换通信技术研究 于素梅 蔡祥宝 ( 南京邮电大学 电子科学与工程学院, 南京 210003) 摘 要: 现场总线是自动化领域的计算机网络, 已成为当今自动化领域技术发展的热点。CAN总线是现场总线的一种, 它与串口之间的通信, 是经过硬件电路的电平转换, 和软件设计的数据处理实现的。此方法实现了双CAN功能, 提高了通信的可靠性。 关键词: CAN总线; CAN设置; 双CAN; 串口RS232; 看门狗 1 引言 CAN (Controller Area Network) 总线又称控制器局域网, 是Bosch公司在现代汽车技术中领先推出的一种多主机局部网。它是一种串行通信网络, 支持分布式实时控制, 最大传输速度可达1Mbit/s, 最大传输距离为10km。CAN规范已被 ISO 国际标准组织制订为国际标准, 即CAN标准, 现在最常见的是2.0标准, 分为2.0A和2.0B。其区别仅在通信数据位数, 前者是11位的标准帧, 后者是29位的扩展帧。CAN 协议建立在国际标准组织的开放系统互连参考模型基础上的, 主要工作在数据链路层和物理层, 用户可在其基础上开发适合系统实际需要的应用层通信协议。而串口 RS232 作为标准计算机串行接口, 与 CAN 网的结构、 传输特性、 通信协议等都不相同, 因此导致不同设备间无法进行直接通信。因此实现二者之间的直接信息流交互成为问题的关键。 2 原理 这里采用嵌入式芯片 STM32F103 作为主控, CAN网和串口数据的转换是经过芯片相应管脚收发数据, 然后把转换后的数据发送出去的过程。此方法实现了双CAN的功能, 即经过继电器切换实现两个CAN切换使用, 相当于单刀双掷开关,这样增强了CAN的可靠性。 2.1 CAN网切换 经过芯片连接继电器的管脚拉高和拉低实现CAN网的切换, 默认为低, 是一路, 当软件程序中写高时就会拉高, 则继电器切换到另外一路, 实现双CAN 的功能。 2.2 CAN-串通信协议转换 CAN网设置是通串口发送的数据来实现的, 即芯片STM32F103根据上位机串口发来的数据, 把CAN属性设置成相应的值。这样就与上位机串口设置一致, 便于观察与记录。不但美观还节省测试者的大量时间。 串口RS232互连总线接口主要功能是接口模块与PC机通信。 通信方式: 信息以串行异步通信方式传送。 传输速率: 11.52kbit/s。 字节发送帧结构: 按发送顺序依次为1个起始位, 8个信息位, 1个停止位。 串口发送数据步骤: 先设置CAN, 设置完把设置值回发给串口, 串口接收到数据后表示CAN已设置完成, 能够进行数据通信, 然后再发送数据。当帧头为FE时表示设置CAN , 为FF时表示进行数据通信。如串口发FE F0 F1 EF FE FE EF, 则设置CAN, 同时会把这组数据发给串口, 串口接收到这组数之后, 才能够进行CAN-串转换通信。设置CAN时串口发送数据为下表一所示: 此处 CAN 波特率可有十个选择( 如表A) , 因为要实现 CAN 的正常通讯, 通讯节点之间设置的波特率必须相同。因此用户能够根据自己的需要, 设置自己的波特率。 表 1 设置CAN的数据 帧头DATA0 DATA1 DATA2 DATA3 DATA4 0xFE 波特率设置 ( 见表A) 0xF1: CAN-1路 0xF0: CAN-2路 0xFE: 单滤波 0xEF: 双滤波 0xFE: 只听模式 0xEF: 正常模式 DATA5 DATA6 DATA7 0xFE: 标准帧 0xEF: 扩展帧 0xFE: 远程帧 0xEF: 数据帧 用户自定义 A)波特率DATA1设置: 0xF0: 5k 0xF5: 125k 0xF1: 10k 0xF6: 250k 0xF2: 20k 0xF7: 500k 0xF3: 50k 0xF8: 800k 0xF4: 100k 0xF9: 1M 3 软硬件设计 3.1 硬件设计 电原理图如下图1: G5 25MHZ C5 20pF C50 20pF + C53 10uF/16V C54 104 C55 104 C56 104 +3.3V 1 2 3 XS5 CON3 +3.3V D5_BOOT0 V51 LED R503 1K D5_PB6 1 2 3 XS50 CON3 VCC 1 GND 2 TXD 3 RXD 4 CANH 6 CANL 7 CANG 8 D51 CTM8251A +3.3V D5_BOOT1 D5_CANTX D5_CANRX +5V + C58 10uF/16V C59 10n R1 0 CANH CANL C52 10n +3.3V + C51 10uF/16V V5 LED R51 1K D5_STM32F_TX D5_STM32F_RX +3.3V +3.3V 1 2 3 XS508 CON3 + C523 0.1u/16V + C525 0.1u/16V + C526 0.1u/16V + C524 0.1u/16V + C527 0.1U/16V D5_TXD232 D5_RXD232 C528 10n C1+ 2 C1- 4 C2+ 5 C2- 6 T1IN 11 R1OUT 9 EN 1 FON 12 FOFF 16 INVALID 10 R1IN 8 T1OUT 13 V- 7 V+ 3 VCC 15 GND 14 D52 MAX3221EAE +3.3V D5_RST GND 1 RESET 2 VCC 3 D54 MAX809R G51 32KHZ C530 12pF C529 12pF D5_OSC32_IN D5_OSC32_OUT 1 2 3 5 4 AND D55 SN74AHC1G08DBV R594 10K +3.3V D5_RST_CPU D5_RST D5_RST_J +3.3V +3.3V +3.3V +3.3V +3.3V GND GND GND GND D5_CANTX D5_CANRX D5_RST_CPU D5_STM32F_TX D5_STM32F_RX D5_JTDI D5_JTDO D5_JTCK D5_JTMS D5_BOOT1 D5_BOOT0 D5_OSC32_IN D5_OSC32_OUT PE2/TRCECK 1 PE3/TRACED0 2 PE4/TRACED1 3 PE5/TRACED2 4 PE6/TRACED3 5 VBAT 6 PC13-ANTI_TAMP 7 PC14-OSC32_IN 8 PC15-OSC32_OUT 9 VSS_5 10 VDD_5 11 OSC_IN 12 OSC_OUT 13 NRST 14 PC0/ADC_IN10 15 PC1/ADC_IN11 16 PC2/ADC_IN12 17 PC3/ADC_IN13 18 VSSA 19 VREF- 20 VREF+ 21 VDDA 22 PA0-WKUP 23 PA1 24 PA2 25 PA3 26 VSS_4 27 VDD_4 28 PA4 29 PA5 30 PA6 31 PA7 32 PC4 33 PC5 34 PB0 35 PB1 36 PB2/BOOT1 37 PE7 38 PE8 39 PE9 40 PE10 41 PE11 42 PE12 43 PE13 44 PE14 45 PE15 46 PB10/USART3_TX 47 PB11/USART3_RX 48 VSS_1 49 VDD_1 50 PB12 51 PB13 52 PB14 53 PB15 54 PD8 55 PD9 56 PD10 57 PD11 58 PD12 59 PD13 60 PD14 61 PD15 62 PC6 63 PC7 64 PC8 65 PC9 66 PA8 67 PA9/USART1_TX 68 PA10/USART1_RX 69 PA11/CANRX 70 PA12/CANTX 71 PA13/JTMS/SWDIO 72 NC 73 VSS_2 74 VDD_2 75 PA14/JTCK/SWCLK 76 PA15/JTDI 77 PC10 78 PC11 79 PC12 80 PD0 81 PD1 82 PD2 83 PD3 84 PD4 85 PD5 86 PD6 87 PD7 88 PB3/JTDO 89 PB4/JNTRST 90 PB5 91 PB6 92 PB7 93 BOOT0 94 PB8 95 PB9 96 PE0 97 PE1 98 VSS_3 99 VDD_3 100 D5 STM32F103VBT6 +3.3v GND D5_JNTRST PA0 PA1 PA2 PA3 PA4 PA5 PA6 PA7 PD0 PD1 PD2 PD3 PD4 PD5 PD6 PD7 read D5_JTMS D5_JTCK D5_JTDO D5_RST_J D5_JNTRST D5_JTDI D5_GND_J R5002 0R R5001 10K R5000 10K R599 10K R598 10K R597 10K GND +3.3V 1 2 3 4 5 6 7 8 XS53 CON8 R5003 0R D5_GND_J D5_PB6 1 2 3 XS509 CON3 CAN-GND C522 10nF C521 1uF VREF+ VREF+ VREF- VREF- INIT1 INIT2 +3.3V GND write 1 2 XS1 CON2 R54 120R tp 1 X1 TP tp 1 X2 TP tp 1 X3 TP tp 1 X4 TP tp 1 X6 TP tp 1 X7 TP tp 1 X8 TP L1 8 1 K2A G6K-2F-5V V7 1N4148SMD V11 MMBT9013LT1 C42 47n R11 5.1K +5V 3 2 4 K2B G6K-2F-5V 6 7 5 K2C G6K-2F-5V 1 2 3 XS510 CON3 PD1 +3.3V 图 1 电原理图 内部晶振: 32KHZ; 外部晶振: 8MHZ; 管脚配置: PA12为CAN_TX, PA11为CAN_RX, PA10为USART_RX, PA11为USART_TX; 复位电路模块: D54部分, MAX809R作为复位电路芯片; 双CAN模块: D51部分, XS509和XS510是两路CAN, XS510是CAN-1路, 为高时通, XS509是CAN-2路, 为 s低时通。默认为低, 是XS509通, 当PD1管脚控制切换; 外部串口收发模块: D52部分; 电机模块: K2; 为了保证CAN网的可靠性, 并在错误出现时尽快定位错误设备, 找出错误原因, 规范规定了看门狗稳定性保证措施, 两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障; 当计数器达到给定的超时值时, 触发一个中断或产生系统复位, 以防止程序意外跑飞。这样为系统提供了更高的安全性、 时间的精确性和使用的灵活性。 3.2 软件设计 软件设计主要包括上位机和下位机的编写, 上位机用的VC++平台,下位机用嵌入式IAR EWARM平台。 ( 1) 上位机 由于串口调试助手不具备通用性、 局限性太大, 很多时候不能满足设备的要求, 因而此处上位机采取新的方法, 重新编写界面, 不但更加美观, 同时对下位机CAN的设置也更加清晰明了, 让用户一目了然, 使用起来十分方便。 ( 2) 下位机 下位机中CAN节点通信主要包括: 串口初始化、 CAN初始化、 CAN报文转换为串数据和串数据转换为CAN报文四部分。下面就各部分作简要描述, 以便大家在实际应用中参考。 在进行通信时, 主控芯片 STM32F103 接收到 CAN 网的数据时, 先转换成串口数据, 然后再发出去给上位机串口, 串口的数据在界面中显示出来。同理接收到串口发送的数据时, 先转换成 CAN 数据, 再发出去给 CAN 网, 能够用周立功的 CAN 卡进行监视。CAN 的转换能够为原样显示, 也能够转换其它进制, 如八、 十进制等, 此处 CAN 设置为原样转换。即 CAN 来的数据, 在串口上是原样显示, 串过来的数据在CAN上原样显示。这里帧 ID 也是原样传输的。 串初始化程序: USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; CAN初始化设置: #define USART_FRAME_HEAD 0xFE #define USART_FRAME_HEAD1 0xFF if((UsartRxBuffer[i].Data[0]) == USART_FRAME_HEAD) //设置CAN { //此处举例帧格式 if(UsartRxBuffer[i].Data[5] == 0xFE) {TxMessage.IDE = CAN_ID_STD;} //扩展帧 else if(UsartRxBuffer[i].Data[5] == 0xFE) { TxMessage.IDE = CAN_ID_EXT; } //标准帧 } CAN转换成串: if (RxMessage.IDE == CAN_ID_STD) //标准帧 UsartTxBuffer[i].Data[3] = (uint32_t)RxMessage.StdId & 0xFF; UsartTxBuffer[i].Data[2] = (uint32_t)(RxMessage.StdId >> 8) & 0x07; UsartTxBuffer[i].Data[1] = 0; UsartTxBuffer[i].Data[0] = 0; else {… } //扩展帧 for(j=0; j<CAN_Data->DataLength; j++) UsartTxBuffer[i].Data[(UsartTxBuffer[i].DataLength++)+4] = CAN_Data->Data[j]; 串转换成CAN: if ( (UsartRxBuffer[i].Data[0]) == USART_FRAME_HEAD1 ) j = Get_Free_CANTxBuffer(); for (k=5; k<UsartRxBuffer[i].DataLength; k++) { CANTxBuffer[j].Data[k-5] = UsartRxBuffer[i].Data[k]; } CANTxBuffer[j].DataLength = UsartRxBuffer[i].DataLength; 软件流程如下图2所示: 图 2 软件流程图 此方法的流程图能够分三部分: 开始部分是初始化程序, 串口中断程序是对串口数据的处理转换部分, CAN中断程序是对CAN数据的处理转换部分。 4 结束语 数据通信在嵌入式系统的应用中占有重要地位, CAN与串口的互相通信也越来越重要, 这种转换方法功能明确、 结构简单、 具有很强的通用性和实用性, 特别对于CAN的特性设置和两路CAN的切换, 使得用户能够根据自己的需要随意更改。上位机界面也很美观和实用。同时由于加入看门狗程序, 使得通信更加稳定、 可靠, 而且成本很低, 足以满足用户系统的各种要求。由于这一CAN通信技术具有模块化特点, 因此可适用于多种嵌入式系统中的数据通信. 参 考 文 献 [1]饶运涛.现场总线CAN原理与应用技术[M].北京: 北京航天航空出版社, .20~166. [2]王田苗.嵌入式系统设计与实例开发[M].北京:清华大学出版社, . [3]吴志伟,丁铂.USB-CAN-RS232总线转换电路设计与实现[J].国外电子元器件, (6):31-34. CAN- Serial Conversion Communication Based On The CAN2.0 Standard Yu Sumei Cai Xiang bao School of electrical science and engineering , Nanjing University of Posts & Telecommunications, Nanjing 210003 Abstract: The field bus is computer network in the field of automation, which has become the hotspot in the development of automation technology. CAN bus is a kind of field bus, and communication conversion between CAN and serial is achieved by voltage conversion in hardware circuit and data conversion in software programming. Here we carry out double CAN function to ensure the high stability. Key words: CAN bus, CAN set, Double CAN, Serial RS232 , Watchdog 作者简介: 于素梅( 1987-) , 南京邮电大学电子与通信工程专业研究生, 研究方向为光网络通信与移动通信。通信地址: 南京市新模范马路66号, 电话: Email:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服