РадиоКот >Статьи >

Теги статьи:

Канал связи на W5500 и stm32f103.

Автор: Игорь Иванович Печкин
Опубликовано 07.09.2023
Создано при помощи КотоРед.

Канал связи на W5500 и stm32f103.
Часто в своих устройствах на микроконтроллерах требуется передать информацию в компьютер, и получить информацию от него, для этого можно использовать разные интерфейсы COM порт, USB интерфейс, Ethernet. Com порт довольно просто организовать взаимодействие, но не очень удобен. USB раньше использовал его, но с выходом Win10 пришлось от него отказаться, проблема с неподписанными драйверами. Поэтому пришлось попробовать сделать канал связи на W5500 и stm32f103. В сети подобных проектов много и нет ничего, чтоб можно было повторить (на разных сайтах есть отрывочные сведения, но нет полного рабочего проекта и нужной элементной базы). Поэтому предлагаю свой проект, он основан на проекте LOOPBACK UDP W5500 с сайта http://freelimelectronic.com, если бы не он то я не понял бы как это работает. Он сделан на W5500 и stm32f407. К счастью у меня оказалась 32f407 и программа скомпилировалась и заработала. Для меня, т.к. я не программист и не очень хорошо знаю Си, не хватало в качестве инструмента клиента UDP ( для отправки пакетов UDP) и сервера UDP ( для получения пакетов UDP). Данные инструменты прилагаю, а также хотелось попробовать с микроконтроллером stm32f103 на плате Blue pill ( как на очень дешевой и распространенyой W5500-250руб. STM32F103-150руб. с Алиэкспресс). Протокол UDP оказался очень надежным и довольно быстрым у меня получилась скорость отправки от W5500 1.6 Mb/Cek. Использовал SPI без DMA (пока необходимости не возникло). Гонял отправку сутки, ошибок не обнаружено. Коллега используя DMA достиг скорости 57 бит.сек (ссылка на ютубе https://www.youtube.com/watch?v=CK2OSQE0XZ8). Можете посмотреть.
Также попробовал сделать на STM32f401 скорость примерно такая же, попробовал увеличить частоту SPI до 42Мгц. Скорость изменилась незначительно. Все работает надежно.
Передача информации в компьютер и обратно для своих устройств на W5500 и stm32f103.
Для сборки первоначальной использовал STM32CubeMX как очень простой в использовании и понимании инструмент, далее в Keil uVision5.
Для реализации работы данного проекта необходимо перестроить свою сеть. Установить на своем компьютере IP адрес 192.168.7.119, маску 255.255.255.0, устройство имеет IP адрес 192.168.7.1.
Перед началом работы можно проверить настройку своего компа, для этого необходимо запустить Сервер с (IP адрес 192.168.7.119 и порт 3003) а затем клиента на этом же компе и вы увидите прием пакетов Сервером(работает с выводом в консоль). При этом Брандмауэр попросит разрешить соединение, надо разрешить, если не разрешите связи не будет. Потом придется искать как разрешить. Схема соединения следующая:
W5500   STM32F103
1 +3,3v    +3,3v
2 N/C        --
3 MISO    B14
4 GND     GND
5 MOSI    B15
6 N/C       --
7 SCS()   B11(переназначено)
8 N/C       --
9 SCLK    B13
10 N/C     --

Дополнительно выведен UART на A2-- TX UART, B4--Led для отладки, катод к земле.
После программирования и старта на UART выводится информация о настройке W5500, если не надо, то можете не подключать UART. Можете проверить работу с командной строки командой ping 192.168.7.1 должен быть ответ. ********Картинки не получилось вставить, можете скачать файл в формате Word/.**********

 

.

При этом STM32F103-W5500 тупо передает то, что помещено в буфер после передачи зацикливаемся и повторяем , здесь увидите скорость передачи при работе SPI без DMA, если есть желание увеличить скорость передачи надо копать в сторону SPI с DMA. Принимаем пакеты на сервер. Для этого запускаем программу сервер

Прием сервером :
Первые 10 байт значения пакета выводятся на консоль, и отсчитываются принятые пакеты

При необходимости изменить адреса IP надо поправить в файле "my_function.c" строка 59, в 62 строке адрес шлюза (если шлюза нет можно ввести свой адрес). Буфер для передачи использовал byf_TX[30] файл "my_function.с" стр.55, можно увеличить до размера примерно 1,5кбайта чтоб пакет не фрагментировался. Код довольно грязный , но рабочий, делайте с ним что, хотите на свое усмотрение, прием описан в файле "loopback.с" в функции loopback_udps. Если что то, не понятно постараюсь ответить. Модули W5500 есть в двух вариантах большой и маленький работают одинаково. Все есть на алиэкспресе. Благодарю http://freelimelectronic.com, без него ни в зуб ногой. Собирал на макетной плате подобной как в исходнике. Проект для STM32CubeMX , Keil-5 прилагается


Файлы:
Текст статьи
Клиент
Сервер
ссылка на исходники


Все вопросы в Форум.