diff --git a/utility/mcufriend_shield.h b/utility/mcufriend_shield.h index db5ea8d..7347ea7 100644 --- a/utility/mcufriend_shield.h +++ b/utility/mcufriend_shield.h @@ -9,6 +9,8 @@ #define RD_ACTIVE16 {RD_ACTIVE8; RD_ACTIVE8;} #define WR_IDLE2 {WR_IDLE; WR_IDLE;} #define WR_IDLE4 {WR_IDLE2; WR_IDLE2;} +#define RD_IDLE2 {RD_IDLE; RD_IDLE;} +#define RD_IDLE4 {RD_IDLE2; RD_IDLE2;} #if defined(USE_SPECIAL) #include "mcufriend_special.h" @@ -418,7 +420,7 @@ void write_8(uint8_t x) #define WRITE_DELAY { WR_ACTIVE8; } //120MHz #define IDLE_DELAY { WR_IDLE2;WR_IDLE; } #define READ_DELAY { RD_ACTIVE16;} -#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN; } +#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIODEN | RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIOFEN; } #define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1) #elif defined(STM32F303xE) @@ -444,7 +446,7 @@ void write_8(uint8_t x) #define WRITE_DELAY { WR_ACTIVE8; } //180MHz #define IDLE_DELAY { WR_IDLE2;WR_IDLE; } #define READ_DELAY { RD_ACTIVE16;} -#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN; } +#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIODEN | RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIOFEN; } #define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1) #elif defined(STM32F446xx) @@ -456,10 +458,10 @@ void write_8(uint8_t x) #elif defined(STM32F767xx) #warning DELAY macros untested yet -#define WRITE_DELAY { WR_ACTIVE8;WR_ACTIVE8; } //216MHz -#define IDLE_DELAY { WR_IDLE4;WR_IDLE; } -#define READ_DELAY { RD_ACTIVE16;RD_ACTIVE16;} -#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN; } +#define WRITE_DELAY { WR_ACTIVE8;WR_ACTIVE2; } //216MHz +#define IDLE_DELAY { WR_IDLE2;WR_IDLE; } +#define READ_DELAY { RD_ACTIVE16;RD_ACTIVE16;RD_ACTIVE4;} +#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOCEN | RCC_AHB1ENR_GPIODEN | RCC_AHB1ENR_GPIOEEN | RCC_AHB1ENR_GPIOFEN; } #define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1) #elif defined(STM32L053xx) @@ -484,7 +486,7 @@ void write_8(uint8_t x) #warning DELAY macros untested yet #define WRITE_DELAY { WR_ACTIVE2; } //80MHz #define READ_DELAY { RD_ACTIVE4; RD_ACTIVE; } -#define GPIO_INIT() { RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN | RCC_AHB2ENR_GPIOBEN | RCC_AHB2ENR_GPIOCEN; } +#define GPIO_INIT() { RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN | RCC_AHB2ENR_GPIOCEN | RCC_AHB2ENR_GPIODEN | RCC_AHB2ENR_GPIOEEN | RCC_AHB2ENR_GPIOFEN; } #define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1) #else @@ -663,7 +665,7 @@ void write_8(uint8_t x) #define write8(x) { write_8(x); WRITE_DELAY; WR_STROBE; IDLE_DELAY; } #define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); } -#define READ_8(dst) { RD_STROBE; READ_DELAY; dst = read_8(); RD_IDLE; RD_IDLE; } +#define READ_8(dst) { RD_STROBE; READ_DELAY; dst = read_8(); RD_IDLE2; RD_IDLE; } #define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); } //################################### ESP32 ##############################