【S32K学习笔记】SIUL2


前言

今天花时间看了一下,SIUL2模块的相关内容,并参照文档,以及例程作了一些小记录,知道该如何使用这个外设,包括引脚的配置,中断配置,以及常用函数的使用等,但对其中的一些细节还需要跟深入的学习和了解。

一、SIUL2是什么?

系统集成单元:System Integration Unit Lite2 (SIUL2) 提供外部设备引脚上的功能和电气特性的控制和可配置性。
在这里插入图片描述
通过其功能框图可以看出其实就是一个用来管理引脚功能的单元,包括中断配置,DMA,端口复用等。

在这里插入图片描述
上表中展示了S32K3XX系列的引脚功能

外部中断实现概述:
在这里插入图片描述

芯片上的REQ输入引脚是中断或DMA请求的源。芯片为SIUL2提供了四种可能的中断向量。32个中断请求源映射到向量和通道如下:
在这里插入图片描述

二、GPIO使用步骤

1.配置参数

将PTB18配置成GPIO模式且为输出管脚(LED)
在这里插入图片描述
在这里插入图片描述
引脚参数选用默认即可,需要注意引脚的初始状态!

2.常用API

**Siul2_Port API**
Siul2_Port_Ip_PortStatusType Siul2_Port_Ip_Init(uint32 pinCount,
				const Siul2_Port_Ip_PinSettingsConfig config[])
用S32DS配置工具生成的给定结构初始化引脚。

void Siul2_Port_Ip_SetPullSel(Siul2_Port_Ip_PortType * const base,
                              uint16 pin,
                              Siul2_Port_Ip_PortPullConfig pullConfig)
启用给定引脚的上拉/下拉设置。

**Siul2_Dio API**
void Siul2_Dio_Ip_WritePin(Siul2_Dio_Ip_GpioType * const   base, 
    						Siul2_Dio_Ip_PinsChannelType   pin,  
    						Siul2_Dio_Ip_PinsLevelType     value)
向指定的引脚写入高低电平。
void Siul2_Dio_Ip_TogglePins(Siul2_Dio_Ip_GpioType * const base,
							  Siul2_Dio_Ip_PinsChannelType pins )
翻转指定引脚电平。   

2.Demo

在这里插入图片描述
通过延时实现LED闪烁。

三、外部中断配置

1、引脚配置
将引脚配置为外部输入中断,可以看出其中断通道为 20
在这里插入图片描述
2、中断配置
关于中断配置有两种方式,其一是使用Siul2_Icu,另一种是使用通用的中断控制器IntCtrl_Ip_1,选择其中一种方式即可。
使用Siul2_Icu配置:
在这里插入图片描述
其中我们需要关心的就是,触发方式,工作模式,以及中断服务函数。
在这里插入图片描述启用这个IRQ通道中断

在这里插入图片描述
注意的是通道号需要与对应起来,就可以了。

使用IntCtrl_Ip_1配置:
1、添加一个Interrupt Controller
在这里插入图片描述
使能对应的中断向量,与前面的分组表有关,中断引脚使用的是IRQ_20所以在此使能SIUL_2_IRQn。
在这里插入图片描述
然后需要给其分配中断服务函数入口标识。
在这里插入图片描述
在这里插入图片描述
后面的回调函的名字需要与对应外设的peripheral_Ip_Irq.c或者peripheral_Ip.c中的中断名字一致。比如GPIO的就要选择Siul2_Icu_Ip_Irq.c文件中的SIUL2_EXT_IRQ_16_23_ISR填入。

三、Demo

/* Initialize clock */
    Clock_Ip_InitClock(&Mcu_aClockConfigPB[0]);

    Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);

    /* Install Siul2 ISR */
    IntCtrl_Ip_InstallHandler(SIUL_2_IRQn, &SIUL2_EXT_IRQ_16_23_ISR, NULL_PTR);
    IntCtrl_Ip_EnableIrq(SIUL_2_IRQn);

    /* Initialize the Icu driver */
    Siul2_Icu_Ip_Init(0,&Siul2_Icu_Ip_0_Config_PB_VS_0);
    UserCountIrqCH0 = 0U;
    BlinkCount = 0U;
    
    Siul2_Icu_Ip_EnableInterrupt(0,20);
    Siul2_Icu_Ip_EnableNotification(0,20);


/*中断服务函数*/
void User_EdgeDetect0(void)
{
    /* increment IRQ counter */
    UserCountIrqCH0++;
    if(UserCountIrqCH0 % 2 == 0)
    {
        Siul2_Dio_Ip_WritePin(Digital_Output_LED_BLUE_PORT, Digital_Output_LED_BLUE_PIN, 1);
    }
    else
    {
        Siul2_Dio_Ip_WritePin(Digital_Output_LED_BLUE_PORT, Digital_Output_LED_BLUE_PIN, 0);
    }
}

四、常用中断API

/*用于注册一个处理函数(pfNewHandler)。*/
void IntCtrl_Ip_InstallHandler( IRQn_Type eIrqNumber,
                               const IntCtrl_Ip_IrqHandlerType pfNewHandler,
                               IntCtrl_Ip_IrqHandlerType* const pfOldHandler

/* 使能相应的中断(eIrqNumber) */
void IntCtrl_Ip_EnableIrq(IRQn_Type  eIrqNumber);

/* Icu模块初始化 */
Siul2_Icu_Ip_StatusType Siul2_Icu_Ip_Init(uint8 instance, const Siul2_Icu_Ip_ConfigType* userConfig)

/*Icu模块中断使能*/
void Siul2_Icu_Ip_EnableInterrupt(uint8 instance, uint8 hwChannel)

/*Icu模块user callback function使能。User callback function is registered in function Siul2_Icu_Ip_Init()*/
void Siul2_Icu_Ip_EnableNotification(uint8 instance, uint8 hwChannel)

/* 设置通道的检测状态,上升沿、下降沿、双边沿 */
Void Siul2_Icu_Ip_SetActivationCondition(uint8 instance, uint8 hwChannel, Siul2_Icu_Ip_EdgeType edge)

部分内容来源于网络,侵权请联系删除!

  • 7
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
很高兴你对 S32K14X 感兴趣!S32K14X 是 NXP 公司推出的一款 ARM Cortex-M4 内核的汽车级微控制器,主要用于汽车电子系统的应用。下面是一些 S32K14X 学习笔记的内容: 1. 架构概述:S32K14X 基于 ARM Cortex-M4 内核,具有高性能和低功耗的特性。它包含了丰富的外设模块,例如模数转换器(ADC)、定时器(TIM)、通用串行接口(UART、SPI、I2C)等,适用于多种汽车电子应用场景。 2. 开发环境搭建:S32K14X 的开发可以使用 NXP 官方提供的 S32 Design Studio 或者其他支持 ARM Cortex-M 开发的集成开发环境(IDE),如 Keil MDK、IAR Embedded Workbench 等。 3. 程序编写:使用 C/C++ 语言进行程序编写,可以利用官方提供的开发工具链和库函数进行开发。需要了解 S32K14X 的寄存器映射和外设控制寄存器的使用方法,以实现相应功能。 4. 外设配置:根据具体应用需求,配置 S32K14X 的外设模块,如 ADC 的通道选择、定时器的时钟设置等。可以参考官方提供的开发文档和示例代码进行配置和开发。 5. 调试与测试:在开发过程中,可以使用 JTAG/SWD 调试器连接 S32K14X 板卡,进行程序的下载、调试和测试。可以通过断点、观察表等功能,帮助定位和解决问题。 6. 应用案例:S32K14X 可以应用于车身电子、底盘控制、驾驶辅助等多个汽车电子系统。学习过程中可以关注相关应用案例,了解实际场景下的应用方法和技巧。 以上是 S32K14X 学习笔记的一些内容,希望对你有所帮助!如果你有具体的问题或者需要更多资料,可以进一步向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值