Перейти к содержанию
    

SapegoAL

Свой
  • Постов

    2 807
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

1 Подписчик

Информация о SapegoAL

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

8 125 просмотров профиля
  1. stm32f747 + Ethernet (LwIP)

    Ну я это и писал. Только как-то криво получилось. Именно поэтому и нет верхней границы...
  2. stm32f747 + Ethernet (LwIP)

    А что там написано? Там написано, что после подачи питания и стабилизации частоты тактирования (X1) должно пройти минимум 167мс. Поэтому верхняя планка и не указана. Кроме того, нет регистра готовности... Есть достаточно сложная процедура power down/ power up. С контролем питания и контролем его нарастания.
  3. stm32f747 + Ethernet (LwIP)

    Ну по своей сути, что мы имеем? У нас есть ОС. Есть задача. Правильным является написание что-то вроде while(!Ready) osDelay(wtms); Правильно? Соответственно, в зависимости от значения wtms мы будем иметь две граничных ситуации... 1. Чем меньше мы сделаем задержку, тем больше будет загружен процессор и ему меньше времени остаётся на выполнение других задач по инициализации и т.п. 2. Чем больше мы сделаем задержку, тем больше будет задержка старта обслуживания ETH. Оптимизировать функцию выполняющуюся 1 раз при старте прибора нет смысла. При значении wtms > Max проверка флага не имеет смысла и всё вырождается в одну задержку. В этом случае иногда используют значение задержки значительно больше ожидаемого времени установления рабочего режима. Что я и сделал.
  4. stm32f747 + Ethernet (LwIP)

    Ну и преимущества будут небольшие. Задержка установлена в 0,5 сек. То есть при рестарте на 0,5 сек потенциально раньше начнёт работать Ethernet.... На таких девайсах это не принципиально
  5. stm32f747 + Ethernet (LwIP)

    Да. Всё правильно. Скорее всего инициализация PHY (DP83848) начиналась слишком быстро, а он ещё не вышел из сброса. Поставил задержку в начале задачи eth_init_task, и проблема решилась. Надо будет вообще всю периферию просмотреть. Даташиты перечитать. Всем огромное спасибо.
  6. stm32f747 + Ethernet (LwIP)

    Спасибо всем за ответы. Перепроверю, что смогу... Мысли дельные. Как минимум 2 комплекта работают. Тоже надо перепроверить. На предмет хитрого аппаратного хомута.
  7. stm32f747 + Ethernet (LwIP)

    Прошу всех прощения. Не чётко описал проблему. Итак: Проект значительный. Там куча всего. Включая внешнюю рам, флэш QSPI, 3 COM порта, Ethernet и прочее... Написан по мотивам другого проекта на основе 32f407. Существенные отличия QSPI + TFT + SD. Как надо работает SRAM + TFT + COM. Претензий нет. По QSPI какие-то отличия есть при работе из под отладчика и при автономной работе... Пока не разбирался. Так как при автономной работе всё работает как ожидалось. По Ethernet Наблюдается такая картина (на текущий момент): При запуске из-под отладчика работает всё как ожидалось. То есть плата пингуется и работает TCP/MODBUS. Работает DHCP. UDP не проверял - просто руки не дошли, но поскольку это всё перенесено с прошлого проекта, то думаю проблем не будет. Если я после запуска из-под stlink-а откидываю отладчик, то всё продолжает работать как надо без исключений. После рестарта процессора (выключаю и включаю питание). Всё работает как работало, за исключением Ethernet. Не проходит ping ну и соответственно не работают остальные протоколы. Хотя физика работает. Вижу светодиод LINK отрабатывает и второй моргает на пакеты... Такое ощущение, что ARP на начальном этапе как-то съедается и всё. Сеть не знает о существовании моего устройства. )) Буду сейчас возвращаться назад. Смотреть на каком этапе это произошло.. Но просто не могу понять. Один и тот же код... Что такого делает отладчик?
  8. stm32f747 + Ethernet (LwIP)

    Они (ST) попытались все эти замечания устранить. Обновления вышли в августе 23. Но что-то пошло не так... )) Меня больше интересует, какая разница при старте под дебагером и без оного? Код тот же.
  9. stm32f747 + Ethernet (LwIP)

    По ощущениям как-то очень недоволен как данная конструкция работает. Изначально проект ST из куба не запустился на демоплате. Нашли пример работающий... Прикрутили. В текущий момент ситуация выглядит так... Компилю проект и запускаю его на целевой плате (IAR/STLink). Всё прекрасно работает. Если отключить отладчик - продолжает прекрасно работать. Если после этого передёрнуть питание - не работает. Причём отваливается сразу ping. То есть где-то в самом низу... PHY по виду работает. LINK видит. Буду конечно ковыряться, но может кто-нибудь с таким сталкивался... Хоть наводку какую даст... Я что-то совсем туплю. В чём разница?
  10. У меня 407. Выпускается долго. Конденсаторы и кварц вполне бытовые. Уход незначителен. При запуске партии видно, что зависит от партии кварцев.. То есть никаких подводных камней не встречал. Если кварц SMD, то надо по доку на него посмотреть какой кондёр ставить. Бывает 15, 22, 7 - поэтому смотреть. Кварцы ставим Jauch. Китайские не применяем. Для того, чтобы устр-во калибровало само себя, у вас должен быть источник опорного сигнала. То есть либо образцовая частота, либо точное время. По-моему это понятно даже необразованному... ))
  11. dimka76, спасибо за подсказку. Да. Ping проходит теперь. Это действительно IGMP. Ещё раз спасибо. Времени по всему нет. Хочу к февралю на испытания, а там ещё процентов 30 написано. К июлю отгружать... ))
  12. Взял плату STM32F769-DISCO. Взял CubeF7 v1.17.1 от 14.07.23 Написано - обновили примеры для этой платы. Скомпилировал пример \STM32F769I-Discovery\Applications\LwIP\LwIP_HTTP_Server_Netconn_RTOS. Всё тоже, что и у меня. LINK появляется. PING не проходит. Напрочь. Попробовал на форуме задать вопрос. Ну я на ST зарегистрирован - не пускают. Неужели эти свои 5 примеров проверить сложно было?
  13. Так у них там ... #pragma location=0x2007C000 ETH_DMADescTypeDef DMARxDscrTab[ETH_RX_DESC_CNT]; /* Ethernet Rx DMA Descriptors */ #pragma location=0x2007C0A0 ETH_DMADescTypeDef DMATxDscrTab[ETH_TX_DESC_CNT]; /* Ethernet Tx DMA Descriptors */ Ну и, соответственно /* Configure the MPU as Device for Ethernet Descriptors in the SRAM2 */ MPU_InitStruct.Enable = MPU_REGION_ENABLE; MPU_InitStruct.BaseAddress = 0x2007C000; MPU_InitStruct.Size = MPU_REGION_SIZE_1KB; MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; MPU_InitStruct.IsBufferable = MPU_ACCESS_BUFFERABLE; MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; MPU_InitStruct.IsShareable = MPU_ACCESS_SHAREABLE; MPU_InitStruct.Number = MPU_REGION_NUMBER2; MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0; MPU_InitStruct.SubRegionDisable = 0x00; MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; То есть тут вроде бы не должно было быть подвдха
  14. STM32F767 не работает Ethernet

    Доброго времени суток. Вспоминаю как работал с STM32F407 и прям умиление берёт. 😀 Настолько камень предсказуемый, чётко и устойчиво работающий. Периферия вполне себе.. Ну и устройство на нём получилось супер. Теперь перехожу на 767. Косяков прям куча. И что напрягает, как то не спешат они их устранять. Косяк с выводом частоты часового кварца. Пишут неустранимый. На QSPI косячёк один описан, по второму я знатно потоптался, пока сообразил. Теперь Ethernet. Собрал - не работает. Взял Demo board 769I-DISCO скомпилил их проект - те же косяки. Даже ping не проходит. Есть у кого-нибудь рабочий пример с LwIP на 76х камень? PS: Можно на DISCO или EVAL
  15. Прошу прощения. Почитал DMA не работает на устройствах STM32H7 - STMicroelectronics Community. Исправил. Заработало
×
×
  • Создать...