《DSP原理及电机控制应用》课程设计-DSP直流电机调速课程设计
基于dsp直流电机调速系统的设计

基于dsp直流电机调速系统的设计李方圆;李晓【期刊名称】《数字技术与应用》【年(卷),期】2012(000)012【摘要】在工程实践中,有许多生产机械要求在一定的范围内进行速度的平滑调节,并且要求有良好的静,动态性能。
采用DSP控制器控制后,整个调速系统实现全数字化,结构简单,可靠性高,操作维护方便,电机稳态运行时转速精度可达到较高水平。
直流电机具有调速平滑,调速范围广等优良的调速特性。
又由于直流调速系统是自动化专业教学的重点,本设计为学生们提供了一个良好的实验平台,同学们可以通过此平台进行直流电机调速的实验,可以通过改变PI参数理解PID 算法对直流电机启动和调速性能的影响。
% In engineering practice, There are many production machinery requirements in a certain range for speed smooth adjustment,and ask to have good static and dynamic performance. After the controlling of DSP control er the speed control system can realize ful digital, simple structure, high reliability, convenient operation and maintenance, and the motor steady state operation speed precision can achieve a higher level. And because of dc speed regulating system is the emphasis of the teaching of automation and this design provides students a good experiment platform, so that Students can experiment through the platform for dc motor speed control ,and they can change the parameters of pi to understand the influence of pid algorithm for dc motors’ starting and the performance of speed control ing.【总页数】3页(P128-130)【作者】李方圆;李晓【作者单位】中北大学信息与通信工程学院山西太原 030051;中北大学信息与通信工程学院山西太原 030051【正文语种】中文【中图分类】TM33【相关文献】1.基于DSP的直流电机调速系统数字化设计 [J], 高鹏;史晓东;王乐勇2.基于dsp直流电机调速系统的设计 [J], 李方圆;李晓;3.基于DSP2812的无刷直流电机调速系统设计 [J], 李燃;原明亭4.基于DSP无刷直流电机调速系统设计 [J], 李长硕;谭丽;隋然5.基于DSP的小型直流电机调速系统设计 [J], 孔佳仪;程红因版权原因,仅展示原文概要,查看原文内容请购买。
dsp电机控制原理及应用

dsp电机控制原理及应用DSP电机控制原理及应用数字信号处理技术(DSP)在电机控制中的应用越来越广泛,其原理和应用如下:1. 原理DSP电机控制的原理基于对电机运行状态的实时监测和处理。
通过采集电机的传感器信号,并利用DSP芯片对信号进行数字化处理和分析,可以实现对电机的精确控制。
DSP电机控制的主要原理包括以下几个方面:- 电机速度闭环控制:通过对电机速度进行闭环控制,可以实现精确的速度调节和稳定的转速控制。
- 电流控制:DSP可以对电机的电流进行采样和处理,通过控制电机的电流大小和相位,可以实现电机的精确转矩控制。
- 位置控制:通过对电机位置信号的处理和反馈,可以实现对电机转动位置的准确定位和控制。
2. 应用DSP电机控制广泛应用于各种类型的电动机控制系统,如直流电机控制、交流电机控制和步进电机控制等。
根据电机控制的需求和应用场景的不同,DSP电机控制可以实现以下几个方面的功能:- 速度闭环控制:实现对电机转速的精确控制,用于需要稳定速度的应用,如风扇、泵等。
- 转矩控制:通过对电机电流的控制,实现对电机转矩的精确调节,适用于需要精确转矩输出的应用,如工业机械、机器人等。
- 位置控制:通过对电机位置信号的处理和反馈,实现对电机位置的准确定位和控制,适用于需要精确位置控制的应用,如CNC机床、自动化设备等。
- 动态响应控制:利用DSP的高性能计算能力和实时控制能力,可以实现对电机动态响应的控制,适用于对电机响应速度要求较高的应用,如印刷机、包装设备等。
综上所述,DSP电机控制原理简单明了,应用广泛。
凭借其优秀的数字信号处理能力和实时控制特性,DSP电机控制在电机控制领域具有重要的地位和广阔的应用前景。
基于DSP的小型直流电机调速系统设计

科技创新导报2016 NO.31Science and Technology Innovation HeraldDO I : 10.16660/j .c n k i .1674-098X .2016.31.006信息化工业基于DSP 的小型直流电机调速系统设计①孔佳仪程红(中国矿业大学(北京)机电与信息工程学院电气工程系北京100083)摘要:针对以PC 机为上位机,DSP 为下位机控制器的小型直流电机调速系统,给出了硬件系统设计方案、驱动电机选型,详细 介绍了功率驱动电路设计。
在此基础上,实现了上位机监控平台开发和下位机软件的设计。
通过电机调速特性实验验证了系统 硬件和软件设计的可行性,达到了控制系统稳态和动态性能要求,系统人机对话友好,该方案可推广应用于机器人运动控制系 统的设计。
关键词:直流电机调速D S P 驱动电路串口通信中图分类号:TM 33文献标识码:A文章编号:1674-098X (2016)11(a )-0006-04用D S P 替代传统的单片机进行电机控制已成为一种潮 流。
该文将髙速、髙性能、满足实时性要求的T M S 320F 2812 用于直流电机调速系统,设计驱动电路,满足低成本大功率 直流电机驱动控制,采用增量式PI 算法闭环反馈,通过改变 P W M 信号达到调速控制目的,T M S 320F 2812通过串行通 信数据接口与上位机进行信息交互,使得系统更加智能化, 人机对话友好,该方案可推广应用于机器人运动控制系统的 设计。
1系统硬件设计 1.1总体控制方案该文选取额定电压为12 V 的37G B -520大扭矩直流减 速电机,同时电机尾部装备了一个增量式霍尔旋转编码器, 简化了硬件结构。
控制系统的主要任务是接收上位机的控 制命令,采集直流电机速度反馈信息,通过闭环控制算法控 制直流电机完成相应动作[1],总体控制方案如图1所示。
DSP 用于产生P W M 驱动信号,经功率驱动电路,实现电机启动、图1总体控制方案示意图图2功率驱动电路①作者简介:孔佳仪(1995 — ),女,汉,山东泰安人,硕士研究生,研究方向:电力电子与电力传动。
电机的DSP控制课程设计报告

课程名称:电机的DSP控制课程设计院系:电子信息与电气工程学院专业:电气工程与自动化班级:学号:姓名:上海交通大学目录1. 电机控制的DSP芯片 (3)2.软件设计要求 (3)2.1学会DSP开发环境的使用,能编写C语言程序; (3)2.2编写数码管显示程序、键盘扫描程序; (3)2.3 编写AD采样程序; (3)2.4编写6路PWM正弦波程序(变频器逆变需6路); (3)3. 软件实现 (3)3.1数码管显示程序、键盘扫描程序 (3)3.1.1程序设计思路 (3)3.1.2程序模块 (4)3.2 AD采样程序 (6)3.2.1程序设计思路 (6)3.2.2 程序模块 (6)3.3 6路PWM正弦波程序 (7)3.3.1 程序设计思路 (7)3.3.2 程序模块 (8)3.3.3程序设计结果 (10)4. 课程总结 (14)1.电机控制的DSP芯片本课程设计用的芯片为TMS320F28027;本课程设计中主要用到的一些电路模块:显示和键盘电路、BC7281、A/D采样电路、PWM输出电路。
2.软件设计要求2.1学会DSP开发环境的使用,能编写C语言程序;2.2编写数码管显示程序、键盘扫描程序;程序运行后,初始值为0,通过1个键,按一下加1,通过另一个键,按1下减1;(按着不放,超过1秒,不断加1或减1,时间超过5秒,不断加10,或减10)。
2.3 编写AD采样程序;根据输入的电压值,把AD的结果显示出来,当输入电压变化时,显示值也变化。
2.4编写6路PWM正弦波程序(变频器逆变需6路);PWM的开关频率为10KHz,其输出的正弦波频率为0~100Hz,根据AD的值变化,50Hz时输出100%电压,0~50Hz按V/f等于常数输出,死区时间取2us。
频率值显示在数码管上。
3.软件实现3.1数码管显示程序、键盘扫描程序3.1.1程序设计思路此程序关键是如何去计时,最初考虑是用计时器中断去设计程序,但此方法需要在中断中执行判断按键是否持续,以及更改和现实数字,中断中操作过多,经常出错。
基于DSP的直流电机调速系统设计

,式中 U 主要表示为电枢电压,Ia 主要表示
电枢电流,R 主要表示为点数电路当中总电阻 C 表示为电机结
构相关的电常数,n 则表示为转速 [1]。
,
通过此种公式,可以将直接电流的调速方法主要分为三种形
式 :1. 当调压转到调节电枢电压的过程时,可以使整个电机的速
度在很大的范围内实现平滑运动。2. 弱磁性调速转变为励磁性磁
‖18‖
电机调节速度的需求,还能在很大程度上减少了一些小硬件资源 的过度使用。
而在设计 DSP 的应用程序主要是先完成键盘所有按键的定 义,然后断开函数的声明,以及各个子程序在系统当中所用到的 变量定义,然后在根据系统当中多个模块进行重新的初始化,这 样当最后一道程序在进入一死循环时,就立即将断开的按键按下, 这样就可以通过断开子程序,将定时器的周期实施中断,从而获 取 SCI 的中断程序结构。 四、结论
本次 DSP 的直流电机调速系统的设计主要选用 TI 公司的
DSP-TMS320F2812。对于 PC 机主要完成的就是控制系统的任务
管理,即通过 LabVIEW 对 DSP 发出的转速命令,并接受。在基
于 DSP 的直流电机调速系统当中主要是由控制电机、功率电机、
DSP 控制电路以及转换速度建设的期间和隔电路板,以及 PC 机
等重要部分组成的,而根据 DSP 的直流电机调速系统相关的实验
结果显示,其调速系统的整体性结构主要是以计主从式的计算机
结构,而在采用 PC 上位机的过程时,下位机就一定要采用 DSP,
这样才能做到具有协调性,而 PC 机的用处主要用来完成整改控
制系统当中的管理,并通过对 DSP 进行发出转变速度的命令,以
程序员之家
基于DSP的直流电机调速系统设计
《DSP无刷直流电机控制器的设计》范文

《DSP无刷直流电机控制器的设计》篇一一、引言随着科技的发展和自动化需求的提升,无刷直流电机作为一种高效率、低噪音、高扭矩输出的动力源,得到了广泛应用。
为了实现对无刷直流电机的精确、稳定控制,DSP(数字信号处理器)因其强大的数据处理和实时控制能力被广泛用于无刷直流电机控制器的设计。
本文将就DSP无刷直流电机控制器的设计进行详细的阐述。
二、DSP无刷直流电机控制器设计概述DSP无刷直流电机控制器是集成了DSP微处理器、传感器、功率驱动等部分的一种控制装置。
它能够根据电机的工作状态,实时调整电机的驱动电流,以实现电机的稳定运行。
在控制器设计中,应充分考虑到系统的实时性、稳定性和可靠性等因素。
三、DSP无刷直流电机控制器设计步骤1. 硬件设计:硬件设计是无刷直流电机控制器设计的基石。
首先,选择合适的DSP微处理器,确保其具有足够的处理能力和实时性。
其次,设计传感器电路,用于检测电机的状态和位置信息。
再次,设计功率驱动电路,用于驱动电机的运行。
最后,将各部分电路进行整合,形成完整的硬件系统。
2. 软件设计:软件设计是实现无刷直流电机精确控制的关键。
首先,编写DSP的初始化程序,设置DSP的工作模式和参数。
其次,编写电机控制算法,根据电机的状态和位置信息,实时调整电机的驱动电流。
最后,编写用户界面程序,方便用户对电机进行控制和监控。
3. 系统调试:在硬件和软件设计完成后,需要进行系统调试。
首先,对硬件电路进行测试,确保各部分电路正常工作。
其次,对软件程序进行调试,确保程序能够正确运行并实现预期的功能。
最后,对整个系统进行联调,确保系统的稳定性和可靠性。
四、DSP无刷直流电机控制器的特点1. 精确控制:DSP无刷直流电机控制器能够根据电机的状态和位置信息,实时调整电机的驱动电流,实现精确控制。
2. 高效能:DSP具有强大的数据处理能力和实时控制能力,能够确保电机的高效运行。
3. 稳定性好:通过软件控制和硬件电路的优化设计,可以确保系统的稳定性和可靠性。
基于DSP的双闭环直流电机调速实验系统设计共3篇
基于DSP的双闭环直流电机调速实验系统设计共3篇基于DSP的双闭环直流电机调速实验系统设计1双闭环直流电机调速实验系统设计直流电机调速是现代工业自动化控制领域中的一个重要应用。
直流电机调速系统一般采用PID控制器。
双闭环控制是PID控制器的一种改进,它既可以保证控制系统对速度的精度也可以对电机电流进行控制。
本文将介绍基于DSP的双闭环直流电机调速实验系统的设计。
硬件设计1.直流电机及驱动器直流电机是转换为机械能的电能转换的主要设备之一。
在实验中选择一台小型直流电机,以其低功率,小体积,易于控制为主要考虑因素。
驱动器采用直流调速电机控制器。
2. 双闭环控制器双闭环控制器是PID控制器的一种改进,它可以对电机电流进行控制,保证控制系统对速度的精度。
在本实验中,我们采用STM32系列单片机,该单片机集成了内置的PID控制器和模糊控制算法,可方便地实现双闭环控制。
3. 光电编码器和减速器光电编码器和减速器也是直流电机调速系统的重要组成部分。
光电编码器主要用于检测电机的转速或转角,减速器可以通过降低电机的转速来提高电机性能。
软件设计1. 算法设计基于DSP的直流电机调速系统中主要采用PID控制算法,该算法是通过调节三个参数,即比例、积分、微分调节来控制电机的速度。
PID控制器会不断地进行调节,使电机的输出保持在所需的速度范围内。
2. 软件运行本实验系统采用C语言编写,在DSP芯片中使用程序存储器存储程序,其中包含了PID控制器的算法,通过用户输入所需的速度值,根据PID 算法进行调节,实现电机的精确控制。
实验结果分析通过实验结果可以看出,基于DSP的双闭环直流电机调速实验系统控制精度高,控制范围广,动态响应速度快,能够满足直流电机调速系统的要求。
在多次测试中,实验系统的控制误差小于1%,性能稳定可靠。
结论本文介绍了基于DSP的双闭环直流电机调速实验系统的设计。
实验系统采用了STM32系列单片机,集成了内置的PID控制器和模糊控制算法,通过硬件和软件的结合,实现了电机的精确控制。
(完整word版)基于DSP的电机控制模块课程设计
电机控制模块课程设计目录前言 .......................................................................................................................................一、课设要求.......................................................................................................................1、1 课题研究的目的 .......................................................................................1、2 任务..........................................................................................................二、系统总体设计2。
1、系统组成框图...................................................................................................... 2。
2、系统主电路..........................................................................................................2.3、采样调理电路......................................................................................................... 2。
《DSP无刷直流电机控制器的设计》范文
《DSP无刷直流电机控制器的设计》篇一一、引言随着现代工业的快速发展,电机控制技术已成为众多领域的关键技术之一。
无刷直流电机(BLDC)以其高效、低噪音、长寿命等优点,在工业、交通、医疗、家电等领域得到广泛应用。
而数字信号处理器(DSP)作为一种高性能的微处理器,为电机控制提供了更精确、更快速的解决方案。
因此,本文旨在探讨DSP无刷直流电机控制器的设计方法。
二、DSP无刷直流电机控制器设计概述DSP无刷直流电机控制器是一种基于DSP技术的电机控制器,它能够实现对无刷直流电机的精确控制。
设计DSP无刷直流电机控制器需要考虑到硬件电路设计、软件算法设计以及控制系统设计等多个方面。
其核心思想是通过DSP的强大处理能力,对电机的转速、转向、位置等参数进行实时监测和控制,以达到精确控制电机的目的。
三、硬件电路设计硬件电路设计是DSP无刷直流电机控制器的关键部分之一。
主要包括电源电路、电机驱动电路、信号采集电路等。
首先,电源电路为整个控制器提供稳定的电源,保证控制器的正常工作。
其次,电机驱动电路是控制电机运转的关键部分,需要考虑到电机的电压、电流等参数,以保证电机的正常运行。
最后,信号采集电路负责采集电机的转速、转向、位置等信号,为控制器的精确控制提供依据。
四、软件算法设计软件算法设计是DSP无刷直流电机控制器的另一关键部分。
主要包括控制算法设计、驱动程序设计等。
控制算法是控制器的核心,它需要根据电机的实际运行情况,实时调整电机的转速、转向等参数,以达到精确控制的目的。
常用的控制算法包括PID控制算法、模糊控制算法等。
驱动程序则是控制算法与硬件之间的桥梁,它需要根据硬件的特性,实现控制算法的硬件实现。
五、控制系统设计控制系统是DSP无刷直流电机控制器的核心部分,它需要对整个系统进行综合管理,保证系统的稳定性和可靠性。
控制系统设计主要包括系统架构设计、系统调试等。
系统架构设计需要考虑到系统的整体结构、功能模块的划分以及模块之间的通信方式等。
dsp直流无刷课程设计
dsp直流无刷课程设计一、课程目标知识目标:1. 学生能理解直流无刷电机(DSP)的基本原理与结构,掌握相关术语及概念。
2. 学生能描述DSP控制系统的组成,掌握其主要部件的功能和相互关系。
3. 学生能掌握DSP编程的基本步骤,并运用相关算法对直流无刷电机进行控制。
技能目标:1. 学生能够运用所学知识,设计简单的DSP直流无刷电机控制系统。
2. 学生能够通过实验和调试,熟练操作DSP开发平台,并解决实际问题。
3. 学生能够运用仿真软件对DSP控制系统进行仿真,优化系统性能。
情感态度价值观目标:1. 培养学生对电机控制技术的兴趣,激发他们探索精神和创新意识。
2. 培养学生团队合作意识,学会与他人共同解决问题,提高沟通与协作能力。
3. 培养学生具备工程伦理素养,认识到电机控制技术在实际应用中对环境和社会的影响。
本课程针对高年级学生,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。
在教学过程中,注重理论与实践相结合,提高学生的动手能力和实际操作技能。
通过本课程的学习,使学生能够在电机控制领域具备一定的理论素养和实践能力,为未来从事相关领域工作打下坚实基础。
二、教学内容1. 直流无刷电机原理:包括电机结构、工作原理、术语及概念介绍。
- 相关章节:教材第1章“电机基础”- 内容:电机类型、转子与定子结构、电磁感应原理等。
2. DSP控制系统组成:讲解DSP芯片、外围电路、传感器等组成部分及其功能。
- 相关章节:教材第2章“DSP控制系统概述”- 内容:DSP芯片选型、外围电路设计、传感器接口等。
3. DSP编程与控制算法:学习DSP编程方法,掌握PID、FOC等常用控制算法。
- 相关章节:教材第3章“DSP编程与控制算法”- 内容:编程环境搭建、程序结构、控制算法原理及实现。
4. DSP直流无刷电机控制系统设计:结合实际案例,进行系统设计及仿真。
- 相关章节:教材第4章“电机控制系统设计”- 内容:硬件设计、软件设计、系统调试与优化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、直流电机PWM调速原理介绍:调节PWM信号占空比。
可以调节直流电机速度(1)、直流电机调速原理:当改变励磁电流时,可以改变磁通量的大小,从而达到变磁通调速的目的。
但由于励磁线圈发热和电动机磁饱和的限制,电动机的励磁电流和磁通量只能在低于其额定值的范围内调节,故只能弱磁调速。
而对于调节电枢外加电阻R 时,会使机械特性变软,导致电机带负载能力减弱。
当改变电枢电压,理想空载转速随电枢电压升降而发生相应的升降变化。
不同电枢电压的机械特性曲线相互平行,说明硬度不随电枢电压的变化而改变,电机带负载能力恒定。
当我们平滑调节他励直流电机电枢两端电压时,可实现电机的无级调速。
(2 )、PWM基本原理:PWM是通过控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而达到控制要求的一种电压调整方法。
PWM可以应用在许多方面,如电机调速、温度控制、压力控制等。
在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。
通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。
在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。
只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。
设电机始终接通电源时,电机转速最大为V ,当我们改变占空比D:t/T时,就可以得到不同的电机平均速度,从而达到调速的目的。
严格地讲,平均速度与占空比D并不是严格的线性关系,在一般的应用中,可以将其近似地看成线性关系。
(3)、实现方法:PWM信号的产生通常有两种方法:一种是软件的方法;另一种是硬件的方法。
硬件方法的实现已有很多文章介绍,这里不做赘述。
本文主要介绍利用单片机对PWM信号的软件实现方法。
2、电路的工作原理及主要芯片的性能:(1)电路的工作原理图为:(2)L298N 的工作原理:L298N 是SGS公司的产品,其内部包含4通道逻辑驱动电路,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A 以下的电机口。
由L298N构成的PWM功率放大器的工作形式为单极可逆模式,2个H桥的下侧桥晶体管发射极连在一起,其引脚排列如图1所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传号。
L298可驱动2个电机,OUTlOUT2和OUT3、OUT4之间分别接2个电动机。
5、7、10、12脚接输人控制电平,控制电机的正反转,ENA、ENB接控制使能端,控制电机的停转。
这些特性使得L298N 很适合用作小型直流电机控制芯片。
下面图1为L298N的外部引脚图:图1:L298N的外部引脚3、脉宽可调的PWM方波程序:(1)程序软件流程图:(2)程序代码(加注释):#include "f2407_c.h" // 屏蔽中断程序void inline disable(){asm(" setc INTM");} // 系统初始化子程序int initial(){asm(" setc SXM"); // 符号位扩展有效asm(" clrc OVM"); // 累加器中结果正常溢出asm(" clrc CNF"); // B0被配置为数据存储空间SCSR1=0x81FE; // CLKIN=6M,CLKOUT=4CLKIN=24MWDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE// 即WD复位后的缺省值为1,故可以用软件禁止看门狗IMR=0x0000; // 禁止所有中断IFR=0x0FFFF; // 清除全部中断标志,"写1清0"WSGR=0x00; // 禁止所有的等待状态}// EVB模块的PWM初始化程序int pwminitial(){MCRC=MCRC|0x007E; // IOPE1-6被配置为基本功能方式,PWM7-12ACTRB=0x0666; // PWM12,10,8低有效,PWM11,9,7高有效DBTCONB=0x00; // 不使能死区控制CMPR4=0x1000;CMPR5=0x3000;CMPR6=0x5000;T3PR=0x6000; // 设置定时器3的周期寄存器,并设置CMPR4-6,//以确定不同的输出占空比COMCONB=0x8200; // 使能比较操作T3CON=0x1000; // 定时器3为连续增计数模式}// 该中断服务程序主要是为了防止干扰,不做任何其它操作void interrupt nothing(){return; // 中断直接返回}// 主程序main( ){disable(); // 总中断禁止initial(); // 系统初始化pwminitial(); // PWM输出初始化T3CON=T3CON|0x9040; // 启动定时器3while(1){;}}(3)调试方法、过程及结果:将示波器的红色表笔分别与DSP的J8-1、J8-3、J8-5相连,观察示波器上的输出波形,然后改变方波的占空比,看示波器上输出方波是否改变。
上述的程序运行的结果可以从示波器上看出来,当红色表笔与J8-1相连时,示波器上的显示图形为:T3=T1+T2,T2=5T1,由此可见,该方波的占空比为1:5。
当红色表笔与J8-3相连时,示波器上的显示图形为:T3=T1+T2,T2=T1,由此可见,该方波的占空比为1:1。
当红色表笔与J8-5相连时,示波器上的显示图形为:T3=T1+T2,5T2=T1,由此可见,该方波的占空比为5:1。
结果分析:由CMPR4=0x1000;CMPR5=0x3000;CMPR6=0x5000;T3PR=0x6000; 四条语句可以看出DSP上J8-1、J8-3、J8-5输出的方波占空比理论值应该分别为1:5、1:1、5:1,与真实输出一致,说明输出方波的占空比与CMPR4、CMPR5、CMPR6、T3PR的赋值有关,改变这些值,就可以改变输出方波的占空比。
4、CAN总线通信程序:(1)程序软件流程图:发送流程图接收流程图(2)程序代码(加注释):发送程序代码(加注释):#include "f2407_c.h" //引用头部文件int CAN_FLAG; //定义标志寄存器void system_init(); //声明在程序中需要用到是函数void CANMBX_ISR();void CAN_INIT();void inline disable(){asm(" setc INTM");}void inline enable(){asm(" clrc INTM");} // 系统初始化子程序//(1)主程序main(){system_init(); //系统初始化子程序CAN_FLAG=0x00; //清CAN用户标志,CAN_FLAG=0表示收到数据 CAN_INIT(); //CAN初始化子程序enable();for(;;){TCR=0x20; //MBX3请求发送while(TCR&0x2000==0) //等待发送应答continue;TCR=0x2000; //清TA3和MIF3标志位CAN_FLAG=0x0000; //清接收到标志MDER=0x0000; //邮箱不使能MCR=0x0140; //CDR=1,数据改变请求MBX3A=MBX2A; //用邮箱2中数据更新3中的数据MBX3B=MBX2B;MBX3C=MBX2C;MBX3D=MBX2D;MCR=0x0480; //DB0=1,AB0=1,STM=0设置为正常工作模式 MDER=0x04C;}}//(2) 系统初始化子程序void system_init(){asm(" setc SXM"); // 抑制符号位扩展asm(" clrc OVM"); // 累加器中结果正常溢出asm(" clrc CNF"); // B0被配置为数据存储空间asm(" setc INTM"); // 禁止所有中断SCSR1=0x81FE; // CLKIN=6M,CLKOUT=4CLKIN=24M WDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE// 即WD复位后的缺省值,故可以用软件禁止看门狗IMR=0x0010; // 开中断优先级5IFR=0x0FFFF; // 清除全部中断标志,"写1清0"}//(3)CAN初始化子程序void CAN_INIT(){MCRB=MCRB|0x0C0; //设置IOPC6、IOPC7为CANRX,CANTXCAN_IFR=0x0FFFF; //清所有中断标志LAM1_H=0x7FFF; //设置邮箱3、2的屏蔽ID寄存器LAM1_L=0x0FFFF; //0则ID必须匹配MCR=0x1000; //CCR=1改变配置请求while(GSR&0x0010==0) continue; //CCE=1时即可配置BCR2、BCR1寄存器 BCR2=0x01; //波特率预分频寄存器BCR1=0x033; //波特率设置为500KbpsMCR=MCR&0x0EFFF; //CCR=0改变配置请求while(GSR&0x0010!=0)continue; //只有当CCE=0时,配置BCR2、BCR1寄存器成功MDER=0x040; //不使能邮箱2,邮箱2改为接收方式MCR=0x0103; //CDR=1,数据区改变请求MSGID2H=0x2447; //设置邮箱2的控制字及ID ,IDE=0,AME=0,AAM=0//标准方式为MSGID2H[12~2]MSGID2L=0x0FFFF;MSGCTRL2=0x08; //设置控制,数据长度DCL=8,RTR=0数据帧MBX2A=0x1000; //邮箱2信息初始化MBX2B=0x3000;MBX2C=0x0000;MBX2D=0x0000;MSGID3H=0x2447; /设置邮箱3的标识符MSGID3L=0x0FFFF;MSGCTRL3=0x08; //RTR=0,DCL=8MBX3A=0x1500; //邮箱3信息初始化MBX3B=0x2000;MBX3C=0x5500;MBX3D=0x6000;CAN_IMR=0x0F7FF;CAN_IFR=0x0FFFF;MCR=0x0480; //DB0=1,AB0=1,STM=1设置为自测试模式MDER=0x04C; //使能邮箱2和3,邮箱2为接收方式//Counter=0;}//(4)中断程序void interrupt GRIS5(){switch(PIVR){case 64:CANMBX_ISR();break;}enable();return;}void CANMBX_ISR(){RCR=0x040; //复位RMP2和MIF2CAN_FLAG=1; //置用户接收标志}// 直接返回中断服务程序void interrupt nothing( ){return;}接收程序代码(加注释):#include "f2407_c.h" //引用头部文件int CAN_FLAG; //定义标志寄存器void system_init(); //声明在程序中需要用到是函数void CANMBX_ISR();void CAN_INIT();void inline disable(){asm(" setc INTM");}void inline enable(){asm(" clrc INTM");}// EVB模块的PWM初始化程序int pwminitial(){MCRC=MCRC|0x007E; // IOPE1-6被配置为基本功能方式,PWM7-12 ACTRB=0x0666; // PWM12,10,8 低有效,PWM11,9,7 高有效DBTCONB=0x00; // 不使能死区控制CMPR4=MBX2A;CMPR6=MBX2B;T3PR=0x6000;// 设置定时器3的周期寄存器,并设置CMPR4-6,以确定不同的输出占空比COMCONB=0x8200; // 使能比较操作T3CON=0x1000; // 定时器3为连续增计数模式}//(1)主程序main(){disable(); // 总中断禁止system_init(); //系统初始化子程序CAN_FLAG=0x00; //清CAN用户标志,CAN_FLAG=0表示收到数据CAN_INIT(); //CAN初始化子程序enable();for(;;){while(CAN_FLAG==0)continue; //等待接收数据CAN_FLAG=0x0000; //清接收到标志MDER=0x0000; //邮箱不使能MCR=0x0140; //CDR=1,数据改变请求pwminitial(); // PWM输出初始化T3CON=T3CON|0x9040; // 启动定时器3MCR=0x0480; //DB0=1,AB0=1,STM=0设置为正常工作模式MDER=0x044;}}//(2) 系统初始化子程序void system_init(){asm(" setc SXM"); // 抑制符号位扩展asm(" clrc OVM"); // 累加器中结果正常溢出asm(" clrc CNF"); // B0被配置为数据存储空间asm(" setc INTM"); // 禁止所有中断SCSR1=0x81FE; // CLKIN=6M,CLKOUT=4CLKIN=24MWDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE// 即WD复位后的缺省值,故可以用软件禁止看门狗IMR=0x0010; // 开中断优先级5IFR=0x0FFFF; // 清除全部中断标志,"写1清0"WSGR=0x00; // 禁止所有的等待状态}//(3)CAN初始化子程序void CAN_INIT(){MCRB=MCRB|0x0C0; //设置IOPC6、IOPC7为CANRX,CANTXCAN_IFR=0x0FFFF; //清所有中断标志LAM1_H=0x7FFF; //设置邮箱3、2的屏蔽ID寄存器LAM1_L=0x0FFFF; //0则ID必须匹配MCR=0x1000; //CCR=1改变配置请求while(GSR&0x0010==0) continue; //CCE=1时即可配置BCR2、BCR1寄存器BCR2=0x01; //波特率预分频寄存器BCR1=0x033; //波特率设置为500KbpsMCR=MCR&0x0EFFF; //CCR=0改变配置请求while(GSR&0x0010!=0) continue; //只有当CCE=0时,配置BCR2、BCR1寄存器成功 MDER=0x040; //不使能邮箱2,邮箱2改为接收方式MCR=0x0103; //CDR=1,数据区改变请求MSGID2H=0x2447; //设置邮箱2的控制字及ID//IDE=0,AME=0,AAM=0,标准方式为MSGID2H[12~2]MSGID2L=0x0FFFF;MSGCTRL2=0x08; //设置控制,数据长度DCL=8,RTR=0数据帧MBX2A=0x3000; //邮箱2信息初始化MBX2B=0x3000;MBX2C=0x0000;MBX2D=0x0000;MSGID3H=0x2447; //设置邮箱3的标识符MSGID3L=0x0FFFF;MSGCTRL3=0x08; //RTR=0,DCL=8MBX3A=0x1234; //邮箱3信息初始化MBX3B=0x5678;MBX3C=0x9abc;MBX3D=0x1111;CAN_IMR=0x0F7FF;CAN_IFR=0x0FFFF;MCR=0x0480; //DB0=1,AB0=1,STM=1设置为自测试模式MDER=0x04C; //使能邮箱2和3,邮箱2为接收方式}//(4)中断程序void interrupt GRIS5(){switch(PIVR){case 64:CANMBX_ISR();break;}enable();return;}void CANMBX_ISR(){RCR=0x040; //复位RMP2和MIF2CAN_FLAG=1; //置用户接收标志CMPR4=MBX2B;}// 直接返回中断服务程序void interrupt nothing( ){return;}(3)调试方法、过程及结果:将两台DSP试验箱用两根导线连接起来,一台电脑作为发送端,运行发送程序,一台电脑作为接收端,运行接收程序,通过改变发送程序中MBX2A、MBX2B的赋值,间接改变CMPR4、CMPR6的值,因此,输出的方波的占空比改变了,从而影响了电机的转速和旋转的方向,即实现了通过改变发送信息,控制电机的转速和正反旋转。