§
|
> Использование сети Ethernet в проектах на базе МК |
Сеть Ethernet в настоящее время является одним из основных каналов обмена информацией в системах сбора и передачи данных. Для подключения устройств на базе микроконтроллеров (МК) к сети Ethernet существуют различные решения, от полностью готовых, с поддержкой основных сетевых протоколов "на борту” (модули от MOXA, Lantronix, микросхемы от WizNet), до гибких программно-аппаратных решений на базе ОС Linux.
Готовые модули подключаются к МК с помощью стандартного низкоскоростного интерфейса UART или SPI, либо параллельной шины МК. Это позволяет применять их совместно с любыми МК, включая распространенные 8-битные семейства (AVR, PIC, MCS-51). Недостатком данного решения является низкая скорость передачи данных, ограниченная скоростью интерфейса с МК, невозможность расширения функционала, изначально заложенного производителем.
Решения на базе Linux, наоборот, обладают высокой гибкостью, поддержкой всех существующих на сегодняшний день сетевых протоколов, открытостью для дальнейшего расширения. Данные решения требуют значительных ресурсов МК, оперативной памяти и высокоскоростного обмена с контроллерами Ethernet. Они прижились на 32-битных платформах Intel x86, ARM9, Cortex A8, где применение Linux стало стандартом де-факто. Система однократно собирается под конкретную аппаратную платформу и далее, требуется только загружать в нее пользовательские приложения для последующего исполнения. Пользовательское приложение при этом является отдельным программным модулем, использующим системные вызовы для доступа к периферии МК и сети, поскольку стек протоколов TCP/IP также входит в состав Linux.
Более простые и недорогие 32-битные МК (на ядре ARM7-TDMI, Cortex M3), также могут иметь на кристалле скоростной контроллер Ethernet, с возможностью прямого доступа к памяти (DMA), что позволяет обмениваться данными со скоростью, приближающейся к 100Мбит/с. Для таких МК тоже существуют сборки Linux, пригодные для использования, но, по некоторым причинам, Linux не стал общепринятой ОС в этом сегменте. В качестве операционной среды для таких МК обычно используется RTOS - многозадачное ядро реального времени (открытое или коммерческое), позволяющее выполнять параллельные процессы и организовывать взаимодействие между ними, но встречаются и проекты, выполненные разработчиками полностью на "голом” МК. Примерами RTOS могут служить открытые системы FreeRTOS, ScmRTOS, TNKernel, коммерческая uCOS/II. Такое ядро обычно не затрагивает работу с периферией МК, за исключением таймера и контроллера прерываний, в части обеспечения работы планировщика задач. Для работы с периферией разработчик может использовать библиотеки функций от производителей МК или сторонних разработчиков, "надстройки” для RTOS (наиболее распространенные RTOS имеют поддержку USB, стека TCP/IP и графического интерфейса GUI), а также собственные наработки. В отличие от приложений для Linux, приложения для RTOS являются, за небольшими исключениями, едиными файлами, содержащими все компоненты – ядро, библиотеки, обработчики прерываний, программный код пользователя и данные в виде образа памяти, загружаемого в МК при "прошивке”. То есть, ядро и библиотеки обычно поставляются в виде исходного кода, включаемого в состав пользовательского проекта. Периферия МК с одинаковым ядром, но разных производителей может существенно различаться. Распространенные ядра RTOS обычно имеют несколько вариантов (портов) для МК различных производителей и семейств, однако "надстройки” на текущий момент времени могут не иметь порта на необходимый МК, поэтому работа над новым проектом обычно начинается с создания единой операционной среды в которую приходится интегрировать все необходимые модули, обеспечивая их совместную работу. Далее рассмотрим пример реализации устройства с обменом по сети Ethernet на базе МК STM32F107 (Cortex M3).
§
|
> Архитектура контроллера Ethernet от STMicroelectronics. |
Для обмена пользовательской информацией по сети необходимо реализовать в проекте четыре нижних уровня модели OSI – физический, канальный, сетевой и транспортный. В составе МК STM32F107 интегрирован контроллер канального уровня Media Access Controller (MAC) - контроллер доступа к среде передачи данных, соответствующий стандарту IEEE 802.3-2002. В качестве среды передачи может использоваться витая пара (10Base-T, 100Base-TX) или оптоволоконный кабель (100Base-FX). Для соединения со средой передачи используется внешний приемопередатчик, реализующий физический уровень (PHY). Сетевой уровень (IP) и транспортный уровень (TCP) реализуются программно. Более подробно, про Ethernet-решения от STMicroelectronics можно прочитать в журнале "Новости электроники”: www.compeljournal.ru...pdf
Аппаратная часть устройства содержит МК STM32F107, тактируемый от кварцевого резонатора с частотой 25 МГц, микросхему приемопередатчика физического уровня (PHY) ST802RT1 и разъем J00-086NL. Особенностью ST802RT1 является использование трансформатора с коэффициентом 1,414:1. Именно такой трансформатор вместе с элементами защиты интегрирован в разъем J00-086NL. Для обмена между MAC и PHY используется интерфейс RMII, использующий 9 линий. Назначение линий интерфейса приведено в таблице 1:
В качестве источника сигнала REF_CLK используется выход PLL3 МК, программно подключенный к выводу MCO. Частота на выходе устанавливается, как F_PLL3=F_HSE/5*10 = 25/5*10= 50МГц. Другие источники тактовой частоты при работе в режиме RMII не требуются. Принудительное переключение PHY в режим RMII при подаче питания осуществляется подтяжкой вывода 38 к шине питания +3,3В через резистор 2,2K. Вывод 9 PHY (PWRDWN/MDINT) используется для генерации прерываний и заведен на линию GPIO МК. Это дает возможность отслеживать подключение и отключение кабеля и выполнять связанные с этими событиями действия в пользовательской программе. Подключение остальных выводов PHY произведено в соответствии с рекомендациями, приведенными в описании ST802RT1. Макет устройства собран на базе отладочной платы STM32FQS1. Отличия от оригинала заключаются в установке МК STM32F107RCT6 вместо STM32F103RCT6 (спасибо компании STMicroelectronics за pin-to-pin совместимость!) и кварцевого резонатора 25МГц вместо 8МГц. В связи с тем, что STM32F107 не имеет контроллера SDIO, сокет для SD-Card не устанавливается. Микросхема ST802RT1 и разъем размещены на макетном поле платы и подключены к выводам МК навесным монтажом. При работе с контроллером Ethernet на данной плате становится невозможным использование UART2 / кнопки S2 / разъема LCD, так как они подключены к выводам МК, задействованным для интерфейса RMII.
В следующей части будет рассказано об адаптации
к описанному устройству
демо-проекта AN3102 от ST Microelectronics на базе открытого стека TCP/IP lwIP, разработанного Adam Dunkels. Отладочная плата послужила макетом для разработки опытного образца промышленного устройства содержащего, помимо интерфейса Ethernet, GSM и GPS модули M12 и L10 от Quectel, интерфейсы USB и RS-485, а также память типа FRAM. Подробнее смотрите схемы:
|