ICETEK-DM6437-AICOM——CPU定时器及直流电机控制中断控制

一、设计目的:

1.1 CPU定时器程序设计;
1.2 2直流电机程序设计;
1.3 外中断。

二、设计原理:

2.1 定时器的控制:

在DM6437(是一种数字信号处理器,DSP)上使用其内部定时器和中断来控制LED闪烁频率的一个示例。DM6437的DSP内部包含三个定时器,其中两个(TIMER0和TIMER1)可以配置为64位或作为双32位定时器;第三个(TIMER2)一般用作看门狗。下面是对程序的主要配置和步骤的总结:

定时器配置:
使用TIMER0的32位模式。
TIM12被用作配置定时器计数值。
PRD12用来存储定时器的输入时钟记数周期值。
TGCR用于定时器的全局配置,本例程中配置为双32位unchained模式。
TCR(定时器控制寄存器)被设置为连续工作模式。

中断配置:
关闭全局中断控制,将GIE设置为0。
清除IER中的中断使能。
向ICR写1来清除IFR中的标志位。
设置INT段地址。
向EVTCLRn写1来清除EVTFLAGn中的标志位。
屏蔽不需要的中断。
使用INTMUXn将定时器中断映射到中断服务程序上。中断服务程序应与中断向量表中的名称相对应。
使能中断。

程序设计分析:
通过定时器中断来控制GPIO[23]和地址0x44800000最低位的输出,以驱动LED闪烁。
在中断服务程序中,使用了二级延时控制来调整LED的闪烁频率。

展示了如何使用DM6437的资源来实现一个简单的任务:使用定时器产生周期性的中断,并在中断服务程序中执行导致LED变化状态的代码,从而创建闪烁效果。这种类型的程序经常用于嵌入式系统的硬件交互,提供了对硬件直接控制的一个例子。

2.2 直流电机控制:

1. GPIO引脚设置:
在利用DM6437处理器进行程序设计时,需要对GPIO(General-Purpose Input/Output)引脚进行初始化和设置其为输入或输出状态。这一过程涉及以下函数调用:

  • EVMDM6437_GPIO_init(): 用于初始化GPIO引脚。
  • EVMDM6437_GPIO_setDir(): 用来设置GPIO引脚的方向(输入或输出)。

这些函数通常在库文件evmdm6437bsl.lib中定义,让开发者能够在他们的应用程序中轻松地使用GPIO功能。

2. 直流电机控制:
直流电机因其调速方便而被广泛用于各种应用。近年来,随着控制理论和电力电子技术的进步,直流电动机的结构和控制方式经历了重大变化。尤其是PWM(脉宽调制)成为了现代电机控制的主流技术。

PWM调压调速原理:
直流电机的转速( n )可以用以下表达式来描述:

[ n = f(U, I, R, \Phi, K) ]

其中:

  • ( U )是电枢端电压。
  • ( I )是电枢电流。
  • ( R )是电枢电路的总电阻。
  • ( \Phi )是每极磁通量。
  • ( K )是电动机结构参数。

直流电机的转速控制方法主要分为两类:

  • 励磁控制法:通过控制励磁磁通来调整转速。但由于在低速时会受到磁极饱和的限制,在高速时受到换向火花和换向器结构强度的限制,且励磁线圈电感大,动态响应慢,这种方法使用较少。
  • 电枢控制法:通过控制电枢电压来调整转速。这是目前大多数直流电机应用场合采用的控制方法。

在开关驱动方式中,半导体功率器件工作在开关状态,通过PWM调制来控制电动机的电枢电压,从而实现调速。这种方式具有高效率、响应快和控制方便等优点。

总结:
通过设置GPIO引脚与配置直流电机的PWM控制方式来实现其功能。GPIO用于接口控制,而PWM用于调节电机转速,这些技术的结合为各种自动化和控制应用提供了可靠的解决方案。开发者可以根据实际的硬件和应用需求,利用DM6437的处理能力和丰富的接口,设计和实现各种控制策略。
 


上图是利用开关管对直流电动机进行 PWM 调速控制的原理图和输入输出电压波形。
在PWM(脉宽调制)调速方法中,通过改变MOSFET栅极的输入信号,来控制MOSFET的导通和截止,进而改变直流电机电枢绕组两端的电压。该过程中,电机电枢绕组两端的电压平均值 ( U_o ) 可由以下公式计算:

[ U_o = \alpha \times U_s ]

这里,( U_s ) 是供电电压,( \alpha ) 是占空比,定义为导通时间 ( t_1 ) 与周期 ( T ) 的比值,即 ( \alpha = t_1 / T )。占空比的变化范围是 ( 0 \leq \alpha \leq 1 )。

调整占空比 ( \alpha ) 的方法有:

  1. 定宽调频法:在这种方法中,导通时间 ( t_1 ) 保持不变,通过改变截止时间 ( t_2 ) 来改变周期 ( T ) 或频率。由于导通时间固定,这会导致频率的改变。

  2. 调宽调频法:在这种方法中,截止时间 ( t_2 ) 保持不变,通过改变导通时间 ( t_1 ) 来改变周期 ( T ) 或频率。

  3. 定频调宽法:在这种方法中,周期 ( T ) 或频率保持不变,同时调整导通时间 ( t_1 ) 和截止时间 ( t_2 ) 以改变占空比。

由于前两种方法在调整占空比时会改变频率,这可能导致当控制脉冲的频率接近系统的固有频率时引起系统的震荡,因此很少使用。在现代直流电机控制中,通常采用定频调宽法,因为它能够保持频率的恒定,避免因频率变化引起的震荡问题,同时通过调整占空比来改变电动机的速度。

PWM调速是通过精确控制电源信号的“开”和“关”时间来调节电动机的平均电压,以此来达到调速的目的。占空比的改变直接影响电动机的平均供电电压和转速,而保持频率不变可以确保驱动信号的稳定性和电动机平滑运行。
3.ICETEK-CTRF 直流电机模块: 原理图 ICETEK-CTRF 即显示/控制模块上直流电机部分的原理图见下图。
 


在ICETEK-DM6437-AF开发板上,直流电机的转速和转向控制是通过DSP给定的PWM信号和方向信号实现的。这里我们详细解释了这一控制原理:

转速控制: DSP通过GPIO[24]输出的PWM信号连接到P4外扩插座的第26引脚,用以控制直流电机的转速。PWM信号的占空比决定了电机电枢绕组的平均电压,从而调节电机的转速。

转向控制: 转向由DSP通过GPIO[30]输出的高低电平信号控制,该信号连接到P4外扩插座的第29引脚。高电平和低电平分别控制电机的正转和反转。

电路逻辑: 输出信号通过两个与门(Y1、Y2)和一个非门(F1)处理后,控制四个开关管(V1、V2、V3、V4)的导通和截止,从而控制电机的转向。

  1. 正转控制:

    • GPIO[30]输出高电平。
    • 高电平信号分为三路:
      • 一路直接使开关管V4导通。
      • 一路通过非门F1,将与门Y2的输出设为0,因此V3和V2都处于截止状态。
      • 第三路接到与门Y1的输入端,使Y1的输出由PWM信号控制,从而控制V1的导通和截止。
        结果是V1和V4导通,V2和V3截止,电机正转。
  2. 反转控制:

    • GPIO[30]输出低电平。
    • 低电平信号经过非门F1变为高电平,分两路:
      • 一路使V2导通。
      • 另一路输入到与门Y2,与PWM信号结合,控制V3的导通和截止。
    • 与此同时,直接输出的低电平使V1和V4截止。

    结果是V3和V2导通,V1和V4截止,电机反转。

这样的电路逻辑通过简单的逻辑门和GPIO信号实现了对电机的精确控制。PWM信号控制电机的转速,而高低电平信号决定电机的转向。这个设计简洁有效,适用于各种需要电机控制的应用场景。

4.程序编制: 程序中采用定时器中断产生固定频率的 PWM 波,在每个中断中根据当前占空比判断应输 出波形的高低电平。 主程序用轮询方式读入键盘输入,得到转速和方向控制命令。
5.设计程序流程图:

2.3中断:

中断和中断处理是在微处理器或数字信号处理器(DSP)中处理特定事件的一种机制。当外部或内部事件发生时,它会暂时打断当前执行的程序流,以便处理更为紧急的任务。

1. 中断概念:
中断是硬件或软件发出的信号,它告诉DSP有一个紧急事件需要立即处理。在DM6437上,有多达111个GPIO口可以配置为中断源。当中断发生时,DSP会暂停当前执行的任务,并跳转到一个特殊的函数,称为中断服务程序(ISR)来处理这个事件。

2. 中断处理流程:

  • 接收中断请求:来自硬件或软件的中断请求被DSP接收。
  • 应答中断请求:对于可屏蔽中断,处理器会检查是否满足应答条件;不可屏蔽中断则立即得到响应。
  • 准备执行ISR:DSP完成当前的指令,清除流水线中未解码的指令,自动保存关键寄存器的值,然后从用户定义的中断向量表中获取当前中断的服务程序地址。
  • 执行ISR:中断服务程序运行并解决中断请求的原因。执行完毕后,使用中断返回指令恢复之前保存的寄存器状态,从而返回到中断前的程序执行点。

3. ICETEK-CTRF键盘接口:
ICETEK-CTRF模块通过P8接口连接键盘,接收键盘的扫描码。每次键盘按键操作会生成两个扫描码和两次中断信号,并将这些信号发送给DSP的GPIO1。

4. 编写带中断的程序:
将中断处理程序加入到一个现有工程中,需要以下步骤:

  • 编写ISR:用C语言编写一个名为extint14_isr的中断服务程序,该程序以interrupt关键字修饰,无参数和返回值。
  • 构建中断向量表:为DM6437的GPIO中断创建中断向量表,链接具体的ISR到中断源,设置INTMUX寄存器,并使能相应的GPIO中断。
  • 修改链接文件:在链接命令文件中为中断向量表分配专用内存区域,指定.vectors段到这个内存区。
  • 初始化主程序:在主程序中设置中断向量表的位置,使能中断并清除之前的中断标志。

    中断是DSP用来临时停止处理当前任务,转而应对更优先任务的一种机制。这通常涉及到接收和识别中断信号,保存处理器的状态,执行专门为解决该事件而设计的ISR,并在处理完成后恢复原先的任务。键盘接口的中断是一种实际应用,它通过生成信号来提示DSP用户的交互操作。而在程序实现中,需要对软件架构进行特别的设计和配置,以确保中断能正确且有效地被处理。

    三、设计步骤:

点击ICETEK-DM6437-AICOM——CPU定时器及直流电机控制中断控制 - 古月居 (guyuehome.com)可查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JESD204B/C协议学习笔记

JESD204B基础概念 204B包含传输层,链路层,物理层。 应用层是对 JESD204B 进行配置的接口,在标准协议中是不含此层,只是为了便于理解,添加的一个层。 协议层指工程中生成的IP核JESD204B,负责处理输入的用户…

Java网络编程——简单的 API 调用

Get请求 - 无参数 上一章我们学习了网络的基本概念,我们知道 URL 能输入到浏览器地址栏中被打开, 那么能不能在程序中发送请求,获取结果呢? 例如“中国科学技术大学”的网站(https://www.ustc.edu.cn/)&a…

探索设计模式:观察者模式

探索设计模式:观察者模式 🧐观察者模式简介:gem:核心概念:rainbow:观察者模式的优点:truck:实现步骤1. 定义主题接口2. 实现观察者接口3. 具体主题实现4. 具体观察者实现5. 调用 :triangular_flag_on_post:总结 在实际开发过程中,设计模式的作…

【Hot100】LeetCode—124. 二叉树中的最大路径和

1- 思路 使用递归 dfs 实现① 递归思路:每次递归返回值为 , root.valMath.max(left,right) 从 左右孩子中挑选一个大的。② 递归公式:定义 sum,sum root.val left right 2- 实现 ⭐124. 二叉树中的最大路径和——题解思路 cl…

【矩阵对角线求和】求一个3*3矩阵对角线元素之和

求一个3*3矩阵对角线元素之和&#xff0c;使用C语言实现 具体代码&#xff1a; #include<stdio.h>int main(){float a[3][3],sum0;printf("请输入3x3矩阵的元素&#xff08;按行输入&#xff09;&#xff1a;\n");for(int i0;i<3;i){for(int j0;j<3;j)…

Java、PHP、Node 操作 MySQL 数据库常用方法

一、Java 操作 MySQL 数据库 1、Java 连接 MySQL 数据库 1. 使用 JDBC 驱动程序连接 使用这种方式&#xff0c;首先需要导入 MySQL 的 JDBC 驱动程序依赖&#xff0c;然后通过 Class.forName() 方法加载驱动程序类。其创建连接的过程相对直接&#xff0c;只需提供准确的数据库…

Tech Talk: SSD架构与功能模块详解

在之前的系列文章中&#xff0c;我们介绍了固态硬盘的系列知识&#xff0c;包括闪存的介质、原理&#xff0c;以及作为SSD大脑的控制器设计&#xff0c;本文将详细介绍SSD架构以及功能模块。 SSD架构简介 ◎SSD架构示意图 如上图所示&#xff0c;典型的SSD架构包括主机接口、SS…

点亮童梦思考之光,神秘伙伴震撼登场!

本文由 ChatMoney团队出品 介绍说明 咱们来聊聊“十万个为什么”机器人&#xff0c;这对小朋友来说&#xff0c;好处可多了去啦&#xff01; 小朋友们天生好奇&#xff0c;满脑子都是问号。 这个机器人就像个啥都懂的知识达人&#xff0c;不管他们问啥&#xff0c;都能给出答…

JVM知识总结(类加载器)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 类加载器 Bootstrap引导类加载器 引导类加载器也被称为启动类加载…

麦田物语第二十天

系列文章目录 麦田物语第二十天 文章目录 系列文章目录一、构建地图信息系统二、生成地图数据 一、构建地图信息系统 我们上一节课已经做好了鼠标的显示&#xff0c;这节课需要构建地图的一些信息&#xff0c;例如&#xff1a;可挖坑&#xff0c;可丢弃物品等地区。我们点击地…

c语言学习,isdigit()函数分析

1&#xff1a;isdigit() 函数说明&#xff1a; 检查参数c&#xff0c;是否为0到9阿拉伯数字 2&#xff1a;函数原型&#xff1a; int isdigit(int c) 3&#xff1a;函数参数&#xff1a; 参数c&#xff0c;为检测整数 4&#xff1a;返回值&#xff1a; 参数c是阿拉伯码字符&…

【机器学习第8章——集成学习】

机器学习第8章——集成学习 8.集成学习8.1个体与集成弱分类器之间的关系组合时&#xff0c;如何选择学习器怎么组合弱分类器boosting和Bagging 8.2 BoostingAdaBoost算法步骤训练过程 8.3 Bagging与随机森林随机采样(bootstrap)弱学习器结合策略方差与偏差算法流程随机森林 8.4…

中职云计算实训室

一、实训室建设背景 随着信息技术的飞速发展&#xff0c;云计算已成为推动数字化转型、促进经济社会发展的重要力量。《中华人民共和国国民经济和社会发展第十四个五年规划和2035年远景目标纲要》明确提出&#xff0c;要加快数字化发展&#xff0c;建设数字中国。云计算作为数…

NLP——Transfromer 架构详解

Transformer总体架构图 输入部分&#xff1a;源文本嵌入层及其位置编码器、目标文本嵌入层及其位置编码器 编码器部分 由N个编码器层堆叠而成 每个编码器层由两个子层连接结构组成 第一个子层连接结构包括一个多头自注意力子层和规范化层以及一个残差连接 第二个子层连接结构包…

基于Java中的SSM框架实现远程同步课堂系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现远程同步课堂系统演示 远程同步课堂系统设计与实现 摘要&#xff1a;在这样一个网络数据大爆炸的时代&#xff0c;人们获取知识、获取信息的通道非常的多元化&#xff0c;通过网络来实现数据信息的获取成为了现在非常常见的一种方式&#xff0c;而通过…

MindSearch:用于增强网络搜索效率的开源人工智能

Web 信息查找与集成是搜索、检索、提取或集成 Web 资源以满足特定需求的活动&#xff0c;是实际生活中几乎所有领域中每个决策和解决问题的实体都必须执行的操作。 大型语言模型 (LLM) 与搜索引擎的集成重新定义了我们在网络上查找和使用信息的方式。因此&#xff0c;LLM 能够…

leetcode递归(203. 移除链表元素)

前言 经过前期的基础训练以及部分实战练习&#xff0c;粗略掌握了各种题型的解题思路。现阶段开始专项练习。 描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a;…

将元组类型的日期时间转换为字符串格式time.asctime([t])

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 将元组类型的日期时间转换为 字符串格式 time.asctime([t]) [太阳]选择题 根据给定的Python代码&#xff0c;哪个选项是错误的&#xff1f; import time time_tuple (1993, 6, 30, 21, 49…

pytorch下载慢,如何下载到本地再去安装,本地安装pytorch

有时候按部就班的用指令去安装pytorch&#xff0c;网上很慢&#xff0c;并且往往最后可能还没有安装成功。 本次&#xff0c;介绍一下如何将这个文件先下载到本地&#xff0c;然后在去安装。 至于如何安装pytorch&#xff0c;先看一下我之前写的 深度学习环境-------pytorch…

什么是多模态大模型?为什么需要多模态大模型?

“ 多模态大模型&#xff0c;就是支持多种数据格式的模型**”** 很多人都听说过多模态&#xff0c;也知道多模态大模型&#xff0c;但如果让你介绍一下什么是多模态大模型&#xff0c;它有什么优点和缺点&#xff0c;以及为什么需要多模态&#xff0c;这时可能就有点傻眼了。‍…