ESP32串口监视器异常:TMC2209驱动通信测试无输出
ESP32连接TMC2209后串口监视器无输出问题
我是新手,正在尝试将ESP32模块与TMC2209驱动连接,使用janelia-arduino的TMC2209库进行测试。运行库中的波特率测试示例后,VSCode的PlatformIO串口监视器中看不到任何输出。以下是我的PlatformIO配置、测试代码,以及串口监视器截图:

PlatformIO配置
[env:nodemcu-32s] platform = espressif32 board = nodemcu-32s framework = arduino lib_deps = janelia-arduino/TMC2209@^9.0.6 monitor_speed = 115200
测试代码
#include <Arduino.h> #include <TMC2209.h> // 本示例不适用于无硬件串口的Arduino板,比如Uno、Nano和Mini。 // 更多细节参考: // https://www.arduino.cc/reference/en/language/functions/communication/serial/ HardwareSerial & serial_stream = Serial1; const long SERIAL_BAUD_RATE = 115200; const long SERIAL1_BAUD_RATE_COUNT = 10; const long SERIAL1_BAUD_RATES[SERIAL1_BAUD_RATE_COUNT] = { 500000, 250000, 115200, 57600, 38400, 31250, 28800, 19200, 14400, 9600 }; const uint8_t SUCCESSIVE_OPERATION_COUNT = 3; const int DELAY = 2000; // 实例化TMC2209 TMC2209 stepper_driver; uint8_t serial1_baud_rate_index = 0; const int RX_PIN = 3; const int TX_PIN = 1; void setup() { Serial.begin(SERIAL_BAUD_RATE); } void loop() { long serial1_baud_rate = SERIAL1_BAUD_RATES[serial1_baud_rate_index++]; //stepper_driver.setup(serial_stream, SERIAL_BAUD_RATE, TMC2209::SERIAL_ADDRESS_0, RX_PIN, TX_PIN); //stepper_driver.setup(serial_stream,serial1_baud_rate); stepper_driver.setup(serial_stream, serial1_baud_rate, TMC2209::SERIAL_ADDRESS_1, RX_PIN, TX_PIN); if (serial1_baud_rate_index == SERIAL1_BAUD_RATE_COUNT) { serial1_baud_rate_index = 0; } bool test_further = false; Serial.println("*************************"); Serial.print("serial1_baud_rate = "); Serial.println(serial1_baud_rate); if (stepper_driver.isSetupAndCommunicating()) { Serial.println("步进驱动器已设置并通信正常!"); test_further = true; } else { Serial.println("步进驱动器未设置或通信异常!"); } if (test_further) { uint32_t microstep_sum = 0; for (uint8_t i=0; i<SUCCESSIVE_OPERATION_COUNT; ++i) { microstep_sum += stepper_driver.getMicrostepsPerStep(); } if (microstep_sum > 0) { Serial.println("连续读取测试通过!"); } else { Serial.println("连续读取测试失败!"); } uint8_t itc_begin = stepper_driver.getInterfaceTransmissionCounter(); for (uint8_t i=0; i<SUCCESSIVE_OPERATION_COUNT; ++i) { stepper_driver.disable(); } uint8_t itc_end = stepper_driver.getInterfaceTransmissionCounter(); if (itc_begin != itc_end) { Serial.println("连续写入测试通过!"); } else { Serial.println("连续写入测试失败!"); } } Serial.println("*************************"); Serial.println(); delay(DELAY); }
内容的提问来源于stack exchange,提问作者peetman
相关产品推荐
相关产品推荐

