h1_key

当前位置:首页 >新闻资讯 > 技术文章>航顺芯片>HK32F103x8xB系列CAN的应用解决方案
HK32F103x8xB系列CAN的应用解决方案
2022-11-28 956次




  航顺HK32F系列

  航顺HK32F系列MCU都采用的是ARM®Cortex内核架构,其中HK32F103家族使用的是Cortex-M3内核,支持96M的系统时钟,内部资源以及外设丰富,其内部自带的CAN模块应用非常广泛。工业类,汽车电子产品大部分需要用到CAN通讯协议,并且采用正向设计软硬件全兼容国外进口产品,本节就针对航顺HK32F103x8xB系列MCU 的CAN应用差异部分做个说明。

  CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。


  CAN总线的特点

  (1)它是一种多主总线,即每个节点机均可成为主机,且节点机之间也可进行通信。

  (2)通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1mb/s。

  (3)CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余校验、优先级判别等项工作。

  (4)CAN协议的一个最大特点是废除了传统的站地址编码,代之以对通信数据块进行编码。采用这种方法的优点是可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种数据块编码方式,还可使不同的节点同时接收到相同的数据,这一点在分步式控制中非常重要。

  (5)数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而佐证了通信的实时性。

  (6)CAN协议采用crc检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN总线所具有的卓越性能、极高的可靠性和独特设计,特别适合工业设备测控单元互连。因此备受工业界的重视,并已公认为最有前途的现场总线之一。

  以下为用户使用HK芯片替代S*M 系列的CAN应用常见的问题

  CAN 环回测试失败

  MXCube 比较老的版本(比如 4.17.0),产生的 CAN 初始化代码不正确。


  错误如下:

  while(HAL_IS_BIT_CLR(hcan->Instance->MSR, CAN_MSR_INAK))

  ……

  while(HAL_IS_BIT_SET(hcan->Instance->MSR, CAN_MSR_INAK))

  解决方案:

  1.确认库版本,经过我们测试发现,这2个判断顺序反了,MXCube4.22.0产生的CAN初始化代码已经交换过来了。

  CAN 初始化不能完成

  CAN总线在没有数据发送时,默认为隐性。对于我们芯片CANRX就应该是高电平,如果CAN网络出现异常,将总线拉成显性,或者,测试中CANRX接口没有接PHY芯片,也没有接上拉电阻,我们芯片都会出现CAN初始化不能完成,S*T*M32F103相同条件下可以初始化完成。


  根本原因:

  我们芯片在初始化过程中会判断总线的隐性状态,如果不是隐性,不能完成初始化。


  解决方案:

  1. CANRX 必须接上拉电阻或内部上拉。

  CAN MSR寄存器INAK 置位慢

  客户使用CAN接口标准库,初始化CAN控制器,HK32F103在INRQ置位后,INAK并没有立即置1,导致客户代码进入Fail,后续初始化程序没有运行到。


  客户原始代码如下:

  /* Request initialisation */

  CAN->MCR = CAN_MCR_INRQ;

  /* ...and check acknowledged */

  if ((CAN->MSR & CAN_MSR_INAK) == 0)

  {

  InitStatus = CANINITFAILED;

  }

  else

  {初始化CAN控制器的寄存器}

  推荐方案:在设置INRQ后,延时等待检查INAK=1后,再进行初始化。

  /* Request initialisation */

  CAN->MCR = CAN_MCR_INRQ;

  while((CAN->MSR & CAN_MSR_INAK) ==0)

  {

  i++;

  if(i>100)return CANINITFAILED;

  }

  /* ...and check acknowledged */

  if ((CAN->MSR & CAN_MSR_INAK) == 0)

  {

  InitStatus = CANINITFAILED;

  }

  else

  {初始化CAN控制器的寄存器

  }


  根本原因:

  HK32F103在INRQ置位后,INAK需要98个PCLK才会被置1。

  航顺F1系列专用函数库以及S*M最新的标准库都是加了延时了。

  • 航顺芯片HK32M060高速风筒BLDC MCU解决方案
  • 航顺芯片推出的HK32M060高速风筒BLDC MCU解决方案,具有航顺自研电机加速单元与实时采样效率,可提高电机的工作效率和控制精确度。同时,HK32M060系列产品相较于同类产品集成度更高,可极大精简板级器件,节省BOM成本。
    2023-12-27 189次
  • 消防栓装上航顺芯HK32L08x
  • 消防栓是重要的火灾控制设备,但在实际应用中,消防栓存在安装分散和管理复杂等问题,于是火灾现场供水压力不足、抢修停水等现象屡见不鲜,严重影响灭火工作,造成重大人身财产损失,影响城市消防安全。
    2023-10-30 254次
  • 13万转高速吹风机HK32F030C8T6解决方案
  • 航顺芯片作为国产32位MCU供应商,根据市场需求,推出了基于国产32位MCU HK32F030C8T6芯片的高速吹风机整体解决方案,以其高转速(高达13万转)、精准恒温、高性能低成本、高可靠性等优点,深受客户认可,已在多家知名品牌客户中量产出货。
    2023-06-19 474次
  • HK32F0301MxC 15KV脉冲点火抗干扰分析
  • HK32F0301MxC在厨房环境中,厨电脉冲点火高达一万五千伏,产生的干扰对MCU确实是一项硬核考验,厨电设备的开关、点火等操作会产生大量的电磁干扰,这些干扰可能会对MCU的正常工作造成影响,甚至导致系统故障或安全事故。
    2023-05-08 408次
  • 航顺芯片32位平替8位MCU神器HK32F0301M
  • 航顺芯片从2019年立项,2020年2月首次发布推出第一颗低于1元人民币的经济型32位MCU HK32F030M家族替代8位MCU以来,在高性能、高性价比的魅力下得到了广大客户的热烈追捧,应用场景与领域越来越广。
    2023-04-18 427次

    万联芯微信公众号

    元器件现货+BOM配单+PCBA制造平台
    关注公众号,优惠活动早知道!
    10s
    温馨提示:
    订单商品问题请移至我的售后服务提交售后申请,其他需投诉问题可移至我的投诉提交,我们将在第一时间给您答复
    返回顶部