CH32V307VCT6 development board

Uživatelský avatar
Caster
Příspěvky: 494
Registrován: 11 zář 2019, 09:02

Re: CH32V307VCT6 development board

Příspěvek od Caster » 26 led 2026, 20:57

To ještě nemusí znamenat, že je deska vadná.

U CH32V307 to nejčastěji bývá jedna z těchto věcí:
  1. Běží, ale blikáš na špatných pinech (LED nejsou na PB8/PB9 ani na 57/58, nebo nejsou vůbec připojené na MCU pin jako „user LED“).
  2. Program se nespustí (špatná varianta/variant file pro desku, jiný linker script/boot režim, reset vektor mimo, watchdog/clock init problém).
  3. Napájení/BOOT režim (board se naprogramuje, ale po resetu neběží z flash kvůli BOOT strapům, nebo je potřeba „NRST“/reset line, nebo běží v jiném režimu).
  4. Upload jde do flash, ale CPU je pořád „halt“ / resetované (méně časté, ale u některých debug nastavení se to stává – typicky když je core držené debuggerem).
  5. LED jsou řízené PHY/RJ45 a ne MCU (některé desky mají link/activity LEDky čistě z Ethernet magnetiky/PHY, MCU je nepřepíná).
Než to označíme za vadnou desku, udělejme test, který nepotřebuje správné piny LED a dá nám 100% odpověď „CPU běží / neběží“:

Test 1: „panic toggler“ – přepni co nejvíc pinů

Tenhle sketch zkusí v loopu rychle překlápět spoustu GPIO pinů (PA0..PA15, PB0..PB15, PC0..PC15, PD0..PD15 – co půjde). Když máš na desce aspoň jednu LED připojenou na jakýkoliv GPIO, obvykle začne blikat/měnit jas. A i když ne, můžeš si na libovolný pin píchnout multimetrem nebo logickou sondou.

Kód: Vybrat vše

#pragma execution_character_set("utf-8")
#include <Arduino.h>

// Pomocná funkce: zkus nastavit pin jako output a přepnout
static inline void try_toggle(int pin)
{
  pinMode(pin, OUTPUT);
  digitalWrite(pin, !digitalRead(pin));
}

void setup()
{
  // žádný Serial, žádná LED, jen čisté GPIO přepínání
}

void loop()
{
  // Projedeme hodně pinů. Některé můžou být neexistující -> core je většinou ignoruje.
  // Pokud by to padalo, řekni a zúžíme seznam podle počtu pinů na desce.
  for (int i = 0; i < 200; i++)
  {
    // PA
#ifdef PA0
    try_toggle(PA0); try_toggle(PA1); try_toggle(PA2); try_toggle(PA3);
    try_toggle(PA4); try_toggle(PA5); try_toggle(PA6); try_toggle(PA7);
    try_toggle(PA8); try_toggle(PA9); try_toggle(PA10); try_toggle(PA11);
    try_toggle(PA12); try_toggle(PA13); try_toggle(PA14); try_toggle(PA15);
#endif
    // PB
#ifdef PB0
    try_toggle(PB0); try_toggle(PB1); try_toggle(PB2); try_toggle(PB3);
    try_toggle(PB4); try_toggle(PB5); try_toggle(PB6); try_toggle(PB7);
    try_toggle(PB8); try_toggle(PB9); try_toggle(PB10); try_toggle(PB11);
    try_toggle(PB12); try_toggle(PB13); try_toggle(PB14); try_toggle(PB15);
#endif
    // PC
#ifdef PC0
    try_toggle(PC0); try_toggle(PC1); try_toggle(PC2); try_toggle(PC3);
    try_toggle(PC4); try_toggle(PC5); try_toggle(PC6); try_toggle(PC7);
    try_toggle(PC8); try_toggle(PC9); try_toggle(PC10); try_toggle(PC11);
    try_toggle(PC12); try_toggle(PC13); try_toggle(PC14); try_toggle(PC15);
#endif
    // PD (ne všechny CH32V307 mají PD piny vyvedené)
#ifdef PD0
    try_toggle(PD0); try_toggle(PD1); try_toggle(PD2); try_toggle(PD3);
    try_toggle(PD4); try_toggle(PD5); try_toggle(PD6); try_toggle(PD7);
    try_toggle(PD8); try_toggle(PD9); try_toggle(PD10); try_toggle(PD11);
    try_toggle(PD12); try_toggle(PD13); try_toggle(PD14); try_toggle(PD15);
#endif

    delay(10);
  }
}

Jak vyhodnotit
  • Pokud se rozbliká cokoliv na desce → CPU běží, jen jsme neovládali správné LED piny.
  • Pokud pořád nic → je velká šance, že program neběží (nebo deska nemá žádnou LED na GPIO a nemáš čím měřit).
Vyfoť také horní a spodní stranu desky a dej sem fotky.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host