From d5dbdb685cd21518a98eba4dd131f25adda25e83 Mon Sep 17 00:00:00 2001 From: Martin Ayotte Date: Sun, 5 Jul 2015 10:15:33 -0400 Subject: [PATCH 1/2] fix HardwareSerial::begin by doing gpio_set_af_mode AF8 when devices are UART4 or UART5 --- STM32F4/cores/maple/libmaple/HardwareSerial.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/STM32F4/cores/maple/libmaple/HardwareSerial.cpp b/STM32F4/cores/maple/libmaple/HardwareSerial.cpp index a156770..f6fdcbb 100644 --- a/STM32F4/cores/maple/libmaple/HardwareSerial.cpp +++ b/STM32F4/cores/maple/libmaple/HardwareSerial.cpp @@ -94,8 +94,14 @@ void HardwareSerial::begin(uint32 baud) { const stm32_pin_info *rxi = &PIN_MAP[rx_pin]; #ifdef STM32F2 // int af = 7<<8; - gpio_set_af_mode(txi->gpio_device, txi->gpio_bit, 7); - gpio_set_af_mode(rxi->gpio_device, rxi->gpio_bit, 7); + if (usart_device == UART4 || usart_device == UART5) { + gpio_set_af_mode(txi->gpio_device, txi->gpio_bit, 8); + gpio_set_af_mode(rxi->gpio_device, rxi->gpio_bit, 8); + } + else { + gpio_set_af_mode(txi->gpio_device, txi->gpio_bit, 7); + gpio_set_af_mode(rxi->gpio_device, rxi->gpio_bit, 7); + } gpio_set_mode(txi->gpio_device, txi->gpio_bit, (gpio_pin_mode)(GPIO_AF_OUTPUT_PP | GPIO_PUPD_INPUT_PU | 0x700)); gpio_set_mode(rxi->gpio_device, rxi->gpio_bit, (gpio_pin_mode)(GPIO_MODE_AF | GPIO_PUPD_INPUT_PU | 0x700)); //gpio_set_mode(txi->gpio_device, txi->gpio_bit, (gpio_pin_mode)(GPIO_PUPD_INPUT_PU)); From 09fbe056625f1d015ff434474187fca8b6c0cc48 Mon Sep 17 00:00:00 2001 From: Martin Ayotte Date: Sun, 5 Jul 2015 17:13:01 -0400 Subject: [PATCH 2/2] fix Debugging print when different SPI is used --- STM32F4/libraries/arduino_uip/utility/Enc28J60Network.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F4/libraries/arduino_uip/utility/Enc28J60Network.cpp b/STM32F4/libraries/arduino_uip/utility/Enc28J60Network.cpp index 557e5a0..1b6b189 100644 --- a/STM32F4/libraries/arduino_uip/utility/Enc28J60Network.cpp +++ b/STM32F4/libraries/arduino_uip/utility/Enc28J60Network.cpp @@ -74,13 +74,13 @@ void Enc28J60Network::init(uint8_t* macaddr) #ifdef ENC28J60DEBUG Serial.println("ENC28J60::initialize / after initSPI()"); Serial.print("ENC28J60::initialize / csPin = "); - Serial.println(ENC28J60_CONTROL_CS); + Serial.println(SPI.nssPin()); Serial.print("ENC28J60::initialize / miso = "); - Serial.println(BOARD_SPI1_MISO_PIN); + Serial.println(SPI.misoPin()); Serial.print("ENC28J60::initialize / mosi = "); - Serial.println(BOARD_SPI1_MOSI_PIN); + Serial.println(SPI.mosiPin()); Serial.print("ENC28J60::initialize / sck = "); - Serial.println(BOARD_SPI1_SCK_PIN); + Serial.println(SPI.sckPin()); #endif selectPin = ENC28J60_CONTROL_CS; pinMode(selectPin, OUTPUT);