【瑞萨RA_FSP】GPT—— 通用PWM定时器

news2024/11/16 21:28:32

文章目录

  • 一、PWM简介
  • 二、GPT简介
  • 三、GPT的框图分析
    • 1. 计数器
    • 2. 周期设置和周期设置缓冲寄存器
    • 3. 时钟输入
    • 4. 控制寄存器
    • 5. 比较器和比较/输入捕获寄存器
    • 6. 中断请求信号
    • 7. IO输入输出引脚
    • 8. ELC事件输入
    • 9. 输出相位切换


一、PWM简介

PWM 的全称是脉冲宽度调制(Pulse Width Modulation),简称脉宽调制,通俗的讲就是调节脉冲的宽度。 其原理是通过将有效的电信号分散成离散形式从而来降低电信号所传递的平均功率, 根据面积等效法则,可以通过对改变脉冲的时间宽度,来等效地获得所需要合成的相应幅值和频率的波形。 PWM 有着非常广泛的应用,比如直流电机控制、开关电源、逆变器等等。

PWM 波形的基本信息如下图所示。
在这里插入图片描述

  • 脉冲周期(T):单位是时间,如纳秒(ns)、微秒(us)、毫秒(ms)等。

  • 脉冲频率(f):单位是赫兹(Hz)、千赫兹(KHz)等。频率与脉冲周期成倒数关系,f=1/T。

  • 脉冲宽度(W):简称“脉宽”,一般指脉冲中高电平持续的时间。单位是时间。

  • 占空比(D):脉宽除以脉冲周期的值。

以上各信息之间的关系满足下列公式:
在这里插入图片描述

二、GPT简介

通用 PWM 定时器(GPT,General PWM Timer)是 RA MCU 的其中一种 32/16 位的定时器外设。 在 GPT 当中,可分为 GPT32 和 GPT16,它们最主要的区别是计数器的不同。 GPT32 是 32 位的定时器,包含的计数器是 32 位的,所能计数的范围为:0 ~ 0xFFFF_FFFF; 而 GPT16 是 16 位的定时器,包含的计数器是 16 位的,所能计数的范围为:0 ~ 0xFFFF。

定时器(Timer)最基本的功能就是定时,比如定时发送串口数据、定时采集AD数据、定时触发中断处理其它事务等等。 如果把定时器与 GPIO 引脚结合起来使用的话可以实现更加丰富的功能, 可以对输入信号进行计数,可以测量输入信号的脉冲宽度,可以输出单个脉冲、PWM 等波形,等等。 通过定时器生成 PWM 波形信号来控制电机状态是工业控制的普遍方法,这方面知识非常值得深入了解。

GPT 模块可用于计数事件、测量外部输入信号、作为通用计时器并产生周期性中断、以及输出周期性或 PWM 信号到 GTIOC 引脚。 GPT 也可用于输出单个脉冲,但是注意这是通过软件来实现的,GPT 硬件本身不支持输出单个脉冲(One-Shot)功能。 当使用单个脉冲(One-Shot)模式时,必须要开启中断,计时器需要在脉冲周期结束后在 ISR 中断服务函数中被停止。

RA MCU 的不同型号之间可能拥有不同数量的 GPT 定时器, 而野火启明6M5开发板板载的 RA6M5 芯片拥有共 10 个GPT定时器(即10个通道), 其中包括 4 个32位GPT定时器(GPT32n (n=0~3))和 6 个16位GPT定时器(GPT16m (m=4~9))。

GPT 定时器的详细功能参数如下表所示:在这里插入图片描述
GPT 的 I/O 引脚及其功能用途如下表所示:
在这里插入图片描述

三、GPT的框图分析

如下图所示,为 RA6M5 芯片 GPT 外设模块的结构框图:
在这里插入图片描述

1. 计数器

见图中标注 ① 处。

GTCNT 是 GPT 定时器模块内部的计数器,实际上,计数器是实现定时器外设的各种功能的基础。 因此,了解计数器的规格和功能非常重要。

对于 RA6M5,共有 10 个 GPT 定时器(GPT0~9),而 GPT 又分为 GPT32 和 GPT16。 GPT32 有4个(GPT0~3),计数器为 32bit,在上图中用 GPT320~GPT323 来表示; 而 GPT16 有6个(GPT4~9),计数器为 16bit,在上图中用 GPT164~GPT169 来表示。

GPT 的计数器支持递增计数,递减计数和递增/递减计数(即递增与递减计数轮流进行)。

2. 周期设置和周期设置缓冲寄存器

见图中标注 ② 处。

GTPR 周期设置寄存器是一个可读写的寄存器,用户可通过该寄存器设置计数器 GTCNT 的最大计数值,计数超过该值就会溢出,因此该值决定了计数器的计数周期。 GTPR 的有效大小与 GTCNT(16位或32位)相同。如果 GTPR 的有效大小为16位,则用户读取其高16位始终为0,并且其高16位的写入作会被忽略。

GTPBR 周期设置缓冲寄存器同样也是一个可读写的寄存器,用作 GTPR 的缓冲寄存器,GPT 计数器每计数溢出一次,就会将 GTPBR 的值写入 GTPR。 GTPBR 的有效大小也与 GTCNT(16位或32位)相同。如果 GTPBR 的有效大小为16位,则用户读取其高16位始终为0,并且其高16位的写入作会被忽略。

3. 时钟输入

见图中标注 ③ 处。

GPT 定时器的时钟输入可以选择内部的 PCLKD 分频后输入或者选择通过 GTETRGn 引脚输入外部时钟。 这两类中只能选择一个,若选择外部时钟输入则定时器不能对内部时钟输入进行计数。

PCLKD / n(n = 1/2/4/8/16/32/64/256/1024)

GTETRGA, GTETRGB, GTETRGC, GTETRGD(通过 POEG)

Tips: PCLKD / 1 表示的是不分频。

4. 控制寄存器

见图中标注 ④ 处。

这部分的寄存器较多、也较复杂,它们都属于用于控制定时器功能的寄存器。 而这里主要关注的是定时器的实际功能,对其过于深入的实现细节不做过多研究,因此这里不对这些寄存器进行详细讲解。

5. 比较器和比较/输入捕获寄存器

见图中标注 ⑤ 处。

这部分包含一个比较器和6个 GTCCRx 寄存器(x = A,B,C,D,E,F)。 这6个 GTCCRx 寄存器的功能并不完全相同:

GTCCRA 和 GTCCRB 是用于输出比较和输入捕捉的寄存器。

GTCCRC 和 GTCCRE 可用作比较匹配寄存器,也可以分别作为 GTCCRA 和 GTCCRB 的缓冲寄存器 (构成 GTCCRA 和 GTCCRB 的单缓冲寄存器)。

GTCCRD 和 GTCCRF 可用作比较匹配寄存器,也可以分别作为 GTCCRC 和 GTCCRE 的缓冲寄存器 (构成 GTCCRA 和 GTCCRB 的双缓冲寄存器:即 GTCCRC 和 GTCCRD 作为 GTCCRA 的双缓冲,GTCCRE 和 GTCCRF 作为 GTCCRB 的双缓冲)。

比如,在普通的 PWM 输出模式下,比较器将计数器 GTCNT 与 GTCCRA 和 GTCCRB 进行比较,若匹配(比较结果相等), 则根据 GTIOR(General PWM Timer I/O Control Register)寄存器的 GTIOA[4:0] 和 GTIOB[4:0] 的配置来切换 GTIOCA 和 GTIOCB 的输出电平。 可以将 GTIOCA 和 GTIOCB 切换为低电平、高电平、或者反转电平。

6. 中断请求信号

见图中标注 ⑥ 处。

图中显示的是 GPT0 的中断请求信号,中断请求信号用于产生中断、或者通过 ELC 链接到其他模块。

GPT 提供以下中断源:

  • GTCCR 输入捕捉/比较匹配

  • GTCNT 计数器上溢(超出 GTPR 设置的值)/下溢

  • 周期计数功能完成

每个中断源都有自己的状态标志。 当一个中断源信号产生时,相关的状态标志会被硬件自动设置为 1。 状态标志可以通过写入 0 来清除。需要注意的是,如果标志设置和标志清除同时发生,标志清除优先于标志设置。

7. IO输入输出引脚

见图中标注 ⑦ 处。

GTIOCnA 和 GTIOCnB 是 GPT 的 IO 输入输出引脚,用于信号输出和输入捕获。 它们还配备了噪声滤波器(Noise Filter),噪声滤波器以采样时钟对输入信号进行采样,并去除长度小于3个采样周期的脉冲。 用户可设置是否启用噪声滤波器。

噪声滤波器功能的时序图如下所示:
在这里插入图片描述

8. ELC事件输入

见图中标注 ⑧ 处。

GPT 可以执行以下操作以响应最多 8 个来自 ELC 的事件信号输入:

  • 开始计数,停止计数,清除计数

  • 递增计数,递减计数

  • 进行一次输入捕获

9. 输出相位切换

见图中标注 ⑨ 处。

输出相位切换(GPT_OPS)功能通过输出相位切换控制寄存器(OPSCR)进行控制,用于实现轻松控制无刷直流电机运行的功能。 图中的三相 PWM 波形生成器接收来自比较器的 GPT320.GTIOC0A 的 PWM 信号输入后,输出三相 PWM 用于驱动直流无刷电机。

需要注意的是:GPT_OPS 功能在 RA6M5 中只有一个,并不是每个 GPT 定时器都对应有一个,也就是说通过该功能只能轻松控制一个直流无刷电机。

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

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

相关文章

chatgpt赋能python:如何安装PyQt5

如何安装PyQt5 Python是现在最受欢迎的编程语言之一。Python与它的第三方库使得开发者能够在不同的领域中编写高质量的代码。因此,Python已经成为了许多开发者的首选之一,而PyQt5则是Python中使用最多的图形界面开发工具之一。在这篇文章中,…

chatgpt赋能python:Python环境安装必知必会

Python环境安装必知必会 Python作为一种高效、易用、广受欢迎的程序语言,在数据分析、人工智能、Web开发等领域都得到了广泛应用。如果您也想学习Python,或者需要开发Python程序,那么必须首先安装Python环境。本文将为您介绍Python环境安装的…

分享!!前端也需要了解的一些技术!!

目录 1、临时路径共享使用 2、关闭指定端口号的进程 1、临时路径共享使用 场景:自己开发中的pc、移动端、app等,由于还在开发中,没有上线,此时有的人需要暂时使用它么,那么就可以创建一个临时路径,共享给…

Anaconda jupyter lab安装及初使用

之前写了一篇: Anaconda、Jupyter的安装部署及使用问题总结 最近又用python比较多,升级了一下本机的anaconda版本,并使用jupyter lab来编写python脚本,本文记录一下升级、使用过程。 安装anaconda 下载安装包 Anaconda3-2023.03…

【Biomechanics】1 Biomechanics as an Interdiscipline

无回到目录第2章 文章目录 1.0 Introduction1.1 Measurement, Description, Analysis, and Assessment1.1.1 Measurement, Description, and Monitoring1.1.2 Analysis1.1.3 Assessment and Interpretation 1.2 Biomechanics and its Relationship with Physiology and Anatomy…

基于flask的web应用开发——搭建一个云盘

目录 0. 前言1. 实现开放下载链接2. 稍加改装3. 效果演示4. 云服务器项目部署 0. 前言 本节利用 flask 开放下载链接 操作系统:Windows10 家庭版 开发环境:Pycahrm Comunity 2022.3 Python解释器版本:Python3.8 第三方库:fla…

Opencv的getRotationMatrix2D函数底层解析

源码 cv::Mat cv::getRotationMatrix2D( Point2f center, double angle, double scale ) {angle * CV_PI/180;double alpha cos(angle)*scale;double beta sin(angle)*scale;Mat M(2, 3, CV_64F);double* m M.ptr<double>();m[0] alpha;m[1] beta;m[2] (1-alpha)*…

chatgpt赋能python:Python怎么装pip库

Python怎么装pip库 Python是一种高级编程语言&#xff0c;由于其简单易学和功能强大&#xff0c;成为众多开发者的选择。但是在开发过程中&#xff0c;需要使用到各种库。pip是Python的软件包管理器&#xff0c;通过pip工具&#xff0c;我们可以轻松地安装和管理Python库。 什…

iOS 单元测试之常用框架 OCMock 详解 | 京东云技术团队

一、单元测试 1.1 单元测试的必要性 测试驱动开发并不是一个很新鲜的概念了。在日常开发中&#xff0c;很多时候需要测试&#xff0c;但是这种输出是必须在点击一系列按钮之后才能在屏幕上显示出来的东西。测试的时候&#xff0c;往往是用模拟器一次一次的从头开始启动 app&a…

chatgpt赋能python:Python怎么让输出不换行

Python怎么让输出不换行 Python是一款具有高度灵活性和扩展性的语言&#xff0c;代码简洁易懂&#xff0c;易上手。在Python编程中&#xff0c;输出的相关操作也是非常常见的。在某些情况下&#xff0c;我们需要让输出内容在同一行显示&#xff0c;这时我们需要使用Python提供…

【Docker】技术架构演进

基本概念 应用&#xff08;Application&#xff09; / 系统&#xff08;System&#xff09; ​ 为了完成一整套服务的一个程序或者一组相互配合的程序群。生活例子类比&#xff1a;为了完成一项任务&#xff0c;而搭建的由一个人或者一群相互配的人组成的团队。 模块&#xff0…

C++【STL】之list的使用

文章目录&#xff1a; list介绍list使用1. 默认成员函数1.1 构造函数1.2 拷贝构造1.3 赋值重载1.4 析构函数 2. 迭代器3. 容量操作4. 数据访问5. 数据修改5.1 插入删除5.2 交换调整清理 6. 其他操作6.1 链表拼接6.2 链表移除6.3 排序6.4 链表逆置 list介绍 list是可以在常数范围…

STM32软件定时器

目录 什么是定时器&#xff1f; 软件定时器优缺点 软件定时器原理 软件定时器相关配置 单次定时器和周期定时器 软件定时器相关 API 函数 1. 创建软件定时器 2. 开启软件定时器 3. 停止软件定时器 4. 复位软件定时器 5. 更改软件定时器定时时间 实操 cubeMX配置 …

chatgpt赋能python:Python设置画布背景颜色

Python设置画布背景颜色 Python语言是一种广泛应用于科学计算、数据处理和数据可视化的高级脚本语言。它之所以如此流行&#xff0c;主要是因为它简单易学&#xff0c;并且具有很强的灵活性。在Python中&#xff0c;我们可以使用各种库来创建图形化界面、游戏和数据可视化应用…

C高级 day35

1、ubuntu的网络配置 1、查看网络是否连接 ping baidu.com 2、保证虚拟机有桥接网络 虚拟机---->设置---->网络适配器------>选择桥接或者是Vmnet0 给虚拟机添加桥接网络&#xff0c;如果没有vmnet0&#xff0c;添加网络 3、配置虚拟机的桥接网络 右上角网络图标-----…

RunCat 自定义动图

下载资源 下载资源 Runners Store 在商店购买 Self-Made Runner 设置 添加多张图片 下载 zhiyin_basketball 图片 zhiyin_basketball 下载 更新版本 设置图片 Format: PNGHeight: 36pxWidth: 10~100px 调整图片大小 使用convert命令查看图片宽和高 convert 0.png -print …

MFC视类和框架类学习1

VC6新建一个单文档工程&#xff0c;名称为test&#xff1b;将会生成如下的类&#xff1b; 这里说的框架类是指CMainFrm类&#xff1b; 视类是指CxxxxView类&#xff1b; 生成的视类公共继承自CView类&#xff0c; class CTestView : public CView { ...... CView类继承自CWnd…

安装ps出现计算机丢失d3dcompiler_47.dll缺失的解决方法

本教程操作系统&#xff1a;Windows系统、 d3dcompiler_47.dll是电脑文件中的dll文件&#xff08;动态链接库文件&#xff09;。如果计算机中丢失了某个dll文件&#xff0c;可能会导致某些软件和游戏等程序无法正常启动运行&#xff0c;并且导致电脑系统弹窗报错。 在我们打开…

局域网视频会议系统相较于SaaS会议系统的优势

局域网视频会议系统和SaaS会议系统都是远程协作和视频通讯的应用技术&#xff0c;各自有各自的特点和功能。 局域网视频会议系统相较于SaaS会议系统可以具备以下一些优势&#xff1a; 1. 安全性更高&#xff1a;局域网视频会议系统在企业内部进入&#xff0c;采用专属的内外网安…

Win10电脑C盘爆红了可以删除哪些文件?

Win10电脑C盘爆红了可以删除哪些文件&#xff1f;Win10电脑中用户发现C盘爆红了&#xff0c;想通过删除C盘内的文件来解决C盘爆红的问题&#xff0c;那么哪些文件可以删除呢&#xff0c;用户可以打开Temp、Help、Prefectch等文件夹进行删除&#xff0c;以下就是Win10电脑C盘爆红…