Работа UART_0 - нет приёма сообщения

RUMBUFDSI

New member
Добрый день!
Имеется отладочная плата (https://tellur-el.ru/upload/iblock/ac0/r4rucl3gy3hbt0f9sw90cgoz8qmq20p6.pdf). Эта тема по сути попытка понять, что происходит в предыдущей из этой ветки.
Через Terminal, используя обычный USB-TTL преобразователь (схема на основе CH340G, типа такой: https://oshwlab.com/makmak19992542/ch340g-usb-to-rs232-ttl-module-schematic_ks), отправляю на МК набор байтов. Если я НЕ подключаю преобразователь к МК и смотрю логическим анализатором сигнал на TX преобразователя - всё ок, что я через терминал отправил, то и вижу в анализаторе.
Если я подключаю TX преобразователя к RX контроллера, сигнал не передаётся, на анализаторе полная тишина. Земли контроллера и преобразователя соединены, настройки пинов представлены ниже.
Подскажите, в чём может быть дело?
Настройки ног и периферии:
C:
void setup(void)
{
    PCC_InitTypeDef PCC_OscInit;
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    PCC_OscInit.OscillatorEnable = PCC_OSCILLATORTYPE_HSI32M | PCC_OSCILLATORTYPE_OSC32M | PCC_OSCILLATORTYPE_LSI32K;
    PCC_OscInit.FreqMon.OscillatorSystem = PCC_OSCILLATORTYPE_OSC32M;
    PCC_OscInit.FreqMon.ForceOscSys = PCC_FORCE_OSC_SYS_UNFIXED;
    PCC_OscInit.FreqMon.Force32KClk = PCC_FREQ_MONITOR_SOURCE_LSI32K;
    PCC_OscInit.AHBDivider = 0;
    PCC_OscInit.APBMDivider = 0;
    PCC_OscInit.APBPDivider = 0;
    PCC_OscInit.HSI32MCalibrationValue = 128;
    PCC_OscInit.LSI32KCalibrationValue = 128;
    PCC_OscInit.RTCClockSelection = PCC_RTC_CLOCK_SOURCE_LSI32K;
    PCC_OscInit.RTCClockCPUSelection = PCC_CPU_RTC_CLOCK_SOURCE_LSI32K;
    HAL_PCC_Config(&PCC_OscInit);
    HAL_MspInit();
    __HAL_PCC_GPIO_0_CLK_ENABLE();
    __HAL_PCC_UART_0_CLK_ENABLE();

    GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_9;// LED пины
    GPIO_InitStruct.Mode = HAL_GPIO_MODE_GPIO_OUTPUT;
    GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE;
    HAL_GPIO_Init(GPIO_0, &GPIO_InitStruct);

    GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6; //UART ножки
    GPIO_InitStruct.Mode = HAL_GPIO_MODE_SERIAL;
    GPIO_InitStruct.Pull = HAL_GPIO_PULL_NONE;
    HAL_GPIO_Init(GPIO_0, &GPIO_InitStruct);

    UART_Init(UART_0, (uint32_t)555, UART_CONTROL1_TE_M | UART_CONTROL1_RE_M | UART_CONTROL1_M_8BIT_M
    | UART_CONTROL1_RXNEIE_M, 0, UART_CONTROL3_OVRDIS_M);

    HAL_EPIC_Clear(0xFFFFFFFF); //чистим все флаги прерываний
    HAL_EPIC_MaskLevelSet(HAL_EPIC_UART_0_MASK);
    HAL_IRQ_EnableInterrupts();
}
 

kutukvpavel

New member
На плате NUKE UART0 разведён на преобразователь RS485. Он вам и держит RX контроллера. Переключите P1.14 на выход с высоким уровнем, это сигнал /RE преобразователя, и он отпустит RX.
 
Сверху