STM32 CAN总线调试经验

标签: CAN
6人阅读 评论(0) 收藏 举报
分类:

前言

STM32 CAN代码网上很多,但大都是讲如何配置的,对于一些原理以及注意事项没有很清楚的说明。在实际调试过程中,两个设备间的通信只要设备CAN的配置一样基本就可以调通,但在增加设备的过程中,很容易出现多设备无法通信的问题,这里主要就这一问题进行说明。

硬件

STM32F042G4 + MAX3051

测试过程

测试板回来后,两个设备间的通信轻松搞定,但在增加设备的过程中,增加的设备总是不能正常通信。详细比对了一下配置,也没有任何问题。后来,仔细研读MAX3051的芯片手册,得到以下几个重要信息:

MAX3051有四种工作模式

  • 高速模式:数据传输速率可达1Mbps,但抗干扰能力弱,需要双绞线

  • 斜率控制:可编程控制最高500kbps的传输速率,可减少电磁干扰EMI(因此可使用非屏蔽双绞线或平行线)

    ​ 斜率控制速率计算:

    ​ RRS (kΩ) ≈ 12000 / (maximum speed in kbps)

  • 待机(standby)模式:发射机关闭,接收机被拉高,低电流模式

  • 关机模式:发射和接收都关闭

原来测试板焊接有52k电阻,CAN为斜率控制模式,而实际配置的波特率高达1M,显然是行不通的,后去掉该电阻直接接地,通信OK。再后来为了增加抗干扰能力,还是焊接了电阻,使其工作在斜率控制模式。

其他说明

  • “显性”(“Daminant”)数值表示逻辑“0”,而“隐性”(“Recessive”)表示逻辑“1”

  • 电流

    Dominant(显性):TYP-35mA MAX-70mA

    Recessive(隐性):TYP-2mA MAX-5mA

  • CAN布线注意事项

  • CAN采样点说明1说明2

    sample = ( 1 + CAN_BS1) / (1 + CAN_BS1 + CAN_BS2)

    总体要求:CAN_BS1>=CAN_BS2>=2*CAN_SJW 采样点在70%~80%附近最佳

  • CAN波特率计算

    CAN波特率 = CAN时钟/( (1 + CAN_BS1 + CAN_BS2) * CAN_Prescaler)

    ​ = CAN时钟/(CAN_SJW + CAN_BS1 + CAN_BS2)*CAN_Prescaler)

最后,综合以上布线、采样点、波特率等说明,成功串联13个模块,速度在400k。

查看评论

STM32 CAN总线调试的一点心得总结

手上有两块STM32的板子,一个是网上买的MINI STM32工控板,另一个是自己公司设计的板子。二者有所不同,大致有两点,第一是串口,工控板用的是USART1 且用的是GPIO PA9(TX)和PA...
  • sunny_hu92
  • sunny_hu92
  • 2017-12-18 16:34:21
  • 1516

STM32_CAN-bus总线协议调试心得

  • 2010年08月25日 15:53
  • 282KB
  • 下载

STM32 CAN总线说明

简介: CAN是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。由德国电气商博世公司在1986年率先提出。此后,CAN通过ISO11898及...
  • windows260
  • windows260
  • 2016-04-12 22:42:24
  • 11081

STM32F103 CAN总线原理图 源码

  • 2015年12月10日 09:38
  • 28.1MB
  • 下载

STM32的CAN总线调试——与以太网转CAN联调的小问题

单片机与CAN总线
  • xdxlove
  • xdxlove
  • 2016-12-30 11:14:08
  • 850

STM32 CAN总线调试

  • 2013年11月20日 12:49
  • 2.06MB
  • 下载

基于stm32的can总线彻底研究

1、CAN总线的初始化void can_init(void){      CAN_InitTypeDef        CAN_InitStructure;      CAN_FilterInitTy...
  • mao0514
  • mao0514
  • 2015-09-17 15:08:43
  • 3434

stm32的can总线理解及应用——程序对应stm32f103系列

stm32的can总线理解及应用——程序对应stm32f103系列CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。它的通信速度较快...
  • qq_29413829
  • qq_29413829
  • 2016-11-19 15:20:04
  • 10352

STM32 107 USB调试心得

一直用的STM32 103 系列, 后来需要调试一下USB, 将103换成了107RC, 使用的USB驱动程序已在107VC上运行成功过, 但移植到107RC上时一直 无法初始化成功, 最终发现问题...
  • zayike
  • zayike
  • 2016-07-16 21:11:01
  • 505

基于STM32的CAN总线通信学习笔记

本文主要简单介绍CAN总线的相关概念,以及通信协议等知识,和使用STM32自带的bxCAN外设进行CAN总线编程实验,以及编程心得。...
  • ludaoyi88
  • ludaoyi88
  • 2016-11-26 12:17:05
  • 6809
    个人资料
    等级:
    访问量: 383
    积分: 375
    排名: 20万+
    文章存档
    最新评论