CMS32系列芯片:
Cortex®-M0 处理器是一个可配置,具有多级流水线的 32 位 RISC 处理器。它拥有一个 AMBA AHB-Lite 接口并包含 NVIC 组件,同时有可选的硬件调试功能。该处理器可以执行 Thumb 指令,并与其他 Cortex®-M 系列处理器兼容。该处理器支持两种工作模式——Thread 模式和 Handler 模式。 异常时系统进入 Handler 模式, 异常返回只能在 Handler
模式下执行。系统复位及异常返回后均可进入 Thread 模式。
1.2 特性
◆ 低门数处理器:
- ARMv6-M Thumb®指令集。
- Thumb-2 技术。
- ARMv6-M 兼容 24 位系统定时器。
- 一个 32 位硬件乘法器。
- 系统接口支持小端数据访问。
- 准确而及时的中断处理能力。
- 加载/存储多个数据和多周期乘法指令可被终止,然后重新开始,从而实现快速中断处理。
- C 应用程序二进制接口的异常兼容模式。
- ARMv6-M 的 C 应用程序二进制接口(C-ABI)异常兼容模式允许用户使用纯 C 函数实现中断处理。
◆ NVIC:
- 32 个外部中断,每个中断有 4 级优先级。
- 专用的不可屏蔽中断(NMI)。
- 同时支持电平和脉冲触发中断。
- 支持中断唤醒控制器(WIC),提供极低功耗空闲模式。
◆ 调试支持:
- 四个硬件断点。
- 两个观察点。
- 用于非侵入式代码分析的程序计数采样寄存器(PCSR)。
- 单步和向量捕捉能力。
◆ 总线接口:
- 为所有的系统接口及存储器提供简单集成的单一的 32 位 AMBA-3 AHB-Lite 系统接口。
- 支持 DAP(调试使用端口)单一的 32 位从机端口。

4.jpg
3.jpg


  主控ARM Cortex M0内核,主频最高64MHz,工作电压:2.1V-5.5V,工作温度:-40℃ - 105℃,32KB Flash,8KB SRAM,1KB Data Flash、


DEMO程序运行:需要注意是JLINK烧录需要版本9.0以上才可以


2.jpg


核心代码
void MC_Control(void)
  • {
  •         switch(SYSTEM_STATE)
  •         {
  •                 /* 系统初始化 */
  •                 case SYS_INIT:
  •                 {
  •                         Mot_Parameter_Init();
  •                         BasePara_Init();
  •                         SYSTEM_STATE = SYS_RUN;                        
  •                         break;
  •                 }
  •                 /* 系统正常工作状态 */
  •                 case SYS_RUN:
  •                 {       
  •                         /* 系统处于界面调试模式 */
  •                         #if (Config_Comm_Mode == Comm_UI)       
  •                         {
  •                                 if(Flag.MC_RunStop == 0)        {BasePara_Init();}
  •                                 if(Fault_OverVoltage || Fault_UnderVoltage)        {u_Motor_Off();}       
  •                         }
  •                         #else
  •                         /* 电机运行以及调速控制 */
  •                         if(Time.Motor_Restart == 0)
  •                         {
  •                                 /* 故障刹车保护重启 */
  •                                 if(Fault_ShortCircuit)
  •                                 {
  •                                         Fault_ShortCircuit=0;
  •                                         EPWM_ResetFaultBrake();
  •                                 }               
  •                                
  •                                 /* 电压保护关机 */
  •                                 if(Fault_OverVoltage || Fault_UnderVoltage)       
  •                                 {                                       
  •                                         u_Motor_Off();
  •                                 }else if(Fault_Block){
  •                                                 Fault_Block=0;
  •                                                 u_Motor_On();
  •                                 }                                       
  •                                 else
  •                                 {
  •                                         /*用户控制代码:由客户按照实际应用自行处理,包括以下几点 */
  •                                         /* 1、电机运行使能:u_Motor_On(); */
  •                                         /* 2、电机停止:u_Motor_Off(); */
  •                                         /* 3、调速信号给定:u_Motor_Speed_Set(Basic.VCtr); */
  •                                         #if (0)
  •                                         if(Basic.VCtr < VCTRL_REF_L)
  •                                         {
  •                                                 u_Motor_Off();
  •                                         }
  •                                         else if(Basic.VCtr > VCTRL_REF_H)
  •                                         {
  •                                                 u_Motor_Speed_Set((Basic.VCtr>>2));
  •                                                 u_Motor_On();
  •                                         }
  •                                         #endif
  •                                 }
  •                         }       
  •                         #endif                       
  •                         break;
  •                 }       
  •                 /* 电机重启 */
  •                 case SYS_RESTART:
  •                 {       
  •                         u_Motor_Off();       
  •                         /* 重启间隔时间 */
  •                         Time.Motor_Restart = Motor_Restart_InvalTime*1000;
  •                         /* 故障次数超过限定次数不再重启 */
  •                         if(++Count.Motor_Restart >= Motor_Restart_Times)
  •                         {
  •                                 Count.Motor_Restart = Motor_Restart_Times;
  •                                 SYSTEM_STATE = SYS_WAIT;
  •                         }                                       
  •                         SYSTEM_STATE = SYS_RUN;        
  •                         MOTOR_STATE = MC_INIT;
  •                         break;
  •                 }       
  •                 /* 异常停机 */
  •                 case SYS_FAULT:
  •                 {
  •                         System_Modules_off();
  •                         break;
  •                 }
  •                 /* 等待上电重启 */
  •                 case SYS_WAIT:
  •                 {
  •                         System_Modules_off();               
  •                         Clear_Fault_Message();
  •                         Count.Motor_Restart = 0;
  •                         SYSTEM_STATE = SYS_RUN;
  •                         break;
  •                 }       
  •                 default:
  •                         break;               
  •         }
  • }
  • 复制代码

    1.jpg


    33.jpg


    接入电机测试OK!