HK32MCU应用笔记(9) | HK32F103x8xB系列CAN应用方案

2023-09-30 18:35

鸿顺HK32F系列

航顺HK32F系列MCU均采用ARM® Cortex核心架构。 HK32F103系列采用Cortex-M3内核,支持96M系统时钟。内部资源及外设丰富,内置CAN模块应用广泛。大多数工业工业和automotive Electronics产品需要使用CAN通信协议,并使用前向设计软件hardware以与进口的外国完全兼容产品。本节将讲解航顺HK32F103x8xB系列MCU的CAN应用差异。

CAN 是控制器本地区域网络(控制器区域网络k,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->实例->MSR, CAN_MSR_INAK))

……

while(HAL_IS_BIT_SET(hcan->实例->MSR, CAN_MSR_INAK))

解决方案:

1. 确认库版本。经过我们的测试,发现这两个判断的顺序颠倒了,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,后续初始化程序无法运行。

客户原码如下:

/* 请求初始化tialization */

CAN->MCR = CAN_MCR_INRQ;

/* ...并检查ac知道ledged */

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

{

初始化状态 = CANINITFAILED;

}

别的

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

推荐解决方案:设置INRQ后,延迟等待检查INAK=1后再初始化。

/* 请求初始化 */

CAN->MCR = CAN_MCR_INRQ;

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

{

我++;

if(i>100)返回 CANINITFAILED;

}

/* ...并检查已确认*/

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

{

初始化状态 = CANINITFAILED;

}

别的

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

}

根本原因:

HK32F103设置INRQ后,INAK需要98个PCLK置1。

航顺F1系列特殊函数库和S*M最新标准库增加了延迟。

Source: Hangshun Chip

Review Editor: Tang Zihong

-->