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

news2024/11/15 12:40:17

一、设计目的:

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.coloradmin.cn/o/1993973.html

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

相关文章

设计模式-动态代理模式

目录 什么是代理模式? 为什么要用代理模式? 有哪几种代理模式? 动态代理(jdk自带): 动态代理(第三方库-cglib): 什么是代理模式? 代理模式给某一个对象提供…

Windows10不能直接拖拽文件到微信或者钉钉的解决办法【玖毅网】

不知道从何时起,微信、QQ和钉钉等相关软件,无法拖拽文件到对话窗口,拖拽的时候显示一个红色图标,可能是上次更新win之后导致的,所以嘛,系统真的不能设置自动更新,说不准哪些更新就把原设置覆盖或者关闭了,哎,吃一堑长一智吧,赶紧关闭自动更新,emmmm我在说我自己啊。…

日撸Java三百行(day17:链队列)

目录 一、队列基础知识 1.队列的概念 2.队列的实现 二、代码实现 1.链队列创建 2.链队列遍历 3.入队 4.出队 5.数据测试 6.完整的程序代码 总结 一、队列基础知识 1.队列的概念 今天我们继续学习另一个常见的数据结构——队列。和栈一样,队列也是一种操…

零基础5分钟上手谷歌云GCP核心云开发技能 - 利用语音AI服务搭建应用

简介: 欢迎来到小李哥全新谷歌云GCP云计算知识学习系列,适用于任何无云计算或者谷歌云技术背景的开发者,让大家零基础5分钟通过这篇文章就能完全学会谷歌云一个经典的服务开发架构方案。 我将每天介绍一个基于全球三大云计算平台&#xff0…

arcgis(shp)注记转CAD(dwg)文字

arcgis(shp)注记转CAD(dwg)文字方法如下: 1、添加shp文件,标注要素,然后选标注转注记 2、 点击文件夹图标打开文件夹,选择保存路径。(提前需新建好文件地理数据库、数据…

Arm Linux 设置系统日期时间的方法

一、设置系统日期时间的方法 1.命令行工具 date 命令:是Linux系统中用于查看和设置系统时间的常用命令行工具。通过date -s选项,可以手动设置系统时间。 sudo date -s "YYYY-MM-DD HH:MM:SS"hwclock 命令:用于查询和设置硬件时钟…

8月8日复习内容(基础的文件IO操作)

man手册 主要分为以下几个章节: User Commands(用户命令):这一章节包含了普通用户(非root用户)可以执行的命令。这些命令通常用于日常的文件管理、文本编辑、程序执行等任务。 System Calls(系…

【JavaEE初阶】常见的锁策略及synchronized实现原理

目录 🌳 常见的锁策略 🚩 乐观锁 vs 悲观锁 🚩 重量级锁 vs 轻量级锁 🚩 自旋锁 vs 挂起等待锁 🚩 可重入锁 vs 不可重入锁 🚩 公平锁 vs 非公平锁 🚩 互斥锁 vs 读写锁 🎄 …

2024年8月8日(python基础)

一、检查并配置python环境(python2内置) 1、检测是否安装 [rootlocalhost ~]# yum list installed| grep python [rootlocalhost ~]# yum -y install epel-release 2、安装python3 [rootlocalhost ~]# yum -y install python3 最新版3.12可以使用源码安…

数据结构.

1:基本大纲 数据结构、算法线性表:顺序表、链表、栈、队列树:二叉树、遍历、创建查询方法、排序方式 2:数据结构(逻辑结构,存储结构,操作(数据的运算)) 2.1:数据&#xf…

RabbitMQ面试题汇总

RabbitMQ面试题 一、RabbitMQ基础1. 什么是RabbitMQ,它的基本架构是怎样的?2. RabbitMQ支持哪些协议?3. 说一下AMQP协议?4. 为什么要使用RabbitMQ?5. MQ的应用场景有哪些?6. 解耦、异步、削峰是什么&#x…

【Linux之·工程构建·Cmake】

系列文章目录 文章目录 前言一、概述二、CMake的基本概念2.1 CMake的工作原理和基本组成部分2.2 CMakeLists.txt文件的结构和语法2.2.1 变量操作2.2.2 注释2.2.3 日志2.2.4 宏定义 2.3 CMakeLists.txt文件的作用 三、CMake的常用命令和变量3.1 常用的CMake命令和变量3.1.1 字符…

多尺度病理图像纹理特征作为肺腺癌预后预测的新指标|文献精读·24-08-09

小罗碎碎念 这一期推文分享的文献是2022年发表于 Journal of Translational Medicine 的一篇文章,目前IF6.1。 这篇文章值得刚入门病理AI领域的老师/同学仔细研读,因为思路清晰,该讲到的流程基本都涉及了,详细讲述了病理图像的各种…

PyTorch基于深度神经网络的语音情绪识别

【图书推荐】《PyTorch语音识别实战》-CSDN博客 《PyTorch语音识别实战(人工智能技术丛书)》(王晓华)【摘要 书评 试读】- 京东图书 (jd.com) 情绪数据的获取与标签的说明 首先是语音情绪数据集的下载,在这里使用瑞尔森情感语音和歌曲视听数…

动态规划求解最小斯坦纳树(证了一天两夜)

最小斯坦纳树 给定点的“最小生成树”问题。 背景 给定无向连通图 G ( V , E ) G(V,E) G(V,E),给出包含 k k k 个结点的点集 S S S,包含点集 S S S 的连通图被称作 斯坦纳树。但我们关注的是如何求出包含点集 S S S 的最小连通图 G ′ ( V ′ ,…

One-hot编码和Multiple-hot编码

在推荐系统和机器学习中,我们通常会遇到两种类型的编码方式:One-hot 编码和 Multiple-hot 编码(有时也称为 Multi-hot 编码)。这两种编码方式用于将分类数据转换为数值表示,以便机器学习模型能够处理这些数据。 1、On…

国产开源大模型都有哪些?

随着ChatGPT引领的大模型热潮,国内的公司开始相继投入研发自己的人工智能大模型,截止到2023年10月,国产公司的大模型有近百个,包括一些通用大模型,比如百度的文心一言,也有特定领域的专用大模型&#xff0c…

电力时代的液冷-EAK水冷电阻器的来源

当电气设备出现故障时,我们经常会表述成“这个东西烧了”。为什么用“烧”而不是“破”了或“坏”了呢?因为在电气产品中,一部分的电能会在使用的过程中通过电阻和电感的作用转化为热,如果因为设计或故障原因,产生的热没有被有效…

python自动化笔记:os模块和异常处理

目录 一、os模块1.1、常用方法1.2、其他方法(了解即可) 二、异常处理 try except2.1、语法格式1:2.2、语法格式2:指定异常类别,捕获异常2.3、语法格式3:try-finally 语句无论是否发生异常都将执行最后的代码…

〖基础篇1〗ROS2 Foxy Ubuntu 20.04 (Focal Fossa)安装教程

目录 一、linux Ubuntu 20.04 (Focal Fossa)安装二、linux VPN安装三、linux anaconda安装(可选)四、linux ROS2 foxy安装1. 设置语言环境2. 设置DEB软件源3. 安装开发工具和依赖4. 安装ROS2 foxy桌面版本5. 运行示例 一、linux Ubuntu 20.04 (Focal Fos…