【极海APM32F035评估板测评】+开箱测试
这篇文章是关于 APM32F035 系列-电机开发板的测评,包含了硬件和软件分析、测试效果以及使用感受。
总的来说,这款开发板在硬件和软件方面都表现出色,为学习和开发电机驱动提供了便利。
极海 APM32F035 开发板是一款基于 APM32F035 微控制器的开发板,主要用于嵌入式系统的开发和学习。以下是对极海 APM32F035 开发板的使用测评:
1. 外观和包装:
- 开发板采用小巧紧凑的设计,方便携带和使用。
- 包装简洁,包含了开发板、文档和相关资料。
2. 硬件特性:
- APM32F035 微控制器具有高性能和低功耗的特点。APM32F035x8T7 微控制器工作时的环境温度范围为:-40℃~+105℃(温度传感
器在-40℃~105℃工作,精度为 3℃),电压范围为:2.0~3.6V,多个省电模式保
证了低功耗应用的要求。
- 开发板提供了丰富的外设接口,如 UART、SPI、I2C 等,方便扩展和连接其他外部设备。
-硬件方面,该开发板使用外部 12~72V DC电源供电,经过开关电源降压输出 12V、5V,三端稳压输出 3.3V。其中 12V 电压输出给到 Gata driver IC 供电,3.3V 给到主控 MCU APM32F035,三相桥堆直接使用输入电压供电。此外,该开发板还带有 USB 转串口,方便进行 PID 调试数据打印,预留接口也可以使用 CAN 总线。
3. 软件支持:
- 提供了详细的文档和示例代码,有助于快速上手和开发。
- 支持 Keil、IAR 等常见的开发环境,方便进行软件开发和调试。
- 软件方面,该开发板使用极海官方提供的例程:APM32F035_Lv_HallFOC_V2.2,并提供了技术指导文件。项目整体代码框架分为四层:用户层、外设驱动层、电机控制驱动层、电机算法层。用户只需要根据电机参数更改程序中电机配对对应的宏定义,并按照指导手册进行参数调试即可。
4. 功能和性能:
- 开发板的功能较为全面,可用于各种嵌入式应用的开发,如物联网、工业控制等领域。
- 性能表现稳定,能够满足一般的嵌入式系统需求。
- 后期会做出相应产品 进行更多压力测试
5. 学习和教育价值:
- 对于学习嵌入式系统的初学者来说,极海 APM32F035 开发板是一个不错的选择。
- 可以通过该开发板了解微控制器的工作原理、外设接口的使用等知识。
-并且在未来会有高压版本 更多的应用环境。
对于学习电机控制 带来了很多数据
6. 性价比:
- 该开发板的价格相对较为亲民,性价比较高。
7.在测试效果方面:使用了滑板轮毂电机参数进行调试,转速稳定 ,换项良好。该开发板在程序封装方面非常强大,使得电机驱动的学习变得更加容易。同时,得到了极海工程师的技术支持,解决了遇到的问题。
后期可能会配合其他外设进行多功能调试。
#include "main.h"
#include "dev_include.h"
#include <stdio.h>
#include <string.h>
#include "m0cp.h"
#include "hardware.h"
#include "systick.h"
#include "user_function.h"
#include "StateMachine.h"
#include "BLDC_SensorLess.h"
TIMFlagType TIMFlag;
Motor_TypeDef Motor_1st;
int16_t M1FaultID, M1FaultID_Record;
stc_motor_ramp_cal_t Motor_stcRampCal;
uint8_t bNewDIRKey;
uint8_t bOldDIRKey;
uint8_t bBrakeKey = 0;
uint8_t bSwitchFlag = 0;
/*******************************************************************************
* Function Name : Interrupt_Init
* Description : Interrupt priority initialization
*
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void Interrupt_Init(void)
{
/* Configure one bit for preemption priority */
SCB->AIRCR = (u32)0x05FA0500;
/* Enable the ADC Interrupt */
NVIC_EnableIRQ(ADC_COMP_IRQn);
NVIC_SetPriority(ADC_COMP_IRQn,0);
NVIC_EnableIRQ(TMR1_BRK_UP_TRG_COM_IRQn);
NVIC_SetPriority(TMR1_BRK_UP_TRG_COM_IRQn,1);
NVIC_EnableIRQ(SysTick_IRQn);
NVIC_SetPriority(SysTick_IRQn,2);
// ADC->STS &= ~(u32)(0x070C); //ADC_FLAG_EOC
TMR1->STS &= (u16)0xFFFE;
TMR1->STS &= (u16)0xFF7F;
}
/*!
* @brief Main program
*
* @param None
*
* @retval None
*
*/
int main(void)
{
__disable_irq();
Systick_Init(SystemCoreClock / 1000);
/* Initialize motor control parameters */
Init_Parameter(&Motor_1st);
Board_Init();
//Initial direction determination
bNewDIRKey = GPIO_ReadInputBit(GPIOC,GPIO_PIN_13);
bOldDIRKey = bNewDIRKey;
Motor_1st.BLDC.u8Direction = bNewDIRKey;
/* Initialize interrupts */
Interrupt_Init();
__enable_irq(); //Enable all interrupts
/*Ö÷Ñ»· */
while (1)
{
//Get key value status in real time
bNewDIRKey = GPIO_ReadInputBit(GPIOC,GPIO_PIN_13); //PC13 Direction·½Ïò°´¼ü
bBrakeKey = GPIO_ReadInputBit(GPIOC,GPIO_PIN_14); //PC14 LOCKËø³µ°´¼ü
if(bBrakeKey == 0)
{
eM1_RunSubState = RunState_Brake;
variable_reset(&Motor_1st);
}
if(bOldDIRKey != bNewDIRKey)
{
bSwitchFlag = 1;
}
bOldDIRKey = bNewDIRKey;
//ÂýËÙ»·Ö´Ðж¯×÷ÈçÏ£º
if(Motor_1st.USER.bSlowLoopFlag)
{
if(bSwitchFlag == 1)
{
//¼Ç¼µ±Ç°µÄÐýÅ¥¹éÒ»»¯ºóµÄÊý¾Ý£¬Í¬Ê±½øÐнµËÙ
Motor_1st.USER.RP.Out --;
//ËٶȽµËÙµ½0ºó¿ªÆô»»Ïà
if(0 == Motor_1st.USER.RP.Out)
{
Motor_1st.BLDC.u8Direction = bNewDIRKey;
bSwitchFlag = 0;
}
}else
{
//Ìí¼ÓÂýËÙ»·µÄËٶȿØÖÆÒÔ¼°ramp´¦Àíº¯ÊýµÈ
CalcNormalization((Motor_1st.USER.s16VspCmd>>3),&Motor_1st.USER.RP);
}
/* Slow Loop Statemachine */
s_STATE[eM1_MainState]();
Motor_1st.USER.bSlowLoopFlag = 0;
}
}
}
8. 总结:
极海 APM32F035 开发板是一款功能齐全、性能稳定、价格实惠的开发板,适合嵌入式系统的学习和开发。不过,在使用过程中可能会遇到一些技术问题,需要参考官方文档或寻求技术支持。希望以上的测评对你有所帮助!
极海APMF103 控制板视频