返回
S32DS让KEA系列与LIN进行亲密接触(二)
后端
2024-02-17 08:39:39
S32DS作为恩智浦官方推荐的开发工具,它与IAR、MDK等三方开发工具有着截然不同的特点和优点,当然,还有使用上的“坑”,下面会逐一介绍。
工具下载
* S32DS for Arm® v4.3.0
* MCUXpresso SDK v2.10.1
* MCUXpresso Config Tools v4.4.0
创建工程
选择开发板
打开S32DS软件,新建工程,在弹出的New Project窗口中,选择左上角的icon,导入MCUXpresso Config Tools并重启。重启后,在New Project窗口中选择“MCUXpresso Project from MCU”后,进入下一步。
配置工程
在此页面选择需要使用的KE系列芯片,如果芯片型号是KEA64,则选择kinetisKEA64,选择好之后,确认chip Series和chip Name之后,点击Next进入下一步,然后勾选使用MCUXpresso SDK,并且选择对应型号的SDK版本,如果芯片型号是KEA64,则选择mcuxpresso_sdk_KEAxxx_2.10.1版本。
选择好SDK版本之后,进行配置,设置工程名、存放路径之后,设置工程属性,选择芯片型号和编译器版本,如果芯片型号是KEA64,则芯片型号选择KEA64,编译器版本选择GNU Arm Embedded Toolchain 10.3 2021.12。配置完成后,点击Finish,工程创建完成。
新建工程后,在“Project Explorer”窗口下会生成“src”文件夹,在“src”文件夹下生成“main.c”文件,双击打开,在文件的顶部添加以下头文件:
#include "fsl_port.h"
#include "fsl_sim.h"
#include "fsl_lin.h"
配置LIN模块
初始化时钟
KEA64的LIN模块使用的是BUS时钟,而BUS时钟的源头是LPOSC或ERCLK32K,因此,先通过代码开启LPOSC或ERCLK32K时钟,这里我们选择LPOSC。
/* Enable LPOSC clock */
CLOCK_EnableClock(kCLOCK_Lposc);
/* Switch to LPOSC clock */
CLOCK_SelectSystickClkSrc(kCLOCK_SystickSrcLposc);
配置LIN模块
LIN初始化之前需要把LIN模块复位,下面给出复位的代码:
LIN_Init(LIN0);
然后配置LIN模块的波特率,以19200波特率为例:
lin_user_config_t lin_config = {
.baudRate = 19200U,
.masterConfig.busIdleTimeout = 10U,
.slaveConfig.responseTimeout = 10U,
};
LIN_Init(LIN0, &lin_config);
配置LIN模块完成后,还需要使能LIN模块:
LIN_EnableTx(LIN0, true);
LIN_EnableRx(LIN0, true);
发送LIN消息
发送LIN消息之前,需要先初始化LIN消息缓冲区,包括ID、DLC、数据等,下面给出初始化LIN消息的代码:
lin_msg_t txMessage;
txMessage.id = 0x32U;
txMessage.dlc = 8U;
txMessage.data[0] = 0x01U;
txMessage.data[1] = 0x02U;
txMessage.data[2] = 0x03U;
txMessage.data[3] = 0x04U;
txMessage.data[4] = 0x05U;
txMessage.data[5] = 0x06U;
txMessage.data[6] = 0x07U;
txMessage.data[7] = 0x08U;
初始化LIN消息后,即可发送LIN消息:
LIN_SendMsg(LIN0, &txMessage);
接收LIN消息
接收LIN消息时,需要先配置LIN消息缓冲区,包括ID、DLC等,下面给出配置LIN消息的代码:
lin_msg_t rxMessage;
rxMessage.id = 0x32U;
rxMessage.dlc = 8U;
配置LIN消息后,即可接收LIN消息:
LIN_ReceiveMsg(LIN0, &rxMessage);
注意事项
KEA系列的LIN模块不支持自动重传机制,如果需要使用自动重传机制,则需要在代码中手动实现。
结语
本篇博文主要介绍了如何使用S32DS开发KEA系列的LIN功能,包括配置LIN模块、发送LIN消息和接收LIN消息等。希望对您有所帮助。