PWM frequency: 50Hz
High level time for full throttle: 2ms
High level time for zero throttle: 1ms
Brushless ESC calibration process:
// 50Hz 20000div 0.001ms/div
// 1ms ~ 2ms <=> 1000 ~ 2000
void esc_calibrate()
{
u8 i;
u16 j;
uint8_t buff[16];
LOGI("Step 1. Push the throttle to the max\n");
// Channel_X(TIM2,MOTOR1_PWMCH,5000); //油门推到最大
TIM3->CCR3 = 2000;
LOGI("Step 2. Power up the ESC, waiting for two beeps and goto next step ASAP\n");
// UartGetByte(USART1); //等待上电
while (1) {
int len = SEGGER_RTT_Read(0, buff, 16);
if (len && buff[0] == 'a') {
break;
}
}
LOGI("Step 3. Push the throttle to min, calibration's after three beeps\n");
// Channel_X(TIM2,MOTOR1_PWMCH,2000); //油门推到最小
TIM3->CCR3 = 1000;
LOGI("Step 4. Test\n");
// UartGetByte(USART1); //等待上电
while (1) {
int len = SEGGER_RTT_Read(0, buff, 16);
if (len && buff[0] == 'a') {
break;
}
}
for(j=800;j<1100;j++)
{
LOGI("%d ",j);
// Channel_X(TIM2,MOTOR1_PWMCH,i); //油门推到最小
TIM3->CCR3 = j;
delay_ms(20);
}
delay_ms(5000);
TIM3->CCR3 = 1000;
while(1);
}