⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chap3.c

📁 用凌阳16位单片机SPMC75F2413A来控制无刷直流电动机的详细程序包
💻 C
📖 第 1 页 / 共 2 页
字号:

/* ========================================================================= */
/* The information contained herein is the exclusive property of             */
/* Sunplus Technology Co. And shall not be distributed, reproduced,          */
/* or disclosed in whole in part without prior written permission.           */
/*             (C) COPYRIGHT 2004 SUNPLUS TECHNOLOGY CO.                     */
/*                    ALL RIGHTS RESERVED                                    */
/* The entire notice above must be reproduced on all authorized copies.      */
/* ========================================================================= */
/* 																			 */
/* ========================================================================= */
/* Project Name  : AN_SPMC75_0003	            							 */
/* File Name     : chap3.c 													 */
/* Description   : 系统服务函数												 */
/*                                                 						     */
/* Processor     : SPMC75F2413A											     */
/* Tools	     : u'nSP IDE tools v1.18.1A or later version				 */
/* ========================================================================= */
/* Revision																	 */
/* ========================================================================= */
/* Version       :  1.00   													 */
/* Date			 :	2005.9.1												 */
/* Modified by   :	更换正规的文件头和最新的头文件							 */
/* Description	 :												    		 */
/* ========================================================================= */

//=============================================//
#include	"BLDC.h"
/*=================================================================*/
/*IPM 关断
/*=================================================================*/
void IPM_Trigger_Off(void)
{
	P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
						   CW_TMR3_UPWM_Out_HL | CW_TMR3_UOC_Mode0 |\
						   CW_TMR3_VPWM_Out_HL | CW_TMR3_VOC_Mode0 |\
						   CW_TMR3_WPWM_Out_HL | CW_TMR3_WOC_Mode0;
}

//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC正转时,120度上相PWM方波信号
//6,4,5,1,3,2
//=============================================//
void IPM_Trigger_PU120FullPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(6):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
					
		case(4):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
				
		case(5):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(1):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
			
		case(3):	//V5,V6
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
					
		case(2):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}			

//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC反转时,120度上相PWM方波信号
//1,3,2,6,4,5
//=============================================//
void IPM_Trigger_NU120FullPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(1):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
					
		case(3):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode1;
			break;
				
		case(2):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(6):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
			
		case(4):	//V5,V6
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode2;
			break;
					
		case(5):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}

//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC正转时,120度下相PWM方波信号
//6,4,5,1,3,2
//=============================================//
void IPM_Trigger_PD120FullPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(6):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
					
		case(4):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
				
		case(5):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(1):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
			
		case(3):	//V5,V6
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
					
		case(2):	//V6,V1
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_PWM | CW_TMR3_VOC_Mode1 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;

		default:
			IPM_Trigger_Off();
			break;
	}
}

//=============================================//
//120 Degree Wave Trigger For BLDC etc.
//BLDC反转时,120度下相PWM方波信号
//1,3,2,6,4,5
//=============================================//
void IPM_Trigger_ND120FullPWM(unsigned int position)
{
	switch(position&0x07)
	{
		case(1):	//V1,V2
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode2 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
					
		case(3):	//V2,V3
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_HL  | CW_TMR3_UOC_Mode0 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_PWM | CW_TMR3_WOC_Mode1;
			break;
				
		case(2):	//V3,V4
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode2 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode0;
			break;
				
		case(6):	//V4,V5
			P_TMR3_OutputCtrl->W = CW_TMR3_POLP_Active_High	|	\
								   CW_TMR3_UPWM_Out_PWM | CW_TMR3_UOC_Mode1 |\
								   CW_TMR3_VPWM_Out_HL  | CW_TMR3_VOC_Mode0 |\
								   CW_TMR3_WPWM_Out_HL  | CW_TMR3_WOC_Mode2;
			break;
			
		case(4):	//V5,V6

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -