Как проверить все контакты платы STM32?

part-testing

У меня есть плата управления SKR PRO с мертвым (закороченным, раскаленным) основным процессором. Я заказал новую плату, это была моя ошибка.

Регуляторы напряжения работают, поэтому я заказал у STM сменный процессор STM32F407 (на самом деле бесплатный образец) и починю плату в свободное время.

Как я могу проверить все контакты новой платы, чтобы убедиться, что она работает, когда я продам ее/когда буду использовать для своего следующего проекта?

Я думаю, что достаточно было бы программно включать и выключать каждый вывод, а затем использовать осциллограф или светодиод для проверки результата. Контакты, которые имеют специальные функции (нагреватель, вентилятор, МОП-транзистор в целом), будут протестированы соответствующим образом, но мне все еще нужен пульсирующий вход.

, 👍1


2 ответа


Лучший ответ:

0

Хорошей отправной точкой может быть использование одной из двух версий тестового кода RAMPS1.4_TestCode.pde, с которым связан этот поток в RepRapWiki, тестовый код RAMPS 1.4:

Пожалуйста, обратите внимание, что он также будет включать и выключать ваш нагревательный слой и hotend экструдера, помимо перемещения всех двигателей и мигания светодиодов. Отключите их, если вы не хотите нагреваться во время тестирования.

Существует более поздняя версия, в этом посте в той же теме, которая также проверяет отдельные шаги шагового двигателя:

#define X_STEP_PIN 54
#define X_DIR_PIN 55
#define X_ENABLE_PIN 38
#define X_MIN_PIN 3
#define X_MAX_PIN 2

#define Y_STEP_PIN 60
#define Y_DIR_PIN 61
#define Y_ENABLE_PIN 56
#define Y_MIN_PIN 14
#define Y_MAX_PIN 15

#define Z_STEP_PIN 46
#define Z_DIR_PIN 48
#define Z_ENABLE_PIN 62
#define Z_MIN_PIN 18
#define Z_MAX_PIN 19

#define E_STEP_PIN 26
#define E_DIR_PIN 28
#define E_ENABLE_PIN 24

#define Q_STEP_PIN 36
#define Q_DIR_PIN 34
#define Q_ENABLE_PIN 30

#define SDPOWER -1
#define SDSS 53
#define LED_PIN 13

#define FAN_PIN 9

#define PS_ON_PIN 12
#define KILL_PIN -1

#define HEATER_0_PIN 10
#define HEATER_1_PIN 8
#define TEMP_0_PIN 13 // ANALOG NUMBERING
#define TEMP_1_PIN 14 // ANALOG NUMBERING

void setup() {
  pinMode(FAN_PIN , OUTPUT);
  pinMode(HEATER_0_PIN , OUTPUT);
  pinMode(HEATER_1_PIN , OUTPUT);
  pinMode(LED_PIN , OUTPUT);

  pinMode(X_STEP_PIN , OUTPUT);
  pinMode(X_DIR_PIN , OUTPUT);
  pinMode(X_ENABLE_PIN , OUTPUT);

  pinMode(Y_STEP_PIN , OUTPUT);
  pinMode(Y_DIR_PIN , OUTPUT);
  pinMode(Y_ENABLE_PIN , OUTPUT);

  pinMode(Z_STEP_PIN , OUTPUT);
  pinMode(Z_DIR_PIN , OUTPUT);
  pinMode(Z_ENABLE_PIN , OUTPUT);

  pinMode(E_STEP_PIN , OUTPUT);
  pinMode(E_DIR_PIN , OUTPUT);
  pinMode(E_ENABLE_PIN , OUTPUT);

  pinMode(Q_STEP_PIN , OUTPUT);
  pinMode(Q_DIR_PIN , OUTPUT);
  pinMode(Q_ENABLE_PIN , OUTPUT);

  digitalWrite(X_ENABLE_PIN , LOW);
  digitalWrite(Y_ENABLE_PIN , LOW);
  digitalWrite(Z_ENABLE_PIN , LOW);
  digitalWrite(E_ENABLE_PIN , LOW);
  digitalWrite(Q_ENABLE_PIN , LOW);
}


void loop () {

  // if (millis() %1000 <500)
  // digitalWrite(LED_PIN, HIGH);
  // else
  // digitalWrite(LED_PIN, LOW);

  // if (millis() %1000 <300) {
  // digitalWrite(HEATER_0_PIN, HIGH);
  // digitalWrite(HEATER_1_PIN, LOW);
  // digitalWrite(FAN_PIN, LOW);
  // } else if (millis() %1000 <600) {
  // digitalWrite(HEATER_0_PIN, LOW);
  // digitalWrite(HEATER_1_PIN, HIGH);
  // digitalWrite(FAN_PIN, LOW);
  // } else {
  // digitalWrite(HEATER_0_PIN, LOW);
  // digitalWrite(HEATER_1_PIN, LOW);
  // digitalWrite(FAN_PIN, HIGH);
  // }



  if ( millis() % 60000 < 30000) {
    digitalWrite(X_DIR_PIN , HIGH);
    digitalWrite(Y_DIR_PIN , HIGH);
    digitalWrite(Z_DIR_PIN , HIGH);
    digitalWrite(E_DIR_PIN , HIGH);
    digitalWrite(Q_DIR_PIN , HIGH);
    digitalWrite(HEATER_0_PIN, LOW);
    digitalWrite(FAN_PIN, HIGH);
    digitalWrite(HEATER_1_PIN, LOW);
    digitalWrite(LED_PIN, HIGH);

  }
  else {
    digitalWrite(X_DIR_PIN , LOW);
    digitalWrite(Y_DIR_PIN , LOW);
    digitalWrite(Z_DIR_PIN , LOW);
    digitalWrite(E_DIR_PIN , LOW);
    digitalWrite(Q_DIR_PIN , LOW);
    digitalWrite(HEATER_0_PIN, HIGH);
    digitalWrite(FAN_PIN, LOW);
    digitalWrite(HEATER_1_PIN, HIGH);
    digitalWrite(LED_PIN, LOW);

  }

  digitalWrite(X_STEP_PIN , LOW);
  digitalWrite(Y_STEP_PIN , LOW);
  digitalWrite(Z_STEP_PIN , LOW);
  digitalWrite(E_STEP_PIN , LOW);
  digitalWrite(Q_STEP_PIN , LOW);

  delay (200);

  digitalWrite(X_STEP_PIN , HIGH);
  digitalWrite(Y_STEP_PIN , HIGH);
  digitalWrite(Z_STEP_PIN , HIGH);
  digitalWrite(E_STEP_PIN , HIGH);
  digitalWrite(Q_STEP_PIN , HIGH);

  delay (200);

}

Поскольку ваша плата не является RAMPS, вам, вероятно, придется изменить некоторые определения#, чтобы соответствовать вашей плате, но это должно быть простое упражнение по поиску и замене.


,

0

Ну, у меня возникли некоторые проблемы с партией плат STM32, где некоторые работают, а некоторые нет. Я пытаюсь понять то же самое. Первоначальный план-простая плата с разъемом для микро и несколькими светодиодами, надеюсь, их не 64, и встроить в нее простую прошивку, которая просто проверяет все графические процессоры, но я боюсь, что теста может быть недостаточно.

,

Удалось ли вам когда-нибудь придумать прошивку для тестирования вашей платы? Это просто мысль, но вы могли бы использовать мультиплексор, чтобы уменьшить количество требуемых светодиодов, или (возможно) вместо этого использовать форму [Charlieplexing](https://en.wikipedia.org/wiki/Charlieplexing)., @Greenonline