К1921ВК01Т+lwip

32-разрядные микроконтроллеры разработки ОАО "НИИЭТ"

Модераторы: dav, bkolbov, pip, _sva_

Ответить
habr
Сообщения: 2
Зарегистрирован: 20 ноя 2019, 18:48
Предприятие: ИРЗ

К1921ВК01Т+lwip

Сообщение habr » 20 ноя 2019, 18:56

Зашил проект lwip_httpd на борд LDM-HELPER-K1921BK01T, На пинг не отвечает, на web-интерфейс не заходит.
Это готовый проект или нужно что то дописывать ?
Прошелся отладкой есть ошибка LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;);
MEMP_MAX==9
В проекте кроме IP ничего не менял.

bkolbov
Сообщения: 219
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВК01Т+lwip

Сообщение bkolbov » 22 ноя 2019, 13:03

Добрый день!

Проект полностью работоспособен и проверен на плате КФДЛ.441546.016Б (NIIET-EVAL-K1921VK01T).
Чтобы он заработал на вашей плате - необходимо адаптировать bsp.c файл. В частности фукнции BSP_LED_Init(), BSP_LED_On(), BSP_LED_Off(), BSP_LED_Toggle() и BSP_ETH_Init(), где осуществляется настройка и контроль необходимых портов ввода-вывода.

habr
Сообщения: 2
Зарегистрирован: 20 ноя 2019, 18:48
Предприятие: ИРЗ

Re: К1921ВК01Т+lwip

Сообщение habr » 26 ноя 2019, 17:26

Здравствуйте.
Отладкой посмотрел от ПК приходит ARP запрос, но ответа на него нет. Подозреваю что это связано с MII_TXCLK.
Когда беглым взглядом смотрел на код, не заметил, что распиновка примера от моей платы отличается только MII_TXCLK (у меня на PC10 вместо PB3).
Исправил.
Поскольку на порту С все альтернативные функции AF1 кроме одной , поэтому биты выбора AF1 == 0 и нам нужно выбрать только AF3 это 2<<2*10.
Но всеравно данные с платы не приходят на ПК, Не посмотрите что не так ?

Код: Выделить всё

void BSP_ETH_Init(void)
{
    uint32_t tmp;

    // MII_RXER   - PD10 (af1)
    // MII_RXDV   - PD9  (af1)
    // MII_RXD[3] - PD8  (af1)
    // MII_RXD[2] - PD7  (af1)
    // MII_RXD[1] - PD6  (af1)
    // MII_RXD[0] - PD5  (af1)
    // MII_RXCLK  - PD4  (af1)
    // MII_MDIO   - PD3  (af1)
    // MII_MDC    - PD2  (af1)
    // MII_COL    - PD1  (af1)
    // MII_CRS    - PD0  (af1)
    tmp = (1 << 10) | (1 << 9) | (1 << 8) | (1 << 7) | (1 << 6) | (1 << 5) |
          (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0);
    NT_GPIOD->ALTFUNCSET |= tmp;
    NT_COMMON_REG->GPIOPCTLD &= ~((3 << (2 * 10)) |
                                  (3 << (2 * 9)) |
                                  (3 << (2 * 8)) |
                                  (3 << (2 * 7)) |
                                  (3 << (2 * 6)) |
                                  (3 << (2 * 5)) |
                                  (3 << (2 * 4)) |
                                  (3 << (2 * 3)) |
                                  (3 << (2 * 2)) |
                                  (3 << (2 * 1)) |
                                  (3 << (2 * 0)));
    NT_COMMON_REG->GPIODEND |= tmp;
    [b]// MII_TXCLK  - PC10 (af3)[/b]	
    // MII_TXER   - PC5  (af1)
    // MII_TXEN   - PC4  (af1)
    // MII_TXD[3] - PC3  (af1)
    // MII_TXD[2] - PC2  (af1)
    // MII_TXD[1] - PC1  (af1)
    // MII_TXD[0] - PC0  (af1)
    tmp = [b](1 << 10)[/b] | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0);
    NT_GPIOC->ALTFUNCSET |= tmp;
    NT_COMMON_REG->GPIOPCTLC &= [b]2<<2*10;[/b]
    NT_COMMON_REG->GPIODENC |= tmp;



    //TODO: add PHY interrupt init						
    //NT_GPIOC->INTTYPECLR |= (1 << 5); // interrupt on level
    //NT_GPIOC->INTPOLCLR |= (1 << 5);  // negative int level
    //NT_GPIOC->INTENSET |= (1 << 5);   // enable int
    //NVIC_EnableIRQ(GPIOC_IRQn);

    NT_COMMON_REG->PER_RST0_bit.ETHRST = 0;
    NT_COMMON_REG->PER_RST0_bit.ETHRST = 1;
}

dav
Сообщения: 66
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: К1921ВК01Т+lwip

Сообщение dav » 26 ноя 2019, 17:55

Т.к. сигнал MII_TXCLK является входом и на выводе C.10 включается 3-ей альтернативной функцией, то необходимо на выводе с первой альтернативной функцией сигнала (вывод B.3) в регистре выбора альтернативной функции (GPIOPCTLB) для соответствующего вывода (№3) выбрать альтернативную функцию, отличную от первой, т.е. дополнительно в регистр GPIOPCTLB записать значение:
NT_COMMON_REG->GPIOPCTLB_bit.PIN3 = 1;

Ответить

Вернуться в «32-разрядные микроконтроллеры на ядре ARM Cortex»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость