Полная версия этой страницы:
STM32F407 Ethernet
Ранее испорльзовал контроллеры STN32F107. Все было ОК. Теперь пытаюсь тоже самое запустить на F407. Столкнулся с проблемой, что не создается сокет. Программа заходит в бесконечный цикл в функци sys_error (ERROR_CODE code) по причине /* Out of TCP Sockets. */.
Собственно процедура такая:
Код
init_TcpNet ();
dhcp_disable ();
/* Setup and enable the SysTick timer for 100ms. */
SysTick->LOAD = (168000000 / 10) - 1;
SysTick->CTRL = 0x05;
SocketNumber = tcp_get_socket (TCP_TYPE_SERVER | TCP_TYPE_DELAY_ACK | TCP_TYPE_FLOW_CTRL | TCP_TYPE_KEEP_ALIVE, 0, 65535, tcp_callback);
if (SocketNumber != 0)
{
/* Start listening on TCP port DevEthInfo.CtrlPort */
tcp_listen (SocketNumber, PortNumber);
}
Подскажите в чем может быть дело? Спасибо.
Golikov A.
Jul 27 2015, 08:16
А МАК драйвер енумерацию и прочее прошел?
Цитата(Golikov A. @ Jul 27 2015, 11:16)

А МАК драйвер енумерацию и прочее прошел?
Проблема решилась увеличением числа сокетов. Однако раньше эта проблема не возникала. Интересно почему. Изначально было по 5 сокетов удп и тсп. Иеще 5 сессий по хттп. Увеличил число сокетов тсп до 10. Создался сокет сномером 6. А на что ушли остальные 5?
Хоть сокет и создался, но контроллер не пингуется. Связь с физикой есть, линк есть. Помигивает активность т.к. девай в локальной сети. Как разобраться с пингом? Спасибо.
Golikov A.
Jul 27 2015, 09:20
пройдитесь по сокетам поглядите в каких они состояниях, у них есть такой параметр, может яснее станет....
Цитата(Golikov A. @ Jul 27 2015, 12:20)

пройдитесь по сокетам поглядите в каких они состояниях, у них есть такой параметр, может яснее станет....
Как правильно дефайнами сконфигурировать выводы для 100-ногого F407 в файле ETH_STM32F4XX.C для MII? Может ноги не так сконфигурированы?
Действительно проблема была в конфигурации ног. Интересно, а кто кейлу драйвера пишет, они что предполагали?
Golikov A.
Jul 27 2015, 11:37
сами пишут вроде, может не тот кристалл выбрали? хотя ремапы ручечками....
Вот интересный участок кода.
Код
#if !defined (STM32F40XX) && !defined (STM32F427X) && !defined (STM32F429X)
/* #define STM32F40XX */ /*!< STM32F40xx/41xx Devices */
/* #define STM32F427X */ /*!< STM32F427x/437x Devices */
/* #define STM32F429X */ /*!< STM32F429x/439x Devices */
#endif
По идее нужно раскоментить то. что требуется. Я пробовал - кейл ругается. Тоже интересно почему.
А на счет драйвера так там некоторые ноги вообще не упомянуты (РА0 например) хотя в работе нужны. Просто удалил то их творчество
и написал заново. Все заработало сразу.
Хотел еще такой вопрос задать, делал кто создание нескольких сокетов в цикле? Может поделится кто чтоб мне время не терять. Спасибо.
Прошу подсказки в таком вопросе. Создал сокет. Коннект есть, данные в него приходят. При попытке отправить функция tcp_check_send отдает 0. В описани просто написано что сокет не готов отправлять данные. С чем это может быть связано? Девайс в локальной сети. tcp_get_state сообщает что коннект есть. Спасибо.
Елки, забыл что уже сталкивался с таким. Все, вопрос отпал. Все работает
Golikov A.
Jul 31 2015, 08:35
а ответ для страждущих? Буфера забились?
Опять вызывл из келлбека.
Столкнулся с ситуацией когда линк есть но активность не светится и связи нет. При этом физика читается и айди правильный. Что можно проверить чтоб выйти на причину? Сам софт рабочий. Предыдущие экземпляры работали. С этим конкретным экземпляром что-то не то и нужно понять что. Соплей вроде нет, все помыто. Физика RTL8201 а контроллер STM32F407. Библиотека кейловская. Драйвер переделанный под физику и рабочий (софт проверен). Подскажите куда смотреть. Спасибо.
Corvus
Apr 27 2016, 11:16
Я бы менял последовательно на компоненты, взятые с заведомо рабочей платы Rref - Кварц - PHY.
Хотелось бы как-то сузить круг подозрений. Ну например, регистры физики могут что-то сказать?
С проблемой разобрался. Непропай нашел. Теперь собственно пинга нет. Хотя с виду все правильно. Что можно проверить? Спасисбо.
Сергей Борщ
Apr 27 2016, 13:32
QUOTE (smk @ Apr 27 2016, 16:01)

С проблемой разобрался. Непропай нашел. Теперь собственно пинга нет.
Может быть еще один непропай, теперь на MII.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.