Page 2 of 2

Re: Thunderpack STM32L072xx

Posted: Tue Sep 22, 2020 12:07 pm
by razvitm
I'm happy to report that all 5 serial ports are working in Arduino on a STM32L072 on a breakout PCB without external oscillator or quarts using the Discovery LRWAN1 board with a small modification of one of the core's file. The question is if it can be done from the sketch rather than modifying one of the core files?
Later Edit: It works without modifying the core.
Just copy paste the modified code from the modified "PeripheralPins.c" above Setup() in arduino and it takes effect, it works without modifying the core.
//above setup
#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_TX[] = {
{PA_0, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)},
// {PA_2, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)},
// {PA_2, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
{PA_9, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)},
//this one used originally and works {PA_14, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)},
{PA_14, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
// {PB_3, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART5)}, // Not available on board
{PC_12, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USART5)},
{PB_6, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
{PB_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)}, // Not available on board WORKS OK
// {PB_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_LPUART1)}, // Not available on board
// {PC_1, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, // LoRa dedicated pin
{NC, NP, 0}
};
#endif

#ifdef HAL_UART_MODULE_ENABLED
WEAK const PinMap PinMap_UART_RX[] = {
// {PA_1, USART4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)}, // LoRa dedicated pin
// {PA_3, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)},
// {PA_3, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
{PA_10, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)},
// this one original{PA_13, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)},
{PA_15, USART2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)}, // Not available on board
// {PB_4, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART5)}, // Not available on board
{PD_2, USART5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART5)},
{PB_7, USART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
// {PB_10, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_LPUART1)}, // Not available on board
{PB_11, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)}, // Not available on board
// {PC_0, LPUART1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, // Not available on board
{NC, NP, 0}
};
#endif
HardwareSerial SerialLP1(LPUART1);
HardwareSerial Serial(USART1);
HardwareSerial Serial2(USART2);
HardwareSerial Serial4(USART4);
HardwareSerial Serial5(USART5);
void setup(){
Serial.begin(9600);//serial and serial1 are the same port
SerialLP1.begin(9600);
Serial2.begin(9600);
Serial4.begin(9600);
Serial5.begin(9600);
}
void loop() {
Serial.println("this is port serial");
SerialLP1.println("this is port serialLP1");
Serial2.println("this is port serial2");
Serial4.println("this is port serial4");
Serial5.println("this is port serial5");
delay(500);
}
P.S. UART support enabled, no serial (selected in board menu)

Re: Thunderpack STM32L072xx

Posted: Tue Sep 22, 2020 1:37 pm
by fpiSTM
You have the answer. As you can see the PinMap array are weak so simply redefine it at sketch level.
Soon all Alternative pins will be available so no need to comment except to save space.

Re: Thunderpack STM32L072xx

Posted: Thu Oct 08, 2020 12:06 pm
by razvitm
Why can I use all the serial ports with the Discovery L072 board but I can't get all the 5 serial ports to work on the PX-HER0 or the THUNDERPACK boards?
What am I missing? Are they not enabled in some files in their respective Variants folder?
The reason I'm asking is because all 5 serial ports and SPI work on the Discovery board but i2c doesn't work on the discovery board, but i2c works on the PX-HER0.
I mean instanciating the serial ports works on all 3 boards but only with discovery I get actual data coming out of the pins, on the other two, only 1 or 2 serial ports work, the rest of them are dead when i scope the tx pins.

Re: Thunderpack STM32L072xx

Posted: Thu Oct 08, 2020 12:24 pm
by fpiSTM
As said all is dependent to the PeripheralPins.c.
For PX_HERO not all the USART are available. Choice of the variant submitter.

Re: Thunderpack STM32L072xx

Posted: Thu Oct 08, 2020 2:19 pm
by razvitm
But if I modify the PeripheralPins.C to include all the ports, possibly copy this from the discovery board, don't I have to set peripheral clocks for the other serial ports in order for them to work?

Re: Thunderpack STM32L072xx

Posted: Thu Oct 08, 2020 5:11 pm
by fpiSTM
Redefine peripheralPins.c at sketch level and instantiate them as described in the wiki as explained earlier in this topic...