本文摘要:本文章介绍如何使用NXP官方软件S32KDS中的LinStack组件
开发平台:S32 Design Studio for ARM Version 2.2
SDK版本:S32_SDK_S32K1xx_RTM_3.0.0
使用芯片:S32K148
组件例程免费下载方式在文末!!!
1. 双击PinSettings先配置好要使用的LIN的串口引脚
2. 双击Components将LinStack组件添加进工程
3. 双击LinStack组件打开如下图的LinStack配置页面
4. 复制LDF文件将其粘贴到Source文件夹下
5. 在LinStack配置页面里点击...选择LDF文件
6. 点击Node name下拉列表重新选择节点名称
7. 打开LIN配置页面可以配置波特率和主从机
8. 配置好参数后点击如下图按钮或选项即可将配置数据更新至代码
9. 在代码中加入LIN初始化的代码即可使用LIN
// 系统参数 不修改
#define TIMER_COMPARE_VAL 2000
#define TIMER_TICKS_1US 4U
// 时基计数
uint16_t timerOverflowInterruptCount = 0;
// LIN初始化
void LIN0_Init(void)
{
l_sys_init();
l_ifc_init(LI0);
// 做从机时注释l_sch_set()
l_sch_set(LI0, LI0_HiFire_V2, 0); // LI0_LDFNAME
}
// LIN时基回调函数
uint32_t lin1TimerGetTimeIntervalCallback0(uint32_t *ns)
{
static uint32_t previousCountValue = 0;
uint32_t counterValue;
counterValue = LPTMR_DRV_GetCounterValueByCount(INST_LPTMR1);
*ns = ((uint32_t)(counterValue + timerOverflowInterruptCount * TIMER_COMPARE_VAL - previousCountValue)) * 1000 / TIMER_TICKS_1US;
timerOverflowInterruptCount = 0;
previousCountValue = counterValue;
return 0;
}
// 下面代码加入到0.5ms定时器中断函数中
/******************************LIN******************************/
static interruptCount = 0;
lin_lld_timeout_service(LI0);
// 给LIN一个5ms的心跳
if(++interruptCount >= 10)
{
l_sch_tick(LI0);
interruptCount = 0;
}
timerOverflowInterruptCount++;
LPTMR_DRV_ClearCompareFlag(INST_LPTMR1);
/***************************************************************/
10. 备注(命名格式必须正确否则错误;时基回调函数名在第7步中有写)
11. lin的所有操作函数在如下图路径下,可直接调用lin读写等函数
12. 使用多条LIN的在linstack组件配置页面进行如下图操作
13. 新增加的LIN不会自动分配LPUART,需要进入到LIN组件下自己配置,如下图操作
组件例程下载地址:
https://download.csdn.net/download/m0_50669075/85039436
S32K148更多例程和源码以及最新内容下载地址:
END