У меня под рукой странная проблема, я никогда ее раньше не видел. Тем не менее, я все еще пытаюсь определить проблему. У меня есть STM32H753VIT и сетевой контроллер LAN8742, подключенный к нему. Я запускаю LwIP в режиме NO-SYS. Он работает нормально только после холодного включения, но не после аппаратного сброса (кнопка или датчик ST-LINK). Он запускает простой эхо-сервер TCP. Если он работает, я могу проверить связь с ним, и он отвечает клиенту TCP.
Но после аппаратного сброса я больше не могу пинговать его, и он не отвечает как эхо-сервер. Я заметил, что зеленый светодиод (ссылка) на интерфейсе останется выключенным после сброса.
Я мог видеть, что функция LAN8742_Init успешно выполняется после аппаратного сброса, но больше не видит данных RX, доступных в функции low_level_input.
На Nucleo-H743ZI я запускаю тот же код, и он также работает после аппаратного сброса. Обратите внимание, что код немного отличается, так как отображение контактов немного отличается. Код хорошо работающего Nucleo-H743ZI: https://github.com/bkht/Nucleo-H743ZI_LAN8742_LwIP_NO-SYS Код для странного поведения STM32H753VIT: https://github.com/bkht/STM32H753VIT_LAN8742_LwIP_NO-SYS
NRST микроконтроллера подключается к nRST LAN8742A, а конденсатор емкостью 100 нФ используется для заземления. У меня есть переключатель сброса, и я пробовал подтягивающий резистор, ну не повезло. Я добавил кнопку сброса и обнаружил, что более длительный аппаратный сброс также не работает.
Я думаю в направлении тайминга или содержимого памяти. Кто-нибудь когда-нибудь видел такое поведение при запуске?
NVIC_SystemReset
). Если он длиннее, чем один вывод STM, вы можете позже столкнуться с проблемами в полевых условиях, когда, например, выполняете обновление прошивки и выполняете сброс программного обеспечения. - person Jacek Ślimok   schedule 22.03.2019