Freelemelectronic.com

Электроника без границ.

В процессе разработки электронных устройств зачастую требуется добавить возможность обмена данными с компьютером,например, для получения управляющих команд или сбора данных с удалённых устройств однимиз наиболее простых решений данной задачи является передача данных по сети Ethernet. В данной работе я решил использавать модуль Wiznet W5500 который с одной стороны будет подключенк сетевой карте компьютера с другой будет обмениваться данными с микроконтроллером по интерфейсу SPI. В качестве микроконтроллера был использован чип STM32f407VGT который рапологается на отладочной плате F4DISCOVERY. В этой работе будет представлен пример так называемой "обратнойпетли" или метод тестирования передачи сигнала между станциями с использованием протокола UDP. Компьютер используя программу написаную в LABVIEW будет отправлять некоторую символьную строку к микроконтроллеру который будет отсылать ее обратно. Для удобства тестирования к отладочной плате подключен USB-UART мост на микросхеме FT232R через который будет передаваться отладочная информация. При написании программы была использовани библиотека "ioLibrary" предоставляемая производителем чипа. Среда разработки Keil с библиотекой Hall от CUBE MX. W5500 запитан от источника питания 4DISCOVERY на 3.3v. На USB-UART мостике переставлен джампер на 3.3v.

На фото выше отображаны подключеные устройства. Конкретно какой пин куда обьяснять не буду это вы найдете запустив CUBE MX из архива к проекту. Скажу лишь что W5500 подключен к SPI2 а мост FT232R к USART2 платы F4DISCOVERY. Сам модуль W5500 никаких проблем не доставил, работает . Производитель оговаривает, что гарантированная скорость – 33,3 МГц SPI Timing однако затактировать перефирию SPI2 на Boud Rate более 21,0 MBits/s. у меня не получилось не позволил CUBE MX. И так подключим W5500 и FT232R к F4DISCOVERY подключаем Rj45 кабель в разьем компьютера, генерируем проект в CUBE MX и открываем Keil, компилируем проект и заливаем прощивку в F4DISCOVERY. Далее необходимо настроить сеть. Идем в "центр управления сетями и общим доступом" (ненастроеная сеть определяется как- "неопознанная") настраиваем ее как показанно на моем рисунке. Как видим настройки соответствуют строчкам кода в файле "my_function.с"

После того как мы создали сеть попробуем пропинговать адрес нашего модуля если все впорядке запустим программу "Simple UDP - Sender.vi" из папки с примерами и немного ее переработаем, добавим IP адрес удаленного порта блок для чтения возвращенных данных и разместим все контролы и индикаторы на фронтальную панель. Настройте адреса и порты источника и получателя как показано на рисунке. Программа будет отправлять строку в контроллер и получать от него эхо.

Ping.

Front panel.

Block diagram.

Для для отладки и контроля процесса передачи и обратного получения пакета данных запустим терминальную программу "Terminal v1.9b" и акулу "Wireshark" , стартанем "Simple UDP - Sender.vi" и наблюдаем отправку и получение пакетов. Библиотека "ioLibrary" и даташит на контроллер W5500 ограничивают длинну наших сообщений буфером в (DATA_BUF_SIZE 2048)байт который можно зарезервировать объемом в 1, 2, 4, 8 или 16 кбайт в файле "my_function.с" в массиве "uint8_t memsize[2][8]". Для тестовой передачи я использовал типовую фразу "Hello world!" длинной в 12 байт. Смотрим скриншоты ниже.

Terminal v1.9b.

Wireshark.

Программа для F4DISCOVERY не представсяет ни какой сложности. После инициализации модуля W5500 и сети в бесконечном цикле вызывается функция "loopback_udps()" с необходимыми параметрами, в этой функции происходит создание UDP сокета затем проверка наличия входных данных, чтение входных данных и их отправка обратно. Каждый раз при получении микроконтроллером пакета от компьютера на плате зажигается красный светодиод и гаснет при отправке пакета обратно, также это событие дублируется отправкой сообшений "Was receve message. Message was returned. " по USART через FT232R, по окончании передачи сокет не закрывается. Все эти действия описываются в файле #include "loopback.с" алгоритм работы основной функции "loopback_udps()" изображен на рисунке ниже.

Алгоритм.

Видео с работой устройства.

И как всегда архив с исходниками CUBE MX, KEIL исходники LabView не скомпилированы в EXE файл, корректируйте их и используйте по вашему усмотрению, проект создан в познавательных целях. Скачать здесь

You can contact the developers of the project freelemelectronic.com by e-mail:
freelimelectronic@gmail.com.