4 years, 5 months ago.

UART1(PB_6, PB_7) not working on Arch Max board?

Hi All,

I have been trying to get UART1(PB_6, PB_7) on Arch Max board to work for a few hours, so far no progress. Can anyone offer some pointers?

The setup is like this: UART TX/RX pins are connected to FTDI RX/TX pins, with the following code running on Arch Max.

RawSerial radioPort(PB_6, PB_7);
void radioPortCallback() {
    radioPort.putc(radioPort.getc());
}

radioPort.baud(9600);
radioPort.attach(&radioPortCallback, Serial::RxIrq);

If I change UART pins to PD_5/PD_6, PC_6/PC_7, or PC_10/PC_11, the same setup works just fine. But I could never get PB_6/PB_7 to work.

I tried both Mbed-OS-2 and 5, none seems to make a difference as well.

What am I missing here?

Thanks.

Question relating to:

The Arch Max is an mbed enabled development board for rapid prototyping. It's based on a STM32F407VET6 microcontrolle with an ARM Cortex-M4F core running at 168MHz. It includes an open …

The problem seems to be in the pin marking. The Eagle files and PIN naming don't match the board I have, V1.1. The labeling on PCB for the connector PB_6&PB_7 on are inverted from the image provided by Seeed and also Eagle file. It is really unfortunate for Seeed to be so neglectful.

posted by Zhiyong Li 04 Nov 2019

I’m so sorry about this. Let me assign the person in charge of this issue internally. - Yoshi at Seeed

posted by Yoshihiro TSUBOI 05 Nov 2019

Hello Zhiyong,

Quote:

If I change UART pins to PD_5/PD_6, PC_6/PC_7, or PC_10/PC_11, the same setup works just fine.

Serial pins are defined in the PeripheralPins.h file (see also below), however I couldn't see pins PD_5/PD_6 and PC_10/PC_11 configured for UART. Moreover, I was not able to find pin PD_5 in the Seed Arch Max pinout picture. So I'm just wondering how could those pins work with the setup you described?

PeripheralPins.h

...

//*** SERIAL ***

const PinMap PinMap_UART_TX[] = {
    {PA_2,  UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
    {PA_9,  UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
    {PA_11, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
    {PB_6,  UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
    {PC_6,  UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
    {NC,    NC,     0}
};

const PinMap PinMap_UART_RX[] = {
    {PA_3,  UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART2)},
    {PA_10, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
    {PA_12, UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
    {PB_7,  UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_USART1)},
    {PC_7,  UART_6, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF8_USART6)},
    {NC,    NC,     0}
};

...
posted by Zoltan Hudak 07 Nov 2019

Those extra pins are defined in F407VG discovery board. They are identical except flash size.

posted by Zhiyong Li 07 Nov 2019

1 Answer

4 years, 5 months ago.

Hi,

There is already answer in the comment. Good that you have test other pins. In general you can test how PB_6 and PB_7 works just using them as normal digital output pins. DigitalOut out1(PB_6); DigitalOut out2(PB_7); Then you could test if they are controllable and the result is easy to measure using basic multimeter.

Regards, Pekka