Can 配置使用说明
大约 17 分钟约 5133 字2025/8/11配置工具
Can 配置使用说明
简介
本手册详细介绍了如何使用灵犀配置KF32A158SQV芯片的Can模块。
环境准备
确保已安装以下软件:
- 灵犀(版本需支持KF32A158SQV芯片)
- 支持KF32A158SQV芯片的MCAL(Microcontroller Abstraction Layer)软件包
创建项目
- 打开灵犀。
- 点击主界面上的“新建项目”按钮,如图所示

选择MCU型号
- 在“MCU型号选择”窗口中,选择“MCAL”项目类型。
- 在“快速选择MCU”下拉菜单中,选择“KF32A158SQV”。
- 点击“创建”按钮,如图所示

添加CAN模块
- 在灵犀主界面,点击左侧的“》”按钮打开模块添加界面,如图所示

- 在灵犀主界面,点击“Apply Module”按钮。
- 在“Module Manager”窗口中,从“unUsed”列表中选择“Can”模块。
- 点击中间的“>”按钮,将“Can”模块移动到“used”列表中。
- 点击“Apply”按钮,完成模块添加,如图所示

配置CAN模块
配置CanGeneral
- 在左侧树状结构中,展开“Can”并选择“CanGeneral”。
- 配置以下参数:(示例配置仅供参考,根据实际使用修改)
- CanDevErrorDetect: 是否启用开发错误检测和通知功能。
- CanIndex:指定该模块实例的InstanceId。如果只有一个实例存在,其Id应为0。
- CanLPduReceiveCalloutFunction:接收回调函数;默认不开启,如需配置,点击红色切换到绿色使用状态,然后可以配置回调函数名称,默认
CanLPduReceiveCalloutFunction
- CanMainFunctionBusoffPeriod:该参数描述了循环调用
Can_MainFunction_Busoff的周期。单位为秒。轮训模式时使用。(默认不开启,如需配置,点击红色切换到绿色使用状态)。 - CanMainFunctionModePeriod: 该参数描述了循环调用
Can_MainFunction_Mode的周期。单位为秒。轮训模式时使用。 - CanMainFunctionWakeupPeriod:该参数描述了循环调用
Can_MainFunction_Wakeup的周期。单位为秒。轮训模式时使用。(默认不启用,如需配置,点击红色切换到绿色使用状态)。暂不支持 - CanMultiplexedTransmission:是否允许多路复用传输。
- CanPublicIcomSupport:选择在CAN驱动程序中支持模拟网络功能。暂不支持
- CanSetBaudrateApi:是否启用Can_SetBaudrate API 支持(设置波特率)。
- CanTimeoutDuration: 指定在检测到超时之前,阻塞函数的最大时间。单位为秒。
- CanVersionInfoApi: 是否启用Can_GetVersionInfo API 支持(获取版本号)。
- CanApiTailoring:定制化参数配置
- CanPrecompileSupport:是否启用预编译支持。设置为
true表示启用,调用Can_Init时,入参应为空指针;为false表示不启用,调用Can_Init时,入参为配置参数地址。 - CanDeinitControllerApi:是否启用Can_DeInit API 支持(反初始化功能)。
- CanApiEnableAbortHth:是否启用Can_AbortHTH API 支持(终止发送)。
- CanTxNotification:发送完成,是否调用配置的回调函数。
- CanRxIndication:接收完成,是否调用配置的回调函数。
- CanErrorNotification:产生BusError,是否调用配置的回调函数。
- CanOffNotification:产生BusOff,是否调用配置的回调函数。
- CanWakeupNotification:CAN唤醒,是否调用配置的回调函数。暂不支持
- CanBusoffHardwareRecovery:是否使用硬件恢复功能。暂不支持
- CanGlobalTimeSupport:在专用 HTH 上激活出站时间戳功能。暂不支持
- CanCanFDMode:是否使用CAN FD模式。
- CanHardwareFilter:是否使用硬件过滤功能。
- CanMaskIfApi:BusOff、切换模式、接收回调、发送完成回调是否调用CANIF层接口。使能的时候,不调用CANIF层接口;不使能情况下,调用CANIF层接口。
- CanTxintSupported:发送完成是否开启中断处理功能(在配置中如果需要使能发送完成回调功能,需要开启该功能)。1x8SF系列不支持
- CanRxintSupported:接收回调是否开启中断处理功能(在配置中如果需要使能接收完成回调功能,需要开启该功能)。1x8SF系列不支持
- CanBointSupported:BusOff中断是否开启中断处理功能(在配置中如果需要使能BusOff回调功能,需要开启该功能)。1x8SF系列不支持
- CanWuintSupported:唤醒中断是否开启中断处理功能(在配置中如果需要使能唤醒回调功能,需要开启该功能)。暂不支持
- CanAlintSupported:仲裁丢失中断是否开启中断处理功能(在配置中如果需要使能仲裁丢失回调功能,需要开启该功能)。1x8SF系列不支持
- CanTxpollSupported:是否启用
Can_MainFunction_WriteAPI 支持(发送确认轮训功能)。 - CanRxpollSupported:是否启用
Can_MainFunction_ReadAPI 支持(接收确认轮询功能)。 - CanBopollSupported:是否启用
Can_MainFunction_BusOffAPI 支持(BusOff轮询功能)。 - CanWupollSupported:是否启用
Can_MainFunction_WakeupAPI 支持(Wakeup轮询功能)。暂不支持 - CanTransmitDelayOffsetSupported:是否启用发送器延迟偏移设置。暂不使用
FIFO配置项是1x8SF系列专有配置 - CanNormalRxFifoIntrOverflow:普通FIFO,接收FIFO溢出中断中断使能。
- CanNormalRxFifoIntrOverflowWarning:普通FIFO,接收FIFO溢出警告中断使能。
- CanNormalRxFifoIntrValidMessage:普通FIFO,接收FIFO有效消息中断使能。
- CanEnahanceFifoIntr:配置增强FIFO中断参数。
- CAN_ENHANCED_RX_FIFO_UNDERFLOW:增强型 FIFO 下溢中断使能
- CAN_ENHANCED_RX_FIFO_OVERFLOW:增强型 FIFO 上溢中断使能
- CAN_ENHANCED_RX_FIFO_WATER_MARK:增强型 Rx FIFO 中最小数量的 CAN 消息帧中断使能
- CAN_ENHANCED_RX_FIFO_DATA_USEFUL:增强型 Rx FIFO 中可用数据中断使能
- CanPrecompileSupport:是否启用预编译支持。设置为
- CanMainFunctionRWPeriods:用于根据所引用的项目配置周期,以循环调用Can_MainFunction_Read或Can_MainFunction_Write。
配置CanConfigSet
CAN模块的配置参数
配置CanIcom
配置虚假网络的参数。暂不支持
配置CanController
配置硬件单元信息,最多可支持4路硬件单元。138SF支持1路硬件单元
- CanBusoffProcessing:BusOff是否开启中断配置,配置中断模式,就需要打开对应的
CanBointSupported。 - CanControllerActivation:该Controller是否生效。
- CanControllerBaseAddress:硬件单元配置,0代表CANFD6,1表示CANFD7,2表示CANFD8,3表示CANFD9。138SF支持1路硬件单元,只能配置0
- CanControllerId:此参数提供控制器ID,在给定的CAN驱动中该ID是唯一的。此参数的值从0开始,连续且没有间断。
- CanRxProcessing:接收完成是否开启中断配置,配置中断模式,就需要打开对应的
CanRxintSupported。 - CanTxProcessing:发送完成是否开启中断配置,配置中断模式,就需要打开对应的
CanTxintSupported。 - CanWakeupFunctionalityAPI:是否启用Can_CheckWakeup API 支持。暂不支持
- CanWakeupProcessing:ID唤醒是否开启中断配置,配置中断模式,就需要打开对应的
CanWuintSupported。暂不支持 - CanWakeupSupport:支持通过CAN总线唤醒的CAN驱动程序。暂不使用该配置
- CanWorkMode:工作模式配置,正常工作模式和监听模式,1x8系列支持回环模式。
- CanHBORecovery:BusOff硬件恢复功能,需要打开对应的
CanBusoffHardwareRecovery才能生效。暂不支持 - CanClockSource:时钟源选择,建议选择系统时钟源。
- CanClockDivision:时钟分频配置。1x8SF系列专有配置
- ProtocolEnabled:协议异常启用。1x8SF系列专有配置
- EdgeFilterEnabled:总线集成状态中使用的边缘过滤器使能。1x8SF系列专有配置
- CanMailBoxBlockSize:
- 1x8系列:CAN邮箱大小配置,根据接收长度选择,8字节最大支持51个邮箱;16字节,最大支持36个邮箱;32字节最大支持23个邮箱;64字节最大支持13个邮箱。
- 1x8SF系列:CAN邮箱大小配置,根据接收长度选择,8字节最大支持64个邮箱;16字节,最大支持42个邮箱;32字节最大支持24个邮箱;64字节最大支持14个邮箱。
- CanErProcessing:BusError是否开启中断配置。
- CanArbiloseProcessing:发送仲裁失败中断使能配置。
- CanMdProcessing:调用
Can_MainFunction_Mode检查模式自动变化时,需要配置该模式为轮训模式。暂不支持中断模式 - CanControllerDescriptor:Controller定制信息
- CanDefaultBaudRateIndex:配置几组波特率时初始化选择哪一组的索引号。
- CanECUMWakeupSourceId:ID 源 EcuM 唤醒。暂不支持
- CanTxConfirmationNotification:发送完成回调函数配置,如需要配置需要打开
CanTxNotification。 - CanBusErrorNotification:BusError回调函数配置,如需要配置需要打开
CanErrorNotification。 - CanBusOffNotification:BusOff回调函数配置,如需要配置需要打开
CanOffNotification。 - CanWakeupNotification:ID唤醒回调函数配置,如需要配置需要打开
CanWakeupNotification。暂不支持 - RxFifoEventCallback:接收FIFO回调函数配置,需要配置普通FIFO
NormalFifoConfig或增强FIFOEnhanceFifoConfig后才能配置该回调函数。1x8SF系列专有配置
FIFO配置是1x8SF系列专有配置
- NormalFifoConfig: 普通FIFO配置。普通FIFO只能用于经典CAN模式,需要Controller配置中关闭
CanFdEnable
普通型 Rx FIFO 在使用时,需要配置包括使能状态、滤波元素数量、滤波元素结构、滤波元素标识符、独立滤波掩码和全局滤波掩码。- IsEnableNormalFifo: 普通FIFO使能。
- IDFormat: 格式分A\B\C三种格式。

- 格式 A 中:标准帧时候,滤波元素 Rx 帧标识符29-19位;扩展帧时,滤波元素 Rx 帧标识符29-1位。
- 格式 B 中,接收标准帧时,只有滤波元素 Rx 帧标识符高 11 位(29 到 19 和 13 到 3)用于帧识别;接收扩展帧时,滤波元素 Rx 帧标识符所有 14 位字段都与接收到的扩展帧 ID 的高 14 位相比较。
- 格式 C 中,滤波元素 Rx 帧标识符所有 8 位字段都与接收到的标准帧和扩展帧 ID 的高 8 位相比较。
- FilterNumber:滤波元素数量。滤波元素数量为 8~128 个,使用 NRFFN 进行设置。每 8 个滤波元素占据的 RAM 地址等于 2 个 MB
(16byte),这意味着,滤波元素个数越多,可用邮箱的空间就越小。
普通型 Rx FIFO 在滤波时,除了受滤波元素设置影响外,还受掩码的影响。掩码类型包括独立掩码和全局掩码。并非所有过滤元素均拥有独立掩码,独立掩码数量受过滤元素数量影响。独立掩码数量的计算公式为:8 + (2 × NRFFN),其中最大值为 32。独立掩码作用于序号靠前的过滤元素,剩余过滤元素使用全局掩码。
- GlobalMask:全局掩码。
- FilterConfig:滤波元素配置。选择数量 8~128 个。如选择8个时,至少和最多都是8个。
- 选择格式A时
- IsExtendedFrame_A:接收标准帧还是扩展帧,true为扩展帧,false为标准帧。
- FilterID_A:滤波元素 Rx 帧标识符。
- 选择格式B时
- IsExtendedFrame0_B:接收标准帧还是扩展帧,true为扩展帧,false为标准帧。
- FilterID0_B:滤波元素 Rx 帧标识符。
- IsExtendedFrame1_B:接收标准帧还是扩展帧,true为扩展帧,false为标准帧。
- FilterID1_B:滤波元素 Rx 帧标识符。
- 选择格式C时
- FilterID0_C:滤波元素 Rx 帧标识符。
- FilterID1_C:滤波元素 Rx 帧标识符。
- FilterID2_C:滤波元素 Rx 帧标识符。
- FilterID3_C:滤波元素 Rx 帧标识符。
- FilterMaskConfig:滤波元素独立掩码配置。独立掩码数量的计算公式为:8 + (2 × NRFFN),其中最大值为 32。如选择滤波元素选择16个时,掩码至少和最多都是10个。
- 选择格式A时
- IsExtendedFrame_A:是否匹配标准帧和扩展帧类型,true表示关心ID类型,false表示不关心ID类型。
- FilterMaskID_A:掩码,位1标志匹配,0标志不匹配。
- 选择格式B时
- FilterMaskIDE0_B:是否匹配标准帧和扩展帧类型,true表示关心ID类型,false表示不关心ID类型。
- FilterMaskID0_B:掩码,位1标志匹配,0标志不匹配。
- FilterMaskIDE1_B:是否匹配标准帧和扩展帧类型,true表示关心ID类型,false表示不关心ID类型。
- FilterMaskID1_B:掩码,位1标志匹配,0标志不匹配。
- 选择格式C时
- FilterMaskID0_C:掩码,位1标志匹配,0标志不匹配。
- FilterMaskID1_C:掩码,位1标志匹配,0标志不匹配。
- FilterMaskID2_C:掩码,位1标志匹配,0标志不匹配。
- FilterMaskID3_C:掩码,位1标志匹配,0标志不匹配。
- EnhanceFifoConfig:增强FIFO配置。增强FIFO只能用于CAN FD模式,需要Controller配置中打开
CanFdEnable,增强FIFO和普通FIFO只能同时配置一个。
增强型 Rx FIFO 拥有 6 个独立的滤波寄存器 ERFFELn,支持扩展 ID 滤波元素和标准 ID 滤波元素。增强型 Rx FIFO 滤波器元素的总数由 NFE 定义,NEXIF 则表示扩展 ID 滤波元素数量。增强型 Rx FIFO 在使用时,需要配置包括使能状态、滤波元素总数(NFE)、扩展 ID 滤波元素数量(NEXIF)、滤波元素标识符、水位等。由于滤波寄存器 ERFFELn 仅有 6 个,可设置的最大的扩展 ID 滤波元素和标准 ID 滤波元素数量有限,具体关系见下表
- IsEnableEnhanceFifo:增强FIFO使能。
- StandarIdFilterNumber:标准帧滤波元素数量。一个标准帧的滤波元素存储在一个 ERFFELn 寄存器中。一个扩展帧的滤波元素存储在两个 ERFFELn寄存器中。标准帧滤波元素数量必须是偶数个,即0、2、4、6。
- ExtendedIdFilterNumber:扩展帧滤波元素数量。与标准ID滤波元素数量有关,最大3个。((扩展帧ID过滤器数量 * 2) + 标准帧ID过滤器数量)不可大于6
标准ID数量 扩展ID最大数量 0 3 2 2 4 1 6 0 - WaterMark:水位中断。FIFO接收数量达到多少产生中断。
- StandardIDFilterConfig:标准帧滤波元素配置。
- FilterScheme: 滤波元素类型(CANFD_ENHANCED_RX_FIFO_FILTER_ELEMENT_FILTER_RANGE)。
- 基于掩码和滤波器

- FilterID_1: ID1是ID掩码。
- FilterID_2: ID2是滤波元素。
- FilterScheme: 滤波元素类型(CANFD_ENHANCED_RX_FIFO_FILTER_ELEMENT_FILTER_RANGE)。
- 基于 ID 范围

- FilterID_1: ID1是filter1。
- FilterID_2: ID2是filter2。
- FilterScheme: 滤波元素类型(CANFD_ENHANCED_RX_FIFO_FILTER_ELEMENT_TWO_FILTER)。
- 基于两个没有掩码的滤波元素

- FilterID_1: ID1是filter1。
- FilterID_2: ID2是filter2。
- ExtendedIDFilterConfig:扩展帧滤波元素配置。
- FilterScheme: 滤波元素类型(CANFD_ENHANCED_RX_FIFO_FILTER_ELEMENT_FILTER_RANGE)。
- 基于掩码和滤波器

- FilterID_1: ID1是ID掩码。
- FilterID_2: ID2是滤波元素。
- FilterScheme: 滤波元素类型(CANFD_ENHANCED_RX_FIFO_FILTER_ELEMENT_FILTER_RANGE)。
- 基于 ID 范围

- FilterID_1: ID1是filter1。
- FilterID_2: ID2是filter2。
- FilterScheme: 滤波元素类型(CANFD_ENHANCED_RX_FIFO_FILTER_ELEMENT_TWO_FILTER)。
- 基于两个没有掩码的滤波元素

- FilterID_1: ID1是filter1。
- FilterID_2: ID2是filter2。
1x8系列
- CanControllerBaudrateConfig:波特率配置。配置值,参考使用注意事项中波特率推荐值使用
- CanControllerBaudRate:仲裁段数据波特率,具体需要配置参数,该配置值是给上层引用。
- CanControllerBaudRateConfigID:配置该组波特率ID,函数
Can_SetBaudrate,入参是与该值匹配使用。 - CanControllerPropSeg:扩展传播段。暂不支持
- CanPreScale: 低速段波特率分频预设值。
- CanControllerSeg1:指定时间量子中的相位段1。
- CanControllerSeg2:指定时间量化中的相位段2。
- CanControllerSyncJumpWidth:指定控制器的同步跳转宽度为时间量化单位。
- CanSampleTimes:总线采样次数。
- CanControllerFdBaudrateConfig:高速段时钟配置。
- CanControllerFdBaudRate:数据段波特率,具体需要配置参数,该配置值是给上层引用。
- CanControllerPropSeg:暂不支持
- CanBrsPrescale:切换波特率分频预设值。
- CanControllerSeg1:指定时间量子中的相位段1。
- CanControllerSeg2:指定时间量子中的相位段2。
- CanControllerSspOffset:发射器延迟补偿偏移量,如需配置,需要打开
CanTransmitDelayOffsetSupported。暂不支持 - CanControllerSyncJumpWidth:指定控制器的同步跳转宽度为时间量化单位。
- CanControllerTxBitRateSwitch:指定是否在传输中使用比特率切换。
- CanFdFrameMode:NONISO和ISO模式选择。
1x8SF系列
- CanControllerBaudrateConfig:波特率配置。配置值,参考使用注意事项中波特率推荐值使用
- CanControllerBaudRate:仲裁段数据波特率,具体需要配置参数,该配置值是给上层引用。
- CanControllerBaudRateConfigID:配置该组波特率ID,函数
Can_SetBaudrate,入参是与该值匹配使用。 - TxArbitrationDelay:Tx仲裁开始延迟。
- CanControllerPropSeg:扩展传播段。
- CanPreScale:扩展预分频系数。
- CanControllerSeg1:扩展相位段 1。
- CanControllerSeg2:扩展相位段 2。
- CanControllerSyncJumpWidth:扩展同步跳宽。
- CanSampleTimes:总线采样次数。
- CanControllerFdBaudrateConfig:高速段时钟配置。
- CanControllerFdBaudRate:数据段波特率,具体需要配置参数,该配置值是给上层引用。
- CanControllerPropSeg:快速传播段。
- CanBrsPrescale:快速扩展分频系数。
- CanControllerSeg1:快速相位段 1。
- CanControllerSeg2:快速相位段 2。
- CanControllerSspOffset:暂不支持
- CanControllerSyncJumpWidth:快速同步跳宽。
- CanControllerTxBitRateSwitch:指定是否在传输中使用比特率切换。
- CanControllerEnableTdc:启用TDC功能。
- CanControllerTdcOffset:TDC偏移量。
- CanFdFrameMode:NONISO和ISO模式选择。
配置CanHardwareObject
配置接收、发送邮箱信息配置,需要配置多组CanHardwareObject
- CanFdPaddingValue:CANFD填充值,指定用于填充CAN FD帧中超过8字节的数据的值,以进行传输。如需配置,点击红色切换到绿色使用状态。
- CanHandleType:指定硬件对象的类型。
- CanHardwareObjectUsesPolling:启用对此硬件对象的轮询。
- CanHwObjectCount:邮箱数量。
- CanIdType:指定CAN ID的类型。
- CanObjectId:保存HRH或HTH的句柄ID。此参数的值在给定的CAN驱动程序中是唯一的,并且应从0开始,连续不断。
- CanObjectType:接收或发送类型。(先配置所有接收之后再配置发送)
- CanTriggerTransmitEnable:此参数定义了Can是否支持此句柄的触发发送API。暂不支持
- CanControllerRef:选择对应的硬件单元。
- CanMainFunctionRWPeriodRef:对CanMainFunctionPeriod的引用。如果已配置,此硬件对象将被轮询。引用
CanMainFunctionRWPeriods。如需配置,点击红色切换到绿色使用状态。 - CanHwFilter:Can的过滤器。配置
CanObjectType为接收模式,才需要配置该参数。- CanHwFilterCode:接收数据ID
- CanHwFilterMask:
- 1x8系列,掩码值,位0表示关心,需要过滤;位1表示不关心。
- 1x8SF系列,掩码值,位1表示关心,需要过滤,位0表示不关心。
- CanTTHardwareObjectTrigger:暂不支持
设置项目路径及名称
- 点击“Setting”按钮。
- “Project Name”是配置的工程名称
- 在“Project Path”设置工程保存路径。
- “Configuration Code Folder Name”配置文件存放的文件加名称。
- 点击“Confirm”保存设置,如图所示

保存配置并预览代码
- 点击“Save”按钮,保存配置。
- 点击“Preview Code”按钮,查看生成的代码文件列表,如图所示

- 点击相应的文件名,可以预览文件内容,如图所示

生成代码
- 点击“Generate code”按钮,生成相关配置文件,如图所示

查看生成代码
- 生成代码后,可以在项目路径下找到生成的源文件。
- 使用代码编辑器打开这些文件,进行查看或进一步编辑,如图所示

