工具/软件:
您好:
我尝试使用驱动双极步进电机 DRV8818 消息流 STEP/DIR 从 ESP32-C6-DevKitC-1 。 我附上了原理图、如果有用、还可以共享少量固件。
消息
-
MCU/FW: ESP32-C6-DevKitC-1、PlatformIO (Espressif32 6.8.1)、 ESP-IDF 5.3.0 、3.3 V 逻辑
-
驱动器: TI DRV8818
-
VM(电机电源): 24 伏
-
检测电阻: 0.10Ω(每相位)
-
测得的 VREF: ~2.0V→I_TRIP calc≈Vref /(8·Rsense)= 2.0V /(8 0.10Ω)·≈ 2.5A
-
衰减: 混合
-
微步进: USM0/USM1 均固定为 GND ->全步进。
-
控制引脚(默认状态):
-
增强: 低电平(驱动器已启用)
-
SLEEPn: 高(唤醒)
-
RESETn: 高电平(保持高电平)
-
STEP/DIR: GPIO 18 和 19 启动
-

代码:
#include
#include “freertos/freertos.h"</s>“
#include “freertos/task.h"</s>“
#include “driver/gpio.h"</s>“
#include “esp_rom_sys.h"//“// esp_rom_delay_us()
#define PIN_STEP 18
#define PIN_DIR 19
static inline void step_pulses (int step、uint32_t half_period_us){
对于 (int i = 0;i < steps;++i){
GPIO_SET_LEVEL (PIN_STEP、1);
esp_rom_delay_us (half_period_us);
GPIO_SET_LEVEL (PIN_STEP、0);
esp_rom_delay_us (half_period_us);
}
}
void app_main (void){
// STEP 和 DIR ALS 输出
GPIO_CONFIG_t IO ={
.pin_bit_MASK =(1ULL << PIN_STEP)|(1ULL << PIN_DIR)、
.mode = GPIO_MODE_OUTPUT、
.pull_up_en = 0、
.pull_down_en = 0、
.intr_type = GPIO_INTR_DISABLE
};
GPIO_CONFIG (&IO);
while (1){
// Richtung 1.
GPIO_SET_LEVEL (PIN_DIR、1);
STEP_PULSES (200,5000);// 100Hz:5ms 高电平+ 5ms 低电平支持频率
vTaskDelay (PDMs_to_ticks (500));
// Richtung 2.
GPIO_SET_LEVEL (PIN_DIR、0);
step_pulses (200,5000);// wieder 100Hz
vTaskDelay (PDMs_to_ticks (800));
}
}
