S32K312 RTD 4.0.0 版本 OCU 例程配置流程说明

news2024/9/29 10:28:25

一、前言

由于 RTD 4.0.0 版本并没有 S32K312 相关例程,本文基于已有的 S32K344 OCU 例程,新建 S32K312 工程,讲解 OCU 例程的相关配置流程。

二、基本概念

  1. OCU(Output Compare Unit – 输出比较单元)本质上是一个计数器,计数器逐一累加直到达到预设值,达到预设值后计数器会清零,重新开始累加,循环往复。
  2. OCU 配置需要一个绑定到一个可用硬件通道的逻辑通道,当比较匹配发生(即计数器达到预设值)时,会触发一个硬件中断和一个输出引脚的状态改变(电平翻转)。
  3. OCU 逻辑通道包含计数器预设值的定义,最大计数器值(一般为 65535),通知回调到用户定义的函数、硬件通道指定引脚的行为和预分频器值(可选第二个预分频器)的设置,如下图 1 所示:

图 1 OCU 逻辑通道配置

三、OCU 配置流程

  1. OCU 配置需要一个绑定到一个可用硬件通道的逻辑通道,当比较匹配发生(即计数器达到预设值)时,会触发一个硬件中断和一个输出引脚的状态改变(电平翻转),这里使能 PTB13 为 OCU 的输出引脚(配置为 eMIOS、输出),使能 PTA29 为输出 GPIO(控制红灯亮灭)。

图 2 PTA29 & PTB13 管脚配置

  1. 添加如图 3 所示外设模块,并配置 Emios_Ocu、Emios_Mcu_Ip 及 IntCtrl_Ip 模块。

图 3 具体驱动模块

a. Emios_Ocu 模块配置

图 4 使能 OCU API 函数功能

图 5 使能 EMIOS0_CH1 对应 OCU 功能

图 6 设置 OCU 计数方式及计数阈值

图 7 OCU 通知函数及输出引脚状态变化配置

图 8 设置 OCU 关联硬件中断通道及预分频值

b. Emios_Mcl_Ip 模块配置

图 9 使能 EMIOS 通用功能

图 10 设置时钟分频及计数模式

c. IntCtrl_Ip 模块配置:查看图 11,可知 EMIOS0_CH1 对应中断服务函数为 EMIOS0_5_IRQ,具体配置如图 12 所示。
 

图 11 EMIOS 通道对应的中断服务函数

图 12 使能 EMIOS0_CH1 对应中断服务函数

  1. main.c 函数
#include "Emios_Ocu_Ip.h"
#include "Emios_Mcl_Ip.h"
#include "Emios_Mcl_Ip_Irq.h"
#include "Clock_Ip.h"
#include "IntCtrl_Ip.h"
#include "Siul2_Port_Ip.h"
#include "Siul2_Dio_Ip.h"

#define clockConfig &Clock_Ip_aClockConfig[0]
#define EMIOS_0       (0U)
#define CHANNEL_1     (1U)
/* Global flag updated in irq */
static volatile uint8 toggleLed = 0U;

void OcuChannel_0_notification(void);
/**
* @brief    Emios notification periodically called by the configured channel
* @details  Used to blink a led
*/
void OcuChannel_0_notification(void)
{
    static uint16 count = 0U;

    if (++count >= 10U)
    {
        toggleLed = 1U;
        count = 0;
    }
}
/**
* @brief        Main function of the example
* @details      Initialize the used drivers and uses the Ocu
*               and Siul2_Dio drivers to toggle a LED periodically
*/

int main(void)
{
    uint8 stateLed = 0;

    /* Initialize clock */
    Clock_Ip_Init(clockConfig);

    /* Initialize all pins using the Siul2_Port driver */
    Siul2_Port_Ip_Init(NUM_OF_CONFIGURED_PINS_PortContainer_0_BOARD_InitPeripherals, g_pin_mux_InitConfigArr_PortContainer_0_BOARD_InitPeripherals);

    /* Set eMios interrupt */
    IntCtrl_Ip_Init(&IntCtrlConfig_0);
    IntCtrl_Ip_EnableIrq(0U);

    /* Initialize eMios_Mcl for enable global counter bus */
    Emios_Mcl_Ip_Init(EMIOS_0, &Emios_Mcl_Ip_0_Config_BOARD_INITPERIPHERALS);

    /* Initialize eMios_Ocu */
    Emios_Ocu_Ip_Init(&Emios_Ocu_Ip_0_ModuleCfgPB);

    /* Enable eMios_Ocu channel notification */
    Emios_Ocu_Ip_EnableNotification(EMIOS_0,CHANNEL_1);

    /* Start eMios_Ocu Channel */
    Emios_Ocu_Ip_StartChannel(EMIOS_0,CHANNEL_1);

    while (1)
    {
        /* Toggle the LED when the Ocu notification is called */
        if (1U == toggleLed)
        {
            toggleLed = 0;
            Siul2_Dio_Ip_WritePin(LED_RED_PORT, LED_RED_PIN, stateLed);
            stateLed = stateLed ^ 1U;
        }
    }
}
  1. 完成工程的编译和烧录之后,原厂 S32K312 开发板红灯会持续 1s 亮一次,具体如下图所示:

图 13 硬件现象

四、总结

        参照上述【OCU 配置流程】的步骤 1、2、3 完成管脚使能、相关外设模块的添加与配置以及 main.c 源程序的复制与修改,即可完成 OCU 例程配置,感谢您阅读本文!

五、参考文献

[1] RTD_OCU_UM.pdf

[2] S32K3XXRM Rev7.pdf

欢迎登录大大通,阅读原文,浏览更多精彩技术内容吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176422.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【anki】显示 “连接超时,请更换网络后重试” 怎么办

文章目录 前言一、问题描述二、解决方案 前言 在 anki同步 时遇到的问题 一、问题描述 二、解决方案 从电信换为了移动热点,电脑手机都同步成功了

django开发流程2

一,通过视图函数访问html 1.首先导入render from django.shortcuts import render 2.在mysite下面创建一个目录 templates 3.在mysite下方的settings中修改存放模板的路径 二.添加静态文件 1.在mysite下面创建一个目录 (静态文件) :static 2.自定义静态文件路…

第十三届蓝桥杯真题Python c组A.排列字母(持续更新)

博客主页:音符犹如代码系列专栏:蓝桥杯关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 【问题描述】 小蓝要把一个字符串中的字母按其在字母表中的顺序排列。 例如&a…

AAMAS 24 | 基于深度强化学习的多智能体和自适应框架用于动态组合风险管理

AAMAS 24 | 基于深度强化学习的多智能体和自适应框架用于动态组合风险管理 原创 QuantML QuantML 2024年09月09日 18:23 上海 J.P.Morgan的python教程 Content 本文提出了一个名为MASA的多智能体和自适应框架,利用深度强化学习技术,通过两个合作的智能…

测试数据库交换功能的免费方案

如果想测试数据库交换功能,有几个免费的解决方案可以考虑: 1. 使用社区版或开发者版: 一些商业数据库提供了免费版本,适用于开发和测试使用: - Oracle:Oracle Database提供免费的Oracle Database Exp…

Java项目实战II基于Java+Spring Boot+MySQL的新闻稿件管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 前在信息爆…

【ArcGIS Pro实操第三期】多模式道路网构建(Multi-model road network construction)原理及实操案例

ArcGIS Pro实操第三期:多模式道路网构建原理及实操案例 1 概述1.1 原理 2 GIS实操2.1 新建文件并导入数据2.2 创建网络数据集2.3 设置连接策略(Setting up connectivity policies)2.4 添加成本(Adding cost attributes&#xff09…

开源AI智能名片链动2+1模式S2B2C商城小程序的内容营销易读性策略

摘要:在数字化时代,内容营销已成为企业吸引用户、促进转化的关键手段。然而,面对“懒”这一普遍的人性弱点,如何使内容更加易读、减少用户思考负担,成为提升营销效果的重要议题。本文基于“别让我思考”的可用性设计原…

TypeScript 设计模式之【模板方法模式】

文章目录 模板方法模式:制作美味咖啡的标准流程模板方法模式的奥秘模板方法模式有什么利与弊?如何使用模板方法模式来优化你的系统代码实现案例模板方法模式的主要优点模板方法模式的主要缺点模板方法模式的适用场景总结 模板方法模式:制作美味咖啡的标…

LeetCode讲解篇之15. 三数之和

文章目录 题目描述题解思路题解代码 题目描述 题解思路 这道题如果我们直接使用三层循环暴力搜索,时间复杂度是O(n3),大概率会超时 那还有更优解吗,答案是绝对的,查询搜索想要优化,就要思考如何进行排除法加速搜索过…

【2023工业3D异常检测文献】基于混合融合的多模态工业异常检测方法Multi-3D-Memory (M3DM)

Multimodal Industrial Anomaly Detection via Hybrid Fusion 1、Background 随着3D传感器的发展,最近发布了具有2D图像和3D点云数据的MVTec-3D AD数据集,促进了多模态工业异常检测的研究。 无监督异常检测的核心思想是找出正常表示与异常之间的差异。…

爵士编曲:walking bass写法

写法 经常会出现在爵士、布鲁斯或者相关的衍生以及融合风格。 特征 1.基础形态是一拍一下顺着和弦音上行或者下行 2.和弦连接处可尝试凑级进” 3.注意和弦起始的第一拍要落在根音 4.音符可以八度跳进 5.加入半音经过音 6.加入Swing律动 还可以在一拍一下的基础上 7.加入音阶进一…

新160个crackme - 068-figugegl.3

运行分析 需破解Name和Serial有指定Name或Serial长度 PE分析 LCC-Win32编写的C语言程序,32位,无壳 静态分析&动态调试 ida找到可以字符串,双击进入 程序比较简单,直接静态分析,注释如上,逻辑如下&#…

FPGA实现PCIE视频采集转HDMI输出,基于XDMA中断架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存Native视频时序生成RGB转HDMI输出模块Windows版本XDMA驱动安装Linux版本XDMA驱动安装工程源…

【Python】Mininet:网络虚拟化的利器

在当今网络技术迅速发展的背景下,网络虚拟化技术得到了广泛应用。Mininet 是一个轻量级的网络虚拟化工具,它使得用户能够在一台物理主机上创建一个完整的网络环境。这对于网络研究、教学、原型设计等场景都具有重要意义。Mininet 提供了简单的命令行接口…

【Python】bilibili实现批量发送弹幕功能

首先在直播间拿到发送弹幕的请求信息: 填写这里的信息: 在这里: 输入房间号,进行爆破: 效果如下: 代码如下: import random import time import requests from tkinter import *# 弹幕…

MySQL --事务

文章目录 1.什么是事务1.1为什么会出现事务1.2 事务的版本支持1.3 事务提交方式1.4事务常见操作方式1.4.1正常演示 - 证明事务的开始与回滚1.4.2非正常演示1 - 证明未commit,客户端崩溃,MySQL自动会回滚(隔离级别设置为读未提交)1…

grafana加载缓慢解决方案

背景 目前随着数据和图表的逐渐增多,Grafana 页面加载速度明显变慢,严重影响了用户体验,几次都有骂娘的冲动.,因此我们需要对 Grafana 进行优化,以提升加载性能。 对于速度优化,我们可以从以下方面进行入…

小程序-使用npm包

小程序对 npm 的支持与限制 目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用 npm 包有如下 3 个限制: 不支持依赖于 Node.js 内置库的包不支持依赖于浏览器内置对象的包不支持依赖…

2015年国赛高教杯数学建模B题互联网+时代的出租车资源配置解题全过程文档及程序

2015年国赛高教杯数学建模 B题 互联网时代的出租车资源配置 出租车是市民出行的重要交通工具之一,“打车难”是人们关注的一个社会热点问题。随着“互联网”时代的到来,有多家公司依托移动互联网建立了打车软件服务平台,实现了乘客与出租车司…