mirror of
https://github.com/YuzuZensai/MCUFRIEND_kbv.git
synced 2026-01-31 14:57:48 +00:00
@@ -118,8 +118,15 @@ It also runs on NUCLEO-F103 and TEENSY3.2 with Sparkfun Adapter
|
||||
18. Please run LCD_ID_readreg.ino to verify your non-standard wiring. Paste the defines to a Forum message.
|
||||
|
||||
19. OPEN-SMART Shields have different wiring to regular Uno Shields:
|
||||
Edit mcufriend_shield.h: #define USE_SPECIAL
|
||||
Edit mcufriend_special.h: #define USE_OPENSMART_SHIELD_PINOUT
|
||||
Edit MCUFRIEND_kbv.cpp: #define SUPPORT_8352B
|
||||
Edit utility/mcufriend_shield.h: #define USE_SPECIAL
|
||||
Edit utility/mcufriend_special.h: #define USE_OPENSMART_SHIELD_PINOUT
|
||||
Edit MCUFRIEND_kbv.cpp: #define SUPPORT_8352B
|
||||
|
||||
20. OPEN-SMART Shields can not read LM75A on a Mega because there are no SDA/SCL pins next on AREF header.
|
||||
Uno: LM75A on pcb works. Difficult to add external I2C devices when Shield is plugged in.
|
||||
Uno: All use of SPI bus should use SPI.beginTransaction(), SPI.endTransaction()
|
||||
Leo: I do not support USE_OPENSMART_SHIELD_PINOUT_LEO
|
||||
Mega: Old boards do not have SDA/SCL on AREF header. Only external I2C devices on COMMS header
|
||||
Due: MAX809 Reset chip interferes with 3.3V RST on SPI header. Manual reset for Upload / Run.
|
||||
|
||||
CHANGE HISTORY: is now in "mcufriend_history.txt"
|
||||
|
||||
@@ -7,6 +7,14 @@
|
||||
#endif
|
||||
#if !defined(USE_SPECIAL) || defined (USE_SPECIAL_FAIL)
|
||||
|
||||
#define WR_ACTIVE2 {WR_ACTIVE; WR_ACTIVE;}
|
||||
#define WR_ACTIVE4 {WR_ACTIVE2; WR_ACTIVE2;}
|
||||
#define WR_ACTIVE8 {WR_ACTIVE4; WR_ACTIVE4;}
|
||||
#define RD_ACTIVE2 {RD_ACTIVE; RD_ACTIVE;}
|
||||
#define RD_ACTIVE4 {RD_ACTIVE2; RD_ACTIVE2;}
|
||||
#define RD_ACTIVE8 {RD_ACTIVE4; RD_ACTIVE4;}
|
||||
#define RD_ACTIVE16 {RD_ACTIVE8; RD_ACTIVE8;}
|
||||
|
||||
#if 0
|
||||
//################################### UNO ##############################
|
||||
#elif defined(__AVR_ATmega328P__) //regular UNO shield on UNO
|
||||
@@ -175,8 +183,7 @@
|
||||
PMC->PMC_PCER0 = (1 << ID_PIOB)|(1 << ID_PIOC);\
|
||||
PIOB->PIO_ODR = BMASK; PIOC->PIO_ODR = CMASK;\
|
||||
}
|
||||
#define write8(x) { write_8(x); WR_ACTIVE; WR_ACTIVE; WR_STROBE; }
|
||||
//#define write8(x) { write_8(x); WR_ACTIVE; WR_STROBE; WR_IDLE; }
|
||||
#define write8(x) { write_8(x); WR_ACTIVE2; WR_STROBE; }
|
||||
#define write16(x) { uint8_t h = (x)>>8, l = x; write8(h); write8(l); }
|
||||
#define READ_8(dst) { RD_STROBE; RD_ACTIVE; dst = read_8(); RD_IDLE; RD_IDLE; }
|
||||
#define READ_16(dst) { uint8_t hi; READ_8(hi); READ_8(dst); dst |= (hi << 8); }
|
||||
@@ -272,14 +279,14 @@ void write_8(uint8_t x)
|
||||
#warning regular UNO shield on a Teensy 3.x
|
||||
|
||||
#if defined(__MK20DX128__) || defined(__MK20DX256__) // Teensy3.0 || 3.2 96MHz
|
||||
#define WRITE_DELAY { WR_ACTIVE; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
||||
#define WRITE_DELAY { WR_ACTIVE2; }
|
||||
#define READ_DELAY { RD_ACTIVE8; RD_ACTIVE; }
|
||||
#elif defined(__MK64FX512__) // Teensy3.5 120MHz thanks to PeteJohno
|
||||
#define WRITE_DELAY { WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
||||
#define WRITE_DELAY { WR_ACTIVE4; }
|
||||
#define READ_DELAY { RD_ACTIVE8; }
|
||||
#elif defined(__MK66FX1M0__) // Teensy3.6 180MHz untested. delays can possibly be reduced.
|
||||
#define WRITE_DELAY { WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
||||
#define WRITE_DELAY { WR_ACTIVE8; }
|
||||
#define READ_DELAY { RD_ACTIVE16; }
|
||||
#else
|
||||
#error unspecified delays
|
||||
#endif
|
||||
@@ -402,20 +409,20 @@ void write_8(uint8_t x)
|
||||
/* AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_1; */ }
|
||||
|
||||
#elif defined(STM32F401xE)
|
||||
#define WRITE_DELAY { WR_ACTIVE; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
||||
#define WRITE_DELAY { WR_ACTIVE2; }
|
||||
#define READ_DELAY { RD_ACTIVE4; }
|
||||
#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN; }
|
||||
#define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1)
|
||||
|
||||
#elif defined(STM32F411xE)
|
||||
#define WRITE_DELAY { WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
||||
#define WRITE_DELAY { WR_ACTIVE2; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE4; RD_ACTIVE2; }
|
||||
#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN; }
|
||||
#define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1)
|
||||
|
||||
#elif defined(STM32F446xx)
|
||||
#define WRITE_DELAY { WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
||||
#define WRITE_DELAY { WR_ACTIVE8; }
|
||||
#define READ_DELAY { RD_ACTIVE16;}
|
||||
#define GPIO_INIT() { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN | RCC_AHB1ENR_GPIOBEN | RCC_AHB1ENR_GPIOCEN; }
|
||||
#define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1)
|
||||
|
||||
@@ -432,8 +439,8 @@ void write_8(uint8_t x)
|
||||
#define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1)
|
||||
|
||||
#elif defined(STM32L476xx)
|
||||
#define WRITE_DELAY { WR_ACTIVE; WR_ACTIVE; }
|
||||
#define READ_DELAY { RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; RD_ACTIVE; }
|
||||
#define WRITE_DELAY { WR_ACTIVE2; }
|
||||
#define READ_DELAY { RD_ACTIVE4; RD_ACTIVE; }
|
||||
#define GPIO_INIT() { RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN | RCC_AHB2ENR_GPIOBEN | RCC_AHB2ENR_GPIOCEN; }
|
||||
#define PIN_OUTPUT(port, pin) PIN_MODE2((port)->MODER, pin, 0x1)
|
||||
|
||||
|
||||
@@ -12,7 +12,9 @@
|
||||
//#define USE_DUE_16BIT_SHIELD //RD on PA15 (D24)
|
||||
//#define USE_BOBCACHELOT_TEENSY
|
||||
//#define USE_FRDM_K20
|
||||
//#define USE_OPENSMART_SHIELD_PINOUT //thanks Michel53
|
||||
//#define USE_OPENSMART_SHIELD_PINOUT_UNO
|
||||
//#define USE_OPENSMART_SHIELD_PINOUT_MEGA
|
||||
//#define USE_OPENSMART_SHIELD_PINOUT_DUE //thanks Michel53
|
||||
//#define USE_ELECHOUSE_DUE_16BIT_SHIELD //Untested yet
|
||||
//#define USE_MY_BLUEPILL
|
||||
|
||||
@@ -809,7 +811,7 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
||||
#define PIN_HIGH(port, pin) (port)->PIO_SODR = (1<<(pin))
|
||||
#define PIN_OUTPUT(port, pin) (port)->PIO_OER = (1<<(pin))
|
||||
|
||||
#elif defined(__SAM3X8E__) && defined(USE_OPENSMART_SHIELD_PINOUT) //OPENSMART shield on DUE
|
||||
#elif defined(__SAM3X8E__) && defined(USE_OPENSMART_SHIELD_PINOUT_DUE) //OPENSMART shield on DUE
|
||||
#warning USE_OPENSMART_SHIELD_PINOUT on DUE
|
||||
// configure macros for the control pins
|
||||
#define RD_PORT PIOA
|
||||
@@ -946,7 +948,7 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
||||
#define PIN_HIGH(port, pin) PASTE(port, _PSOR) = (1<<(pin))
|
||||
#define PIN_OUTPUT(port, pin) PASTE(port, _PDDR) |= (1<<(pin))
|
||||
|
||||
#elif defined(__AVR_ATmega328P__) && defined(USE_OPENSMART_SHIELD_PINOUT)
|
||||
#elif defined(__AVR_ATmega328P__) && defined(USE_OPENSMART_SHIELD_PINOUT_UNO)
|
||||
#define RD_PORT PORTC
|
||||
#define RD_PIN 0
|
||||
#define WR_PORT PORTC
|
||||
@@ -980,7 +982,7 @@ static __attribute((always_inline)) void write_8(uint8_t val)
|
||||
#define PIN_HIGH(p, b) (p) |= (1<<(b))
|
||||
#define PIN_OUTPUT(p, b) *(&p-1) |= (1<<(b))
|
||||
|
||||
#elif defined(__AVR_ATmega2560__) && defined(USE_OPENSMART_SHIELD_PINOUT)
|
||||
#elif defined(__AVR_ATmega2560__) && defined(USE_OPENSMART_SHIELD_PINOUT_MEGA)
|
||||
#define RD_PORT PORTF
|
||||
#define RD_PIN 0
|
||||
#define WR_PORT PORTF
|
||||
|
||||
Reference in New Issue
Block a user