Lin模块用户手册
大约 10 分钟约 2960 字2025/12/26
Lin模块用户手册
目录
1. 简介
本模块提供了对 LIN (Local Interconnect Network) 的抽象接口,利用芯片的USART物理模块实现LIN协议通信。主要功能包括:
- 初始化/反初始化: 通过
HLI_Lin_Init或HLI_Lin_ModuleInit初始化LIN模块,配置波特率、间隔场长度、工作模式(主机/从机)等。通过HLI_Lin_Deinit进行反初始化。 - LIN通信: 支持LIN 2.0和LIN 2.1协议。
- 主机模式: 发送报头(Header),根据PDU配置发送数据(主机发送响应)或接收数据(从机发送响应)。
- 从机模式: 监听总线,根据ID进行数据响应(发送或接收)。
- 数据管理: 通过
HLI_Lin_AsyncSendFrame(主机) 发起调度,通过HLI_Lin_SlaveSetDataBuffer(从机) 动态更新响应数据。 - 中断回调: 提供发送完成、接收完成、校验和错误、奇偶校验错误等回调接口。
1.1 支持的设备
当前软件适用于以下芯片:
- KF32A158xxxSF
1.2 名词及缩写
| 缩写 | 解释 |
|---|---|
| MCU | 微控制器 |
| LIN | 本地互联网络 |
| USART | 通用全/ 半双工收发器 |
| ISR | 中断服务例程 |
2. 文件结构
| 文件名称 | 描述 |
|---|---|
| kf32axxx_hli_lin.c | 此文件包含LIN驱动程序的通用功能 |
| kf32axxx_hli_lin.h | 此头文件输出LIN驱动程序的宏、类型定义和函数原型 |
| kf32axxx_hli_lin_cfg.h | 本文件里声明了LIN驱动程序的静态配置参数宏开关 |
| kf32axxx_hli_lin_Lcfg.c | 本文件里定义了LIN驱动程序的配置数据 |
| kf32axxx_hli_lin_Lcfg.h | 本文件里声明了LIN驱动程序的配置数据 |
3. 数据结构
3.1 数据类型
3.1.1 宏定义
无。
3.1.2 枚举
LIN通用错误类型 (HLI_Lin_GeneralErrorCodeType)
枚举值 解释 HLI_LIN_ERROR_NONE 无错 HLI_LIN_ERROR_PID PID错误 LIN状态 (HLI_Lin_StatusType)
枚举值 解释 HLI_LIN_STATUS_OK 函数执行成功 HLI_LIN_STATUS_NOK 函数执行错误 HLI_LIN_STATUS_BUSY LIN总线忙 HLI_LIN_STATUS_UNINIT LIN模块未初始化 LIN模块 (HLI_Lin_ModuleType)
枚举值 解释 HLI_LIN_MODULE_0 LIN模块0 HLI_LIN_MODULE_1 LIN模块1 HLI_LIN_MODULE_2 LIN模块2 HLI_LIN_MODULE_3 LIN模块3 HLI_LIN_MODULE_6 LIN模块6 LIN消息响应方向 (HLI_Lin_ResponseDirectionType)
枚举值 解释 HLI_LIN_MASTER_RESPONSE 主机响应 HLI_LIN_SLAVE_RESPONSE 从机响应 HLI_LIN_SLAVE_TO_SLAVE 从机到从机通讯 LIN间隔场长度 (HLI_Lin_BlankLengthType)
枚举值 解释 HLI_LIN_BLANK_LENGTH_13BIT 13bit长度的间隔场 HLI_LIN_BLANK_LENGTH_16BIT 16bit长度的间隔场 LIN波特率 (HLI_Lin_BaudrateType)
枚举值 解释 HLI_LIN_BAUD_RATE_9600 9600波特率 HLI_LIN_BAUD_RATE_19200 19200波特率 LIN工作模式 (HLI_Lin_ModeType)
枚举值 解释 HLI_LIN_MODE_MASTER LIN主机模式 HLI_LIN_MODE_SLAVE LIN从机模式 LIN Tx引脚选择 (HLI_Lin_PassageWayType)
枚举值 解释 HLI_LIN_TX0 LIN Tx 引脚选择Tx0 HLI_LIN_TX1 LIN Tx 引脚选择Tx1
3.1.3 类型定义
PDU配置 (HLI_Lin_PduType)
成员 解释 Id LIN帧标识符 (0x00 - 0x3F) Drc 响应方向 (主机响应/从机响应) DataLength 数据长度 (1-8字节) SduPtr 指向SDU (Service Data Unit) 的指针,即数据缓冲区
3.2 配置项说明
静态配置
静态配置在
kf32axxx_hli_lin_cfg.h文件中通过宏定义完成。宏定义 解释 取值范围 HLI_LIN_RUNTIME_CALC_PID LIN PID获取方式。 HLI_LIN_CALCULATION_METHOD(计算方式)HLI_LIN_LOOKUP_TABLE_METHOD(查表方式)LIN_FEATURE_AUTO_BAUDRATE_ENABLE LIN从机自动波特率使能开关。 true: 使能false: 禁止LIN_FEATURE_PASSAGEWAY_ENABLE LIN发送引脚配置开关。 true: 可选择LIN发送引脚 (TX0/TX1)false: 不可选择 (默认为TX0)模块配置 (HLI_Lin_ModuleConfigType)
成员 解释 取值范围 Baudrate 波特率配置 可选范围参考 HLI_Lin_BaudrateTypeBlankLength 间隔场长度 (13bit/16bit) 可选范围参考 HLI_Lin_BlankLengthTypeMode 工作模式 (主机/从机) 可选范围参考 HLI_Lin_ModeTypePassageWay 发送通道选择 (仅当 LIN_FEATURE_PASSAGEWAY_ENABLE为 true 时有效)可选范围参考 HLI_Lin_PassageWayTypePduConfigPtr 指向PDU配置数组的指针 指向PDU配置( HLI_Lin_PduType)数组的指针PduNumber PDU配置数组的元素数量 PDU配置数量 RecDataCompleteCallback 数据接收完成回调函数 HLI_Lin_RecDataCompleteFcnType类型的函数指针.SendDataCompleteCallback 数据发送完成回调函数 HLI_Lin_SendDataCompleteFcnType类型的函数指针.ParityBitErrorCallback 奇偶校验位错误回调函数 HLI_Lin_ParityBitErrorFcnType类型的函数指针.ChecksumErrorCallback 校验和错误回调函数 HLI_Lin_ChecksumErrorFcnType类型的函数指针.GeneralErrorCallback 通用错误回调函数 HLI_Lin_GeneralErrorFcnType类型的函数指针.模块配置信息 (HLI_Lin_ModuleInfoType)
成员 解释 取值范围 ModuleIndex LIN模块索引序号 可选范围参考 HLI_Lin_ModuleTypeModuleConfigPtr 指向模块配置的指针 指向模块配置( HLI_Lin_ModuleConfigType)数组的指针顶层配置 (HLI_Lin_ConfigType)
成员 解释 取值范围 LinModuleNum 配置的LIN模块数量 与实际配置一致 LinModuleConfigPtrArr 指向模块配置信息数组的指针 指向模块配置信息( HLI_Lin_ModuleInfoType)数组的指针
4. 驱动函数
4.1 函数接口
4.1.1 HLI_Lin_Init
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_Init |
| 语法 | HLI_Lin_StatusType HLI_Lin_Init(const HLI_Lin_ConfigType *ConfigPtr) |
| 同步/异步 | 同步 |
| 重入性 | 不可重入 |
| 形参(输入) | ConfigPtr : LIN模块配置信息 |
| 形参(输出) | 无 |
| 返回值 | HLI_LIN_STATUS_OK: 函数执行成功 |
| 返回值 | HLI_LIN_STATUS_NOK: 函数执行错误 |
| 描述 | 初始化所有配置的LIN模块。 |
| 注意事项 | 无 |
4.1.2 HLI_Lin_ModuleInit
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_ModuleInit |
| 语法 | HLI_Lin_StatusType HLI_Lin_ModuleInit(HLI_Lin_ModuleType LinModule, const HLI_Lin_ModuleConfigType *ModuleConfigPtr) |
| 同步/异步 | 同步 |
| 重入性 | 不同LIN模块可重入 |
| 形参(输入) | LinModule : LIN模块编号 |
| 形参(输入) | ModuleConfigPtr : LIN模块配置结构体指针 |
| 形参(输出) | 无 |
| 返回值 | HLI_LIN_STATUS_OK: 函数执行成功 |
| 返回值 | HLI_LIN_STATUS_NOK: 函数执行错误 |
| 描述 | 初始化指定LIN模块。 |
| 注意事项 | 无 |
4.1.3 HLI_Lin_Enable
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_Enable |
| 语法 | HLI_Lin_StatusType HLI_Lin_Enable(HLI_Lin_ModuleType LinModule) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | LinModule : LIN模块编号 |
| 形参(输出) | 无 |
| 返回值 | HLI_LIN_STATUS_OK: 函数执行成功 |
| 返回值 | HLI_LIN_STATUS_UNINIT: LIN模块未初始化 |
| 描述 | 使能指定LIN模块。 |
| 注意事项 | 需要先初始化对应的LIN模块。 |
4.1.4 HLI_Lin_Disable
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_Disable |
| 语法 | void HLI_Lin_Disable(HLI_Lin_ModuleType LinModule) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | LinModule : LIN模块编号 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 禁止指定LIN模块。 |
| 注意事项 | LIN空闲时才可以禁止。 |
4.1.5 HLI_Lin_AsyncSendFrame
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_AsyncSendFrame |
| 语法 | HLI_Lin_StatusType HLI_Lin_AsyncSendFrame(HLI_Lin_ModuleType LinModule, uint8_t PduIndex) |
| 同步/异步 | 异步 |
| 重入性 | 可重入 |
| 形参(输入) | LinModule : LIN模块编号 |
| 形参(输入) | PduIndex: 消息队列编号 |
| 形参(输出) | 无 |
| 返回值 | HLI_LIN_STATUS_OK: 函数执行成功 |
| 返回值 | HLI_LIN_STATUS_NOK: 函数执行错误 |
| 返回值 | HLI_LIN_STATUS_BUSY: LIN总线忙 |
| 返回值 | HLI_LIN_STATUS_UNINIT: LIN模块未初始化 |
| 描述 | 主机发送报文头,根据PDU配置发起数据发送或接收请求。 |
| 注意事项 | LIN需要已初始化并使能, 且处于空闲状态。 |
4.1.6 HLI_Lin_SlaveSetDataBuffer
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_SlaveSetDataBuffer |
| 语法 | HLI_Lin_StatusType HLI_Lin_SlaveSetDataBuffer(HLI_Lin_ModuleType LinModule, uint8_t PduIndex, uint8_t *DataPtr) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | LinModule : LIN模块编号 |
| 形参(输入) | PduIndex: 消息队列编号 |
| 形参(输入) | *DataPtr: 消息内容指针 |
| 形参(输出) | 无 |
| 返回值 | HLI_LIN_STATUS_OK: 函数执行成功 |
| 返回值 | HLI_LIN_STATUS_NOK: 函数执行错误 |
| 返回值 | HLI_LIN_STATUS_BUSY: LIN总线忙 |
| 返回值 | HLI_LIN_STATUS_UNINIT: LIN模块未初始化 |
| 描述 | 更新LIN从机响应队列中指定编号的消息数据缓冲区。 |
| 注意事项 | LIN需要已初始化并使能, 且处于空闲状态。 |
4.1.7 HLI_Lin_Deinit
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_Deinit |
| 语法 | void HLI_Lin_Deinit(const HLI_Lin_ModuleType LinModule) |
| 同步/异步 | 同步 |
| 重入性 | 可重入 |
| 形参(输入) | LinModule : LIN模块编号 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 去初始化指定LIN模块。 |
| 注意事项 | 无 |
4.2 中断回调
4.2.1 HLI_Lin_SendDataCompleteFcnType
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_SendDataCompleteFcnType |
| 语法 | void (*HLI_Lin_SendDataCompleteFcnType)(uint8_t Id) |
| 形参(输入) | Id : LIN ID |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 发送完成时产生回调, 入参为发送的LIN ID。 |
| 注意事项 | 无 |
4.2.2 HLI_Lin_RecDataCompleteFcnType
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_RecDataCompleteFcnType |
| 语法 | void (*HLI_Lin_RecDataCompleteFcnType)(uint8_t Id, uint8_t *DataBuff, uint8_t DataLen) |
| 形参(输入) | Id : LIN ID |
| 形参(输入) | DataBuff : 消息内容指针 |
| 形参(输入) | DataLen : 消息长度 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 接收完成时产生回调, 并传入ID, 消息, 消息长度。 |
| 注意事项 | 无 |
4.2.3 HLI_Lin_ChecksumErrorFcnType
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_ChecksumErrorFcnType |
| 语法 | void (*HLI_Lin_ChecksumErrorFcnType)(uint8_t Id) |
| 形参(输入) | Id : LIN ID |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 接收消息校验和错误时产生回调, 并传入ID。 |
| 注意事项 | 无 |
4.2.4 HLI_Lin_ParityBitErrorFcnType
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_ParityBitErrorFcnType |
| 语法 | void (*HLI_Lin_ParityBitErrorFcnType)(uint8_t Id) |
| 形参(输入) | Id : LIN ID |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 接收消息PID校验错误时产生回调, 并传入ID。 |
| 注意事项 | 无 |
4.2.5 HLI_Lin_GeneralErrorFcnType
| Name | Description |
|---|---|
| 函数名称 | HLI_Lin_GeneralErrorFcnType |
| 语法 | void (*HLI_Lin_GeneralErrorFcnType)(HLI_Lin_GeneralErrorCodeType ErrorType) |
| 形参(输入) | ErrorType : 错误类型 |
| 形参(输出) | 无 |
| 返回值 | 无 |
| 描述 | 发生通用错误(如同步间隔场错误等)时产生回调, 并传入错误类型。 |
| 注意事项 | 无 |
5. 使用示例
注
示例中使用的参数仅用作示例演示,应用时以实际为准。
1. 主机模式
此示例展示了LIN主机如何初始化并调度帧的发送。
2. 从机模式
此示例展示了LIN从机如何初始化并动态更新响应数据。
6. 限制与假设
- Slave to Slave: 驱动当前未实现从机到从机(Slave to Slave)的通信功能。
- 波特率: 支持标准LIN波特率,如9600bps, 19200bps等。
- 硬件资源:占用Usart资源实现LIN通信,同一Usart模块同一时刻仅可用作Usart或者LIN通信。
7. 变更记录
| 版本 | 时间 | 变更记录 |
|---|---|---|
| v1.0 | 2025-11-24 | 新增初版文档 |
