ShineLAN-X: Initiale Firmware + Hardware-Diagnose
- STM32F103RBT6 Firmware für Growatt ShineLAN-X - Bitbang-SPI (EthernetENC) auf Port C (PC6/PC7/PC8/PC9) - UART-Debug auf USART1 (PA9/PA10), Modbus temporär deaktiviert - SO-Aktivitätstest und ESTAT-Register-Scan bestätigen: ENC28J60 läuft (SO aktiv), SI/MOSI-Verbindung unterbrochen - Nächster Schritt: Pin 5 ENC28J60 nachlöten oder Bodge-Draht Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include "config.h"
|
||||
|
||||
// ============================================================
|
||||
// Bitbang-SPI für ENC28J60 auf PC6/PC7/PC8/PC9
|
||||
// ENC28J60 verwendet SPI Mode 0 (CPOL=0, CPHA=0)
|
||||
// ============================================================
|
||||
|
||||
static inline void eth_spi_init() {
|
||||
pinMode(ETH_SCK_PIN, OUTPUT); digitalWrite(ETH_SCK_PIN, LOW);
|
||||
pinMode(ETH_MOSI_PIN, OUTPUT); digitalWrite(ETH_MOSI_PIN, LOW);
|
||||
pinMode(ETH_MISO_PIN, INPUT);
|
||||
pinMode(ETH_CS_PIN, OUTPUT); digitalWrite(ETH_CS_PIN, HIGH);
|
||||
}
|
||||
|
||||
static inline void eth_cs_low() { digitalWrite(ETH_CS_PIN, LOW); }
|
||||
static inline void eth_cs_high() { digitalWrite(ETH_CS_PIN, HIGH); }
|
||||
|
||||
static inline uint8_t eth_spi_transfer(uint8_t out) {
|
||||
uint8_t in = 0;
|
||||
for (int8_t i = 7; i >= 0; i--) {
|
||||
digitalWrite(ETH_MOSI_PIN, (out >> i) & 1);
|
||||
digitalWrite(ETH_SCK_PIN, HIGH);
|
||||
in = (in << 1) | digitalRead(ETH_MISO_PIN);
|
||||
digitalWrite(ETH_SCK_PIN, LOW);
|
||||
}
|
||||
return in;
|
||||
}
|
||||
Reference in New Issue
Block a user