27
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «МАГНИТОГОРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМ. Г.И. НОСОВА»
ДИПЛОМНЫЙ ПРОЕКТ
Разработка универсальной микропроцессорной системы сбора сигналов с заданными параметрами
ЗАДАНИЕ
Тема: Разработка универсальной микропроцессорной системы сбора сигналов с заданными параметрами
Исходные данные к работе:
1) результаты прохождения преддипломной практики;
2) техническое задание на разработку универсальной микропроцессорной системы сбора данных;
3) структурные схемы известных систем детектирования шлака в струе металла;
4) техническая документация на контроллеры STM32F2xx;
5) стандарт UDP протокола.
Перечень вопросов, подлежащих разработке в дипломном проекте:
1) анализ функциональных возможностей платы TE-STM32F207;
2) разработка программного обеспечения для настройки периферии контроллера STM32F207;
3) применение известного TCP стека для реализации технического задания.
Графическая часть:
1) элементы системы детектирования шлака на конвертере;
2) элементы системы детектирования шлака на МНЛЗ;
3) вид чувствительного элемента вибрационной системы детектирования шлака;
4) внешний вид модуля TE-STM32F207;
5) архитектура микроконтроллера STM32F207;
6) характеристики модуля TE-STM32F207;
7) алгоритм работы микроконтроллера;
8) листинг программы настройки выводов общего назначения;
9) листинг программы настройки АЦП;
10) листинг программы настройки ПДП;
11) листинг программы настройки таймера.
РЕФЕРАТ
контроллер плата программное обеспечение
Данный дипломный проект, темой которого является разработка универсальной микропроцессорной системы сбора сигналов, включает в себя страницы. В проекте приведено рисунков и таблиц, слайдов. При разработке было использовано литературных источников.
Микроконтроллер, вывод общего назначения, состояния сигналов, аналогово-цифровой преобразователь, прямой доступ к памяти, таймер, UDP, прерывание, Ethernet.
Целью проекта является разработка универсальной микропроцессорной системы сбора сигналов со следующими характеристиками: 8 каналов, частота опроса 10 кГц, Ethernet интерфейс, микроконтроллер STM32F207.
В первой главе рассмотрен в общем виде процесс производства стали, описаны известные способы детектирования шлака, выполнен анализ поставленной задачи, определена возможность её реализации и перечень работ, необходимых для её выполнения.
Во второй главе рассмотрены характеристики периферийных устройств контроллера и определены режимы их работы, необходимые для выполнения технического задания. Разработано программное обеспечение для модуля TE-STM32F207, основанном на микроконтроллере STM32F207VGT6, позволяющее применять данную плату для любой системы детектирования шлака, описанной в данной работе.
В третье главе рассмотрены нормы безопасности необходимые к соблюдению при проектировании и реализации данного проекта.
В четвертой главе был произведен анализ технико-экономических показателей и обоснование экономической целесообразности принятых в проекте решений.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
В металлургии одной из проблем на пути повышения качества производимого продукта, является проблема обнаружения шлака в струе металла, переливаемого из одной емкости в другую (из конвертора или печь-ковша в сталь-ковш, из сталь-ковша в промковш, из промковша в кристаллизатор).
В большинстве случаев обнаружение шлака в струе металла происходит визуально оператором, контролирующим процесс. Результат в данном случае сильно зависит от квалификации оператора, и, зачастую, условия процесса (марка шлака и др.) не позволяют точно определить момент проникновения шлака даже опытному оператору.
Существуют несколько методов автоматического определения проникновения шлака в струю металла. Наиболее широко применяются электромагнитный, вибрационный и инфракрасный метод.
Раннее обнаружение шлака и его своевременная отсечка позволяют добиться следующего:
· Уменьшение затрат алюминия.
· Увеличение срока службы футеровки ковша и шиберного механизма.
· Уменьшение затрат на шлакоотсекающие устройства.
· Улучшение качества металла.
В настоящее время на ОАО «ММК» и ОАО «Северсталь» проводятся исследования по возможности и эффективности применения электромагнитного и вибрационного способов детектирования шлака на различных стадиях технологического процесса производства сталей. Для выполнения этих исследований требуется разработка системы сбора данных, которая позволяет реализовать один из методов автоматического определения проникновения шлака в струю металла.
Работа включает в себя следующие этапы:
1. Оценка существующих методов автоматического определения проникновения шлака в струю металла, для определения параметров системы.
2. Оценка микроконтроллера, предоставленного для реализации данной системы.
3. Разработка алгоритма, обеспечивающего работу микропроцессора в соответствии с определенными параметрами.
4. Написание программного обеспечения по составленному алгоритму.
5. Подготовка краткого руководства по эксплуатации и настройке конечного устройства.
ГЛАВА 1. АНАЛИЗ ИЗВЕСТНЫХ МЕТОДОВ ОТСЕЧКИ ШЛАКА В ТЕХНОЛОГИЧЕСКОМ ПРОЦЕССЕ ПРОИЗВОДСТВА СТАЛЕЙ
1.1 Шлаки сталеплавильных процессов
Роль шлаков в процессе производства стали исключительно велика. Шлаковый режим, определяемый количеством и составами шлака, оказывает большое влияние на качество готовой стали, стойкость футеровки и производительность сталеплавильного агрегата. Шлак образуется в результате окисления составляющих части шихты, из оксидов футеровки печи, флюсов и руды. По свойствам шлакообразующие компоненты можно разделить на кислотные (SiO2; P2O5; TiO2; и др.), основные (CaO; MgO; FeO; MnO и др.) и амфотерные (Al2O3; Fe2O3; Cr2O3; и др.) оксиды. Важнейшими компонентами шлака, оказывающими основное влияние на его свойства, являются оксиды SiO2 и CaO.
Шлак выполняет несколько важных функций в процессе выплавки стали:
1. Связывает все оксиды (кроме СО), образующиеся в процессе окисления примесей чугуна. Удаление таких примесей, как кремний, фосфор и сера, происходит только после их окисления и обязательного перехода в виде оксидов из металла в шлак. В связи с этим шлак должен быть надлежащим образом подготовлен для усвоения и удержания оксидов примесей;
2. Во многих сталеплавильных процессах служит передатчиком кислорода из печной атмосферы к жидкому металлу;
3. В мартеновских и дуговых сталеплавильных печах через шлак происходит передача тепла металлу;
4. Защищает металл от насыщения газами, содержащимися в атмосфере печи.
Изменяя состав шлака, можно отчищать металл от таких вредных примесей, как фосфор и сера, а также регулировать по ходу плавки содержание в металле марганца, хрома и некоторых других элементов.
Для того, чтобы шлак мог успешно выполнять свои функции, он должен в различные периоды сталеплавильного процесса иметь определенный химический состав и необходимую текучесть (величина обратная вязкости). Эти условия достигаются использованием в качестве шихтовых материалов плавки расчетных количеств шлакообразующих -- известняка, извести, плавикового шпата, боксита и других.
1.2 Влияние шлака на качество процесса
Одной из проблем на пути повышения качества производимого продукта, является проблема обнаружения шлака в струе металла, переливаемого из одной емкости в другую (из конвертора или печь-ковша в сталь-ковш, из сталь-ковша в промковш, из промковша в кристаллизатор).
В качестве примера, можно привести влияние шлака, попадающего из конвертера в сталь ковш на основные показатели качества процесса:
· Толстый слой шлака на поверхности металла вызывает образование твердой корки, которая мешает проведению дополнительных операций по обработке (разогреву) металла в сталь-ковше;
· Высокий уровень FeO и MnO в шлаке приводит к высокому общему содержанию кислорода в стали. Неустойчивые оксиды в шлаке реагируют с алюминиевыми и другими добавками, что приводит к обеднению сплава
· Большое количество алюминия, требующееся из-за наличия оксидов, приводит к образованию включений оксида алюминия (Al2O3), которые засоряют выходной канал и шиберный затвор сталь-ковша;
· Фосфор, находящийся в шлаке, попадает в сталь во время подготовки (разогрева) сталь-ковша и ухудшает свойства стали;
· Находящийся в шлаке оксид железа (FeO) реагирует с огнеупорными материалами и разрушает их.
Шлак, попадающий в промковш на МНЛЗ (машина непрерывного литья заготовок) влияет на показатели качества аналогично конвертерному. Исходя из этого, можно сказать, что уменьшение количества шлака, пропущенного через выпускное отверстие ковша, может существенно сократить издержки производства и улучшить качество металла.
В большинстве случаев обнаружение шлака в струе металла происходит визуально оператором, контролирующим процесс. Так, например, при переливе металла из конвертора в сталь-ковш оператор, управляющий сливом конвертера, наблюдает за струей металла и по изменению ее цвета, а также по изменению шума, создаваемого падающей струей, судит о проникновении шлака и поворачивает конвертер в исходное, вертикальное положение. Результат в данном случае сильно зависит от квалификации оператора, и зачастую условия процесса (марка шлака и др.) не позволяют точно определить момент проникновения шлака даже опытному оператору.
1.3 Известные методы детектирования шлака в струе металла
Существуют несколько методов автоматического определения проникновения шлака в струю металла. Наиболее широко применяются электромагнитный, вибрационный и инфракрасный метод.
Электромагнитный метод предполагает установку в зоне струи металла чувствительного элемента, состоящего из одной или нескольких обмоток. Обмотка возбуждения создает электромагнитное поле и при изменениях в струе металла, связанные с проникновением в нее шлака, происходят изменения параметров поля, которые фиксируются измерительной обмоткой. Основным недостатком данного метода является необходимость располагать чувствительный элемент в горячей зоне (особенно в конверторе), что накладывает на него специальные требования. В настоящее время эта проблема решена при использовании специальных жаропрочных материалов. По данным фирмы Amepa за последние 10 лет системы обнаружения шлака, построенные с применением электромагнитного метода, установлены на 58 конвертерах, 7 электропечах и 1758 сталь-ковшах.
Применение инфракрасного метода возможно лишь при открытом течении струи (как в конвертере). Чувствительная камера воспринимает излучение струи в инфракрасном волновом диапазоне и по изменению этого излучения можно судить о проникновении в струю шлака. Измерения по этому методу требовательны к чистоте воздушного пространства между камерой и струей металла, что довольно трудно обеспечить.
Электромагнитный способ детектирования шлака является наиболее эффективным и поэтому наиболее часто применяется.
Основные преимущества электромагнитного метода состоят в следующем:
· высокая точность и быстродействие измерений;
· независимость измерений от акустических и визуальных помех;
· работа, как при открытой, так и при закрытой разливочной трубой струе металла
1.4 Описание электромагнитной системы детектирования шлака
Система предназначена для автоматического определения момента проникновения шлака в струю жидкого металла, при сливе его из конвертера в сталь-ковш. При обнаружении шлака система выдает звуковой сигнал для принятия решения об окончания слива.
Функции системы
ь измерение сигнала содержания шлака в струе металла;
ь выдача звукового сигнала при появлении в струе шлака;
ь измерение угла наклона конвертера при сливе металла;
ь измерение времени слива металла;
ь автоматическая диагностика работы системы;
ь запись технологических архивов.
На рисунке 1 представлено расположение оборудования системы детектирования шлака на конвертере: 1 - датчик шлака (два чувствительных элемента), 2 - кросс-блок с датчиком угла наклона конвертера, 3 - устройство обработки сигналов, 4 - пульт оператора, 5 - станция технологического мониторинга.
Рисунок 1 - Структура системы детектирования шлака
На рисунке 1 показано размещение датчика шлака и электронного оборудования системы на конвертере. Чувствительные элементы датчика шлака, встроенные в футеровочные кирпичи располагаются в летке конвертера. Кабель соединения датчика шлака с электронным оборудованием прокладывается по опорному кольцу конвертера и выводится через цапфу. На выходном конце цапфы конвертера установлен кросс-блок со встроенным датчиком угла наклона конвертера. В помещении поста оператора конвертера расположено электронное оборудование и пульт оператора. В помещении автоматики располагается станция технологического мониторинга, которая предназначена для питания, настройки системы и записи технологических архивов.
На рисунке 2 представлена схема размещения двух чувствительных элементов в летке конвертера. 1 - чувствительные элементы, 2 - кольца выпускного канала, 3 - футеровочный материал, 4 - броня летки, 5 - дно летки.
Рисунок 2 - Схема размещения чувствительных элементов в летке конвертера
Датчик шлака состоит из двух одинаковых чувствительных элементов. На один из них подается переменное напряжение для создания электромагнитного поля в области струи металла. Струя металла влияет на величину и форму этого поля. При попадании в струю металла шлака, параметры электромагнитного поля меняются. Эти изменения фиксирует второй чувствительный элемент, сигнал которого усиливается, преобразуется в цифровую форму и обрабатывается в электронном блоке. В начале слива металла система автоматически производит калибровку сигнала по величине струи металла. Полученный после обработки и калибровки сигнал равен 0 % при отсутствии в струе шлака и равен 100 % в момент, когда в струе отсутствует сталь. При превышении сигнала установленного уровня «отсечки» на пульте оператора включается звуковая и визуальная сигнализация. Регулировкой уровня «отсечки» можно добиться срабатывания звукового сигнала при различном требуемом содержании шлака в струе металла.
Также существует разновидность электромагнитной системы детектирования, когда струя металла является непосредственно сердечником катушки.
Структура такой системы показана на рисунке 4: 1 - чувствительный элемент с термостойким кабелем, 2 - соединитель, 3 - технологический пульт, 4 - блок усиления сигналов, 5 - блок обработки сигналов и рабочая станция.
Рисунок 4 - Расположение элементов системы на машине непрерывного литья заготовок
Чувствительный элемент (ЧЭ) системы выполнен в виде кольца, устанавливаемого в блок шиберного затвора сталь-ковша или в днище корпуса сталь-ковша. ЧЭ создает электромагнитное поле и измеряет вторичное поле вихревых токов. При появлении в струе металла шлака вторичное электромагнитное поле изменяется. Изменение сигнала фиксируется измерительной системой. При превышении установленного порога включается звуковой сигнал и подается управляющий сигнал на закрытие затвора сталь-ковша.
1.5 Описание вибрационной системы детектирования шлака
Вибрационный метод основан на измерении вибраций, которые возникают при течении струи металла. Этот метод применяется при сливе металла из сталь-ковша в промковш. Чувствительный элемент устанавливается на манипулятор разливочного стакана, для определения вибраций сливаемого металла. И на опору для определения фоновых вибраций. Метал, при прохождении разливочного стакана создает вибрационную картину, отличную от шлака. После чего оператору подается сигнал для принятия решения об окончания слива.
На рисунке 5 изображен вид чувствительного элемента датчика шлака, устанавливаемого на манипулятор разливочного стакана.
Данный метод, как и электромагнитный, нуждается в системе сбора сигналов, удовлетворяющей определенным параметрам.
Количеств каналов для аналогового сигнала - 8. Так как нужно отслеживать возбуждение передающей катушки, возбуждение приемной катушки, угол поворота конвертера, положение затвора сталь-ковша для электромагнитного метода. Вибрацию на манипуляторе разливочного стакана, фоновую вибрацию, угол поворота конвертера, положение затвора сталь-ковша для вибрационного метода.
Частота опроса аналоговых каналов - 10 кГц, для получения качественной картины оцифрованного сигнала.
Возможность передачи данных через Ethernet по UDP протоколу со скоростью 10/100 мбит/с.
Возможность быстрой замены в случае выхода из строя, способность работать в условия производства, малая цена и габариты конечного устройства.
1.6 Анализ поставленной задачи
Для реализации данного технического задания был предоставлен модуль TE-STM32F207 выполненный на основе 32-разрядного микроконтроллера STM32F207 компании STMicroelectronics. Примененный микроконтроллер имеет ядро Cortex-M3, порты USB OTG и Ethernet, два порта CAN. Максимальная тактовая частота микроконтроллера составляет 120 МГц.
Отличительные особенности:
· микроконтроллер STM32F207VGT6: 120 МГц Cortex-M3, 1 Mбайт Flash-памяти программ, 128 Кбайт ОЗУ, три 12-разрядных АЦП, два 12-разрядных ЦАП, Ethernet MAC 10/100, USB OTG, 2xCAN, 5хUSART, 3х SPI, I2C, SDIO, корпус LQFP100;
· SPI Flash-память AT45DB161D (16 Мбит);
· разъем и драйвер порта Ethernet;
· разъем порта USB OTG;
· 2 разъема и драйверы портов CAN;
· 2 разъема портов RS-232;
· разъем JTAG;
· аудио-усилитель и динамик;
· 31 линия портов микроконтроллера выведена на разъем;
· разъем питания +7,5 … 9,0 В
Данный микроконтроллер полностью удовлетворяет нашим задачам. Так как имеет два 12 разрядных АЦП с быстродействием 2 MSPS, разъем и драйвер порта Ethernet, приемлемую цену и малые габариты.
ГЛАВА 2. РАЗРАБОТКА УНИВЕРСАЛЬНОЙ МИКРОПРОЦЕССОРНОЙ СИСТЕМЫ СБОРА СИГНАЛОВ
2.1 Анализ возможностей периферийных устройств контроллера STM32F207
Микроконтроллеры STM32 выполнены на основе ядра Cortex, которое подключено к Flash памяти по отдельной шине инструкций. Шина данных и системная шина Cortex подключены к матрице высокоскоростных шин AHB. Внутреннее статическое ОЗУ подключено напрямую к матрице шин AHB, с которой также связан блок ПДП. Подключение встроенных УВВ распределено между двумя шинами APB. Каждая из шин связана с матрицей шин AHB посредством шинных преобразователей. Матрица шин AHB синхронизируется той же частотой, что и ядро Cortex. Однако, у шин AHB имеются отдельные предделители и, поэтому, в целях снижения энергопотребления их можно синхронизировать более низкими частотами. В качестве шинных мастеров могут выступать, как ЦПУ Cortex, так и блок ПДП. Благодаря свойственной матрице шин параллелизму, необходимость в арбитраже возникает только в случае попыток одновременного доступа обеих мастеров к статическому ОЗУ, шине APB1 или APB2. Тем не менее шинный арбитр гарантированно предоставляет 2/3 времени доступа для блока ПДП и 1/3 для ЦПУ Cortex.
УВВ общего назначения микроконтроллеров STM32 состоят из портов ввода-вывода (ПВВ) общего назначения, контроллера внешних прерываний, аналогово-цифровых преобразователей, таймеров общего назначения, расширенного таймера и часов реального времени с энергонезависимыми (за счет резервирования питания) регистрами и входом обнаружения вмешательства.
У микроконтроллера STM32 предусмотрено до 80 двунаправленных линий ввода-вывода. Все линии ввода-вывода разделены на 5 портов по 16 линий ввода-вывода в каждой.
Данные порты называются A…E и совместимы с напряжением 5В. Многие из внешних выводов могут выполнять альтернативную функцию линии ввода-вывода, например, модуля УСАПП или I2C. Кроме того, 16 входных линий встроенного блока внешних прерываний могут быть соединены с любыми из портов ввода-вывода.
В микроконтроллере STM32 два аналогово-цифровых преобразователя. АЦП питаются отдельным напряжением, которое в зависимости типа корпуса может находиться в пределах 2.4…3.6 В. Источник опорного напряжения АЦП соединен либо с напряжением питания АЦП, либо со специальными внешними выводами. АЦП характеризуется 12-битной разрешающей способностью и частотой преобразования 1МГц. У него имеется до 18 мультиплексированных каналов, 16 из которых можно использовать для измерения внешних сигналов. Оставшиеся два канала связаны со встроенным датчиком температуры и внутренним ИОН.
У микроконтроллера STM32 имеется четыре блока таймеров. Таймер 1 - расширенный таймер, остальные таймеры являются таймерами общего назначения. Все таймеры выполнены по общей архитектуре, а расширенный таймер отличается лишь добавлением специальных аппаратных блоков.
Все блоки таймеров выполнены на основе 16-битного перезагружаемого счетчика, который синхронизируется с выхода 16-битного предделителя. Перезагружаемое значение хранится в отдельном регистре. Счет может быть прямой, обратный или двунаправленный (сначала прямой до определенного значения, а затем обратный). Вход синхронизации счетчика можно связать с одним из восьми различных источников. В их число входят: специальный сигнал синхронизации, производный от сигнала главной системной синхронизации; выходной сигнал синхронизации одного из других таймеров или внешний сигнал синхронизации, связанный с выводами захвата/сравнения.
Помимо составляющего основу таймера счетчика, в каждый блок таймера также входит четырехканальный блок захвата/сравнения. Данный блок выполняет, как стандартные функции захвата и сравнения, так и ряд специальных функций. Каждый из таймеров может генерировать прерывания и поддерживает ПДП.
2.2 Описание алгоритма работы микроконтроллера
Рисунок 8 - Блок-схема алгоритма работы микроконтроллера
Рисунок 8 - Блок-схема алгоритма работы микроконтроллера
Для обеспечения требуемой частоты опроса аналоговых каналов в 10 кГц, соответствующим образом настраивается таймер. По переполнению счетчика таймера срабатывает прерывание, по которому запускается преобразование соответствующих каналов регулярной группы АЦП. Полученные значения последовательно записываются в буфер данных при помощи заранее сконфигурированного блока ПДП. После окончания преобразования регулярной группы срабатывает прерывание, по которому инкрементируется счетчик прерываний. По достижении счетчика прерываний значения 80 происходит его обнуление и формирование и отправка UDP пакета на соответствующий адрес.
2.3 Выводы общего назначения
2.3.1 Описание выводов общего назначения
В микроконтроллерах STM32 порты 16-разрядные, в зависимости от модели их может быть до 7.
Именуются они буквами A-G : PORTA, PORTB, PORTC, PORTD, PORTE, PORTF, PORTG.
Порты могут быть сконфигурированы как
· вход;
· выход.
Если порт настроен на ввод данных, возможны следующие режимы:
· аналоговый вход;
· цифровой вход.
Также предусмотрена возможность подключения подтягивающего резистора.
Если порт настроен на вывод данных, то необходимо задать:
· максимальное быстродействие;
· режим выхода.
Максимальное быстродействие может иметь следующие значения: 2, 10, 50 MHz.
Режим выхода может быть следующим:
· двухтактный выход общего назначения;
· выход с открытым стоком общего назначения;
· двухтактный выход с альтернативной функцией;
· выход с альтернативной функцией с открытым стоком.
Два последних режима используются, когда вывод используется каким-то периферийным устройством (например, выход USARTа).
Выход общего назначения симметричен. Логическая единица и ноль на выходе могут дать примерно одинаковый ток. А выход с открытым стоком предполагает, что на нем может появиться только «земля», когда транзистор выходного каскада вывода будет открыт. А чтобы на выходе была единица, необходим подтягивающий резистор. Благодаря этому можно объединять несколько выходов в одну точку.
Функциональная схема выводов общего назначения представлена на рисунке 9.
Рисунок 9 - Функциональная схема вывода общего назначения
Если вывод порта сконфигурирован как выход общего назначения, используются транзисторы P-MOS и N-MOS. Если на выходе нужна единица -- открывается транзистор P-MOS, если нужен ноль - N-MOS.
Если порт сконфигурирован как выход с открытым стоком, верхний транзистор не используется.
На схеме показаны резисторы, позволяющие подтянуть вывод, сконфигурированный как вход, к плюсу питания или земле.
Важный элемент -- защитные диоды. Они защищают контроллер от перенапряжений на входе. Этот узел является обычным для микроконтроллеров, но для микроконтроллеров данной серии есть одна особенность. Дело в том, что для них напряжение питания составляет 3.3 вольта. Но большинство устройств питаются от 5 вольт. Если соединить выход такого устройства со входом контроллера, 5 вольт с выхода устройства через защитный диод попадут на питание контроллера. Чтобы исключить такую проблему предусмотрены выводы двух типов: обычные, на которые можно подавать уровень не более напряжения питания контроллера, и выводы толерантные (терпимые) к 5 вольтам. В документации эти выводы обозначены буквами FT.
2.3.2 Описание регистров выводов общего назначения
Для конфигурирования портов и работы с ними на каждый порт выделено по семь регистров:
· GPIOx_CRL, GPIOx_CRH - задают режимы работы каждого бита порта;
· GPIOx_IDR - регистр, позволяющий читать физическое состояние выводов порта x;
· GPIOx_ODR -- позволяет записать данные непосредственно в порт;
· GPIOx_BSRR -- для сброса и установки отдельных битов порта;
· GPIOx_BRR -- для сброса битов порта;
· GPIOx_LCKR -- для блокировки выбранной конфигурации
где х -- это имя порта (A,B,C,D,E,F или G).
Рассмотрим подробнее особенности каждого регистра.
GPIOx_CRL, GPIOx_CRH - 32-х разрядные регистры, задающие режим работы каждого вывода порта.
Структура регистра GPIOx_CRL представлена на рисунке 10.
Рисунок 10 - Структура регистра GPIOx_CRL
Структура регистра GPIOx_CRH представлена на рисунке 11.
Рисунок 11 - Структура регистра GPIOx_CRH
Для того, чтобы задать режим одного вывода, необходимо четыре разряда. Так как порт имеет 16 разрядов, для конфигурации порта необходимо 64 разряда. Регистры микроконтроллера имею разрядность равную 32, поэтому для всего порта необходимо два конфигурационных регистра - GPIOx_CRL и GPIOx_CRH.
Регистр GPIOx_CRL конфигурирует первую половину выводов порта (разряды 0…7).
Регистр GPIOx_CRH конфигурирует вторую половину выводов порта (разряды 8…15).
Для конфигурирования одного вывода порта необходимо 4 разряда.
Назначение этих разрядов следующее:
· биты 0,1 (MODE) определяют направление вывода и скорость обмена в режиме выхода;
· биты 2,3 (CNF) задают конфигурацию выходного каскада.
Разряды MODE могут иметь следующее значение:
· MODE [1,0]=00 -- вывод сконфигурирован как вход;
· MODE [1,0]=01 -- вывод сконфигурирован как выход, максимальная скорость переключения -- 10 MHz;
· MODE [1,0]=10 -- вывод сконфигурирован как выход, максимальная скорость переключения -- 2 MHz;
· MODE [1,0]=11 -- вывод сконфигурирован как выход, максимальная скорость переключения -- 50 MHz;
Если вывод сконфигурирован как вход, назначение разрядов CNF следующее:
· CNF[1,0]=00 -- аналоговый вход;
· CNF[1,0]=01 -- цифровой вход в третьем состоянии;
· CNF[1,0]=10 -- цифровой вход с подтягивающим резистором ;
· CNF[1,0]=11 -- зарезервировано
Если вывод сконфигурирован как выход, назначение разрядов CNF следующее:
· CNF[1,0]=00 -- двухтактный выход общего назначения;
· CNF[1,0]=01 -- выход общего назначения с открытым стоком;
· CNF[1,0]=10 -- двухтактный выход с альтернативной функцией;
· CNF[1,0]=11 -- выход с альтернативной функцией с открытым стоком
Следующим идет регистр GPIOx_IDR.
Он предназначен для чтения физического состояния порта. Этот регистр имеет 16 разрядов, каждый из которых соответствует выводу порта. Прочитав этот регистр, можем проанализировать состояние любого вывода порта.
Регистр GPIOx_ODR предназначен для непосредственной записи в порт. Он также 16-ти разрядный.
Следующий регистр - GPIOx_BSRR. Он предназначен для атомарного управления выходами. Его структура представлена на рисунке 12.
Рисунок 12 - Структура регистра GPIOx_BSRR
Как видно, этот регистр 32-х разрядный. Первые 16 разрядов используются для установки выходов порта, а старшие 16 разрядов -- для сброса, т.е. можно манипулировать отдельными разрядами порта.
Если записать «1» в разряд BS0, вывод №0 порта будет установлен. Если записать «1» в разряд BR0, вывод №0 порта будет сброшен. Приоритет имеет BSx.
Регистр GPIOx_BRR предназначен для работы с отдельными битами порта. Но он 16-ти разрядный, и предназначен только для сброса выводов порта. Регистр GPIOx_LCKR предназначен для блокировки выбранной конфигурации. Его структура представлена на рисунке 13.
Рисунок 13 - Структура регистра GPIOx_BSRR
Чтобы защитить настройку выбранного разряда порта, необходимо установить соответствующий бит LCK. Сразу после этого выполнить последовательную запись в разряд LCKK 1 -- 0 -- 1.
2.3.3 Настройка выводов общего назначения
Сконфигурируем выводы в соответствии с поставленной задачей:
1. Подаем тактирование на порт А. Для этого устанавливанием бит IOPAEN регистра APB2ENR в «1».
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
2. Задаем режим работы соответствующих портов как аналоговый вход. Для этого устанавливаем биты MODEх[1:0] и CNFх[1:0] регистра CRL в «0».
GPIOA->CRL &= ~GPIO_CRL_MODE0;
GPIOA->CRL &= ~GPIO_CRL_MODE1;
GPIOA->CRL &= ~GPIO_CRL_MODE2;
GPIOA->CRL &= ~GPIO_CRL_MODE3;
GPIOA->CRL &= ~GPIO_CRL_MODE4;
GPIOA->CRL &= ~GPIO_CRL_MODE5;
GPIOA->CRL &= ~GPIO_CRL_MODE6;
GPIOA->CRL &= ~GPIO_CRL_MODE7;
GPIOA->CRL &= ~GPIO_CRL_CNF0;
GPIOA->CRL &= ~GPIO_CRL_CNF1;
GPIOA->CRL &= ~GPIO_CRL_CNF2;
GPIOA->CRL &= ~GPIO_CRL_CNF3;
GPIOA->CRL &= ~GPIO_CRL_CNF4;
GPIOA->CRL &= ~GPIO_CRL_CNF5;
GPIOA->CRL &= ~GPIO_CRL_CNF6;
GPIOA->CRL &= ~GPIO_CRL_CNF7;
2.4 Аналогово-цифровой преобразователь
2.4.1 Характеристики АЦП
Характеристики АЦП микроконтроллера STM32F207VGT6:
· 12-ти разрядная разрешающая способность;
· время преобразования -- 1 мs;
· 18 каналов, из которых 16 -- внешние;
· возможность задавать время преобразования индивидуально для каждого канала (8 дискретных значений);
· возможность задания одиночного или непрерывного преобразования;
· самокалибровка;
· наличие оконного компаратора;
· запуск преобразования от внешнего источника;
· работа с модулем DMA.
Структурная схема аналогово-цифрового преобразователя представлена на рисунке 14.
Analog MUX -- это селектор каналов. АЦП имеет 18 каналов (входов). 16 каналов - это выводы микроконтроллера, на которые подается измеряемый сигнал. Еще два канала задействованы под внутренние сигналы: один для подачи внутреннего образцового напряжения, второй для подключения датчика температуры, который расположен на кристалле.
Injected channels (инжектированные каналы) и Regular channels (регулярные каналы). Это две разновидности опроса каналов. Если нужно опрашивать несколько каналов, создается их список, и АЦП измеряет напряжение на каждом канале из этого списка последовательно друг за другом. К примеру, нужно измерять напряжение в такой последовательности: канал №2 - канал № 5 -- канал №1 - канал №1 - канал № 9. Эта последовательность записывается в специальный регистр, после чего запускается процесс преобразования. В результате все каналы будут последовательно опрошены.
Рисунок 14 - Функциональная схема аналогово-цифрового преобразователя
Не имеет значение порядок следования каналов, также один канал может опрашиваться несколько раз.
Регулярные каналы
Количество измерений в группе регулярных каналов может достигать 16. Возможно непрерывное измерение выбранных каналов (по окончанию измерения автоматически запустится новый цикл).
Инжектированные каналы
Максимальное количество измерений в группе инжектированных каналов равно четырем. Если запустить измерение инжектированных каналов, то измерение регулярных каналов будет приостановлено. Затем будет выполнено измерение заданных инжектированных каналов и вновь восстановлено измерение каналов регулярной группы.
Например необходимо измерять постоянно напряжение на четырех выводах. Для этого нужно включить эти каналы в регулярную группу и запустить преобразование. АЦП последовательно их опросит, в нужный момент сгенерируется прерывание, данные сохраняются и обрабатываются. Однако если возникла необходимость измерить температуру кристалла , то чтобы не нарушать измерение в регулярном канале, запускаем инжектированный. На время работа регулярного канала автоматически будет приостановлена, а по окончанию измерения инжектированной группы автоматически восстановлена.
В нижней части схемы мы видим источники, которые могут запускать процесс преобразования отдельно для регулярной и инжектированной группы каналов. Это могут быть сигналы от таймеров, внешний сигнал или два специальных разряда управляющих регистров, установив которые можно программно запустить преобразование в регулярной или инжектированной группе.
Оконный компаратор
Оконный компаратор (Analog watchdog) имеет в своем составе два регистра.
В один регистр заносится нижний уровень сигнала, во второй - верхний уровень. Также задается номер канала, к которому нужно подключить компаратор. Если измеряемое напряжение заданного канала выйдет за указанные границы, то будет установлен соответствующий флаг, и сгенерирован запрос на прерывание.
Оконный компаратор может быть весьма полезным.
Допустим, необходимо контролировать температуру контроллера чтобы он не перегрелся. Для этого периодически измеряем уровень сигнала от датчика температуры. Если он превысил какой-то порог, предпринимаем определенные действия - можно снизить тактовую частоту, или отключить некоторые устройства, или вообще уйти в спячку . Но для этого необходимо отвлекать процессор от выполнения основной программы для анализа температуры. А это время и лишний программный код.
Если использовать оконный компаратор, от этого можно избавиться.
Выполнить инициализацию компаратора - задать пороговые уровни, включить этот канал в список регулярных каналов и разрешить прерывание от него.
Если уровень выйдет за заданный предел, сработает компаратор, будет вызвана функция-обработчик в которой нужно принять решение что делать дальше. И не надо периодически анализировать уровень сигнала.
Прерывания от АЦП
На схеме видно, что прерывание от АЦП могут генерировать три сигнала: конец преобразования регулярной группы, конец преобразования инжектированной группы и сигнал от оконного компаратора.
Сохранение результата преобразования
Для каждого из инжектированных каналов предусмотрен свой регистр данных, в котором сохраняется результат.
Для результатов преобразования регулярных каналов регистр один.
2.4.2 Описание работы АЦП
Режим одиночного преобразования
В этом режиме АЦП выполняет всего одно преобразование. Оно запускается после установки разряда ADON регистра ADC_CR2 (только для регулярных каналов) или от внешнего сигнала (для регулярного и инжектированного каналов). При этом разряд CONT регистра ADC_CR2 должен быть равен нулю.
После окончания преобразования в выбранном канале выполняется:
Для регулярного канала:
· Результат преобразования сохраняется в регистре ADC_DR
· Устанавливается флаг EOC
· Генерируется прерывание, если установлен разряд EOCIE
Для инжектированного канала:
· Результат преобразования сохраняется в регистре ADC_DRJ1
· Устанавливается флаг JEOC
· Генерируется прерывание, если установлен разряд JEOCIE
После этого АЦП останавливается
Режим непрерывного преобразования
В этом режиме АЦП начинает следующее преобразование, как только закончится первое.
Этот режим стартует от внешнего источника или при установке разряда ADON регистра ADC_CR2, при этом разряд CONT регистра ADC_CR2 должен быть равен единице.
После каждого преобразования выполняется:
Для регулярного канала:
· Результат преобразования сохраняется в регистре ADC_DR
· Устанавливается флаг EOC
· Генерируется прерывание, если установлен разряд EOCIE
Для инжектированного канала:
· Результат преобразования сохраняется в регистре ADC_DRJ1
· Устанавливается флаг JEOC
· Генерируется прерывание, если установлен разряд JEOCIE
Режим сканирования
Этот режим используется для сканирования группы каналов.
Он выбирается установкой разряда SCAN регистра ADC_CR1. Если этот разряд установлен, АЦП сканирует все каналы, выбранные в регистрах ADC_SQRx (для регулярных каналов) или регистре ADC_JSQR (для инжектированных каналов). Для каждого канала группы выполняется одно преобразование. После окончания преобразования следующий канал (его преобразование) запускается автоматически. Если разряд CONT установлен, то преобразование не останавливается на последнем канале, а вновь запускается с первого канала.
Если установлен разряд DMA, контроллер прямого доступа к памяти используется для передачи результата в память после окончания каждого преобразования (после установки разряда EOC).
В инжектированных каналах результат сохраняется в регистрах ADC_JDRx.
2.4.3 Описание регистров АЦП
Структура регистров аналогово-цифрового преобразователя представлена на рисунке 16.
1. SR - содержит флаги, указывающие на состояние АЦП.
2. CR1, CR2 - управляющие регистры, задают режим работы.
3. SMPR1, SMPR2 - задают время преобразования.
4. JOFR1…JOFR2 - определяют смещение данных в инжектированной группе (ух, как сложно воспринимается при первом прочтении).
5. HTR, LTR - задают верхнее и нижнее значение срабатывания оконного компаратора.
6. SQR1…SQR3 - задают последовательность каналов регулярной группы.
7. JSQR - задает последовательность каналов инжектированной группы.
8. JDR1…JDR4 - регистры данных инжектированной группы.
9. DR - регистр данных регулярной группы.
Рассмотрим подробнее каждую группу регистров АЦП. Если в контроллере два модуля АЦП, названия регистров будут одинаковые, за исключением приставки: ADC1 и ADC2.
Регистр SR
Структура регистра SR представлена на рисунке 15.
Рисунок 15 - Структура регистра SR
Этот регистр содержит флаги, которые устанавливаются аппаратно. Очищаются они программно, записью нуля (программист должен сделать это). Флаг EOC можно также очистить, прочитав регистр DR. Назначение флагов следующее:
· STRT -- устанавливается при старте преобразования регулярного канала;
· JSTRT -- устанавливается при старте преобразования инжектированного канала;
· JEOC -- окончание преобразования инжектированного канала;
· EOC -- окончание преобразования регулярного или инжектированного канала;
· AWD -- устанавливается при срабатывании оконного компаратора.
Рисунок 16 - Регистры аналогово-цифрового преобразователя
Регистр CR1
Структура регистра CR1 представлена на рисунке 16.
Рисунок 17 - Структура регистра CR1
· AWDEN -- управляет оконным компаратором регулярного канала (1-вкл, 0 -- выкл);
· JAWDEN -- управляет оконным компаратором инжектированного канала (1-вкл, 0 -- выкл);
· JEOCIE -- разрешает/запрещает прерывания для инжектированных каналов;
· AWDIE -- разрешает/запрещает прерывания от оконного компаратора АЦП;
· EOCIE -- разрешает/запрещает прерывания по окончанию преобразования в регулярной или инжектированной группе;
· AWDCH[4:0] -- определяет номер канала, к которому подключен оконный компаратор;
Регистр CR2
Структура регистра CR2 представлена на рисунке 18.
Рисунок 18 - Структура регистра CR2
TSVREFE - подключает датчик температуры, расположенный на кристалле;
· SWSTART -- запускает преобразование в регулярном канале (если разряды EXTSEL[2:0] = 111). Устанавливается программно. Сбрасывается аппаратно, после начала преобразования;
· JSWSTART -- запускает преобразование в инжектированном канале (если разряды JEXTSEL[2:0] = 111). Устанавливается программно. Сбрасывается аппаратно, после начала преобразования;
· EXTTRIG -- разрешает/запрещает использовать внешнее события для запуска преобразования в регулярном канале;
· EXTSEL[2:0] -- определяет источник, который будет запускать преобразование в регулярном канале. Для ADC1 и ADC2:
1. EXTSEL[2:0] = 000 -- Timer 1 CC1;
2. EXTSEL[2:0] = 001 -- Timer 1 CC2;
3. EXTSEL[2:0] = 010 -- Timer 1 CC3;
4. EXTSEL[2:0] = 011 -- Timer 2 CC2;
5. EXTSEL[2:0] = 100 -- Timer 3 TRGO;
6. EXTSEL[2:0] = 101 -- Timer 4 CC4;
7. EXTSEL[2:0] = 110 -- EXTI line11/TIM8_TRGO;
8. EXTSEL[2:0] = 111 -- SWSTART;
· JEXTTRIG -- разрешает/запрещает использовать внешнее события для запуска преобразования в инжектированном канале;
· JEXTSEL[2:0] -- определяет источник, который будет запускать преобразование в инжектированном канале. Для ADC1 и ADC2:
1. JEXTSEL[2:0] = 000 -- Timer 1 TRGO;
2. JEXTSEL[2:0] = 001 -- Timer 1 CC4;
3. JEXTSEL[2:0] = 010 -- Timer 2 TRGO;
4. JEXTSEL[2:0] = 011 -- Timer 2 CC1;
5. JEXTSEL[2:0] = 100 -- Timer 3 CC4;
6. JEXTSEL[2:0] = 101 -- Timer 4 TRGO;
7. JEXTSEL[2:0] = 110 -- EXTI line15/TIM8_CC4;
8. JEXTSEL[2:0] = 111 -- JSWSTART;
· ALIGN -- выравнивание результата (0 -- по правому краю, 1 -- по левому);
· DMA -- разрешает/запрещает использовать модуль DMA;
· RSTCAL -- сброс калибровки;
· CAL -- запускает калибровку АЦП (записали 1 -- калибровка пошла, по окончании сбросится аппаратно);
· CONT -- установка этого разряда запускает непрерывное преобразование;
· ADON -- включает/отключает модуль АЦП;
Регистры SMPRх
Регистры SMPR1 и SMPR2 (sample time register) задают время преобразования в каждом канале. Их структура представлена на рисунках 19 и 20.
Рисунок 19 - Структура регистра ADC_SMPR1
Рисунок 20 - Структура регистра ADC_SMPR2
Для каждого канала выделено по 3 разряда, что позволяет задать 8 значений времени преобразования:
000 - 1.5 цикла;
001 - 7.5 цикла;
010 - 13.5 цикла;
011 - 28.5 цикла;
100 - 41.5 цикла;
101 - 55.5 цикла;
110 - 71.5 цикла;
111 - 239.5 цикла
Регистры JOFRx
Регистры смещения для каждого канала инжектированной группы (JOFR1, JOFR2, JOFR3, JOFR4).
В регистр смещения можно запрограммировать 12-битное значение, которое автоматически вычитается из результата преобразования АЦП. Если результирующее значение -- отрицательное, то регистр результата инжектированной группы дополняется знаком.
Регистры LTR и HTR
Эти регистры содержат по 12 разрядов, в которые записывается верхнее и нижнее значение оконного компаратора.
Регистры SQRх
В этих регистрах задаются номера каналов, которые будут опрашиваться в регулярной группе, и задается общее количество каналов. Этих регистров три. Ниже они изображены в следующей последовательности: SQR1, SQR2, SQR3. Их структура представлена на рисунках 21-23.
Рисунок 21 - Структура регистра SQR1
Рисунок 22 - Структура регистра SQR2
Рисунок 23 - Структура регистра SQR3
Разряды SQx[4:0] задают номер канала, где х - это номер преобразования.
Задается список каналов. По этому списку производится опрос каналов АЦП (можно задать от 1 до 18 каналов).
Например, необходимо циклически измерять напряжение в такой последовательности: канал №3 - канал №1 - канал №5 - канал №1 - канал №8 -- канал №8 -канал №1 (7 каналов).
Для этого необходимо записать в регистр SQR3 следующие значения:
SQ1[4:0] = 3; SQ2[4:0] = 1; SQ3[4:0] = 5; SQ4[4:0] = 1; SQ5[4:0] = 8; SQ6[4:0] = 8
А в разряды SQ7 регистра SQR2 запишем 1. И задаем количество каналов регулярной группы: L[3:0] = 6
Каналы можно опрашивать в любой последовательности. Любой канал можно опрашивать несколько раз.
Количество каналов в этом списке задается разрядами L[3:0] регистра SQR1.
Регистр JSQR
Структура регистра JSQR представлена на рисунке 24
Рисунок 24 - Структура регистра JSQR
Этот регистр, подобно регистрам SQRx, задает последовательность каналов и их количество. Но не для регулярной группы, а для инжектированной.
Как видно из структуры регистра, максимальное количество преобразований в инжектированной группе равно четырем (это количество задается в разрядах JL[1:0]).
Регистр JDRx
Структура регистра JDRx представлена на рисунке 25.
Рисунок 25 - Структура регистра JDRx
JDRx - это регистр данных каналов инжектированной группы. Максимальное количество каналов в инжектированной группе равно четырем, соответственно имеется 4 регистра данных - JDR1, JDR2, JDR3 и JDR4. В эти регистры помещается результат преобразований в каждом выбранном канале.
Регистры 16-ти разрядные, хотя АЦП 12-ти разрядный. Предусмотрено выравнивание результата измерения по левому или по правому краю.
Регистр DR
Структура регистра DR представлена на рисунке 26.
Рисунок 26 - Структура регистра DR
Этот регистр содержит результат преобразования АЦП в регулярной группе. В отличии от инжектированной группы, в которой четыре регистра данных, он один на всю группу.
Его структура подобна регистрам JDRx, за исключением старших 16-ти разрядов 16…31. Эти разряды используются при работе АЦП в сдвоенном режиме (совместно с ADC2).
2.4.4 Настройка АЦП
Сконфигурируем наш блок АЦП в соответствии с поставленной задачей:
1. Подаем тактирование на АЦП. Для этого устанавливанием бит ADC1EN регистра APB2ENR в «1».
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
2. Так как будем использовать DMA для записи результатов преобразования в память, разрешаем DMA для ADC1. Для этого устанавливаем бит DMA регистра CR2 в «1».
ADC1->CR2 |= ADC_CR2_DMA;
3. Включаем прерывание от АЦП. Для этого устанавливаем бит EOCIE регистра CR1 в «1».
ADC1->CR1 |= ADC_CR1_EOCIE;
4. Запускаем калибровку АЦП и ждем ее окончания. Для этого устанавливаем бит CAL регистра CR2 в «1» и ждем его аппаратного сброса.
ADC1->CR2 |= ADC_CR2_CAL;
while (!(ADC1->CR2 & ADC_CR2_CAL)){};
5. Задаем источник запуска преобразования. В нашем случае это будет бит SWSTART. Для этого устанавливаем бит EXTSEL регистра CR2 в «1»
ADC1->CR2 |= ADC_CR2_EXTSEL;
6. Разрешаем запуск преобразования от внешнего источника. Для этого устанавливаем бит EXTTRIG регистра CR2 в «1».
ADC1->CR2 |= ADC_CR2_EXTTRIG;
7. Задаем время преобразования для каждого канала. Установим его равным 239,5 циклов. Для этого устанавливаем биты SMPх (где х - номер канала) регистра SMPR1 в «1».
ADC1->SMPR1 |= ADC_SMPR1_SMP0;
ADC1->SMPR1 |= ADC_SMPR1_SMP1;
ADC1->SMPR1 |= ADC_SMPR1_SMP2;
ADC1->SMPR1 |= ADC_SMPR1_SMP3;
ADC1->SMPR1 |= ADC_SMPR1_SMP4;
ADC1->SMPR1 |= ADC_SMPR1_SMP5;
ADC1->SMPR1 |= ADC_SMPR1_SMP6;
ADC1->SMPR1 |= ADC_SMPR1_SMP7;
8. Составляем таблицу каналов, для которых нужно производить преобразования. И задаем количество этих каналов. Для этого в биты SQх[4:0] регистра SQR3 записываем номера каналов, а в бит L регистра SQR1 количество этих каналов. Нулевой канал АЦП не задаем, так как по умолчанию в биты SQ1[4:0] записаны нули.
ADC1->SQR3 |= ADC_SQR3_SQ2_0;
ADC1->SQR3 |= ADC_SQR3_SQ3_1;
ADC1->SQR3 |= ADC_SQR3_SQ4_0;
ADC1->SQR3 |= ADC_SQR3_SQ4_1;
ADC1->SQR3 |= ADC_SQR3_SQ5_2;
ADC1->SQR3 |= ADC_SQR3_SQ6_0;
ADC1->SQR3 |= ADC_SQR3_SQ6_2;
ADC1->SQR3 |= ADC_SQR3_SQ7_1;
ADC1->SQR3 |= ADC_SQR3_SQ7_2;
ADC1->SQR3 |= ADC_SQR3_SQ8_0;
ADC1->SQR3 |= ADC_SQR3_SQ8_1;
ADC1->SQR3 |= ADC_SQR3_SQ8_2;
ADC1->SQR1 |= ADC_SQR1_L_3;
9. Включаем АЦП. Для этого в бит ADON регистра CR2 записываем «1».
ADC1->CR2 |= ADC_CR2_ADON;
2.4.5 Обработчик прерываний АЦП
По окончанию преобразования каналов регулярной группы срабатывает прерывание АЦП, по которому нужно собрать и отправить UDP пакет. Однако, минимальный размер пакета по умолчанию равняется 1492 байта, из которых (не считая 28 байт заголовков) фактические данные буду нести только 16 байт (8 каналов по 16 бит). В этих условия можно не уложиться в пропускную способность сети. Чтобы избежать этого, будем собирать 80 результатов преобразований регулярной группы, и отправлять 1280 байт фактической информации.
Реализация в программном коде:
void ADC1_2_IRQHandler (void)
{
schetchik = schetchik + 1
if (schetchik = 80)
{
schetchik = 0
struct udp_pcb *upcb;
struct pbuf *p;
struct ip_addr DestIPaddr;
unsigned char tdata[1280] = BuffTxd[1280];
char *data = tdata;
upcb = udp_new();
IP4_ADDR( &DestIPaddr, DEST_IP_ADDR0, DEST_IP_ADDR1, DEST_IP_ADDR2, DEST_IP_ADDR3 );
udp_connect(upcb, &DestIPaddr, UDP_SERVER_PORT);
p = pbuf_alloc(PBUF_TRANSPORT,strlen((char*)data), PBUF_POOL);
pbuf_take(p, (char*)data, strlen((char*)data));
udp_send(upcb, p);
udp_disconnect(upcb);
pbuf_free(p);
}
}
2.5 Прямой доступ к памяти
2.5.1 Описание работы ПДП
Благодаря контроллеру DMA данные могут быть быстро перемещены, без каких либо действий ЦПУ, что сэкономит его ресурсы для других операций. Получается, что в микроконтроллере помимо центрального процессорного устройства, которое работает с памятью и периферийными устройствами, имеется контроллер DMA, который по заданию ЦПУ может перемещать данные от куда-то. Функциональная схема работы контроллера ПДП представлена на рисунке 27.
Рисунок 27 - Функциональная схема работы контроллера ПДП
В контроллере STM32F103RB два независимых контроллера DMA -- DMA1 и DMA2. И каждый из них имеет несколько независимых каналов: DMA1 содержит 7 каналов, а DMA2 -- 5 каналов. Функциональная схема работы одного канала контроллера ПДП представлена на рисунке 28.
Рисунок 28 - Функциональная схема работы одного канала контроллера ПДП
К каждому каналу можно подключить одно из периферийных устройств, закрепленных за этим каналом.
2.5.2 Описание регистров ПДП
Для настройки контроллера DMA предусмотрено две категории регистров
· Регистры настройки и управления DMA в целом ;
· Регистры настройки и управления каждого канала;
Для настройки и управления DMA в целом предназначены регистры :
· ISR - регистр флагов прерывания от каналов;
· IFCR - регистр очистки флагов прерываний.
Для каждого канала определены следующие регистры:
· CMAR -- содержит указатель на место в памяти, куда будут записаны (или прочитаны) данные;
· CPAR - содержит указатель на периферийное устройство, которое подключено к каналу;
· CNDTR -- содержит количество байт, которые необходимо передавать;
· CCR -- управляет режимом работы канала.
Регистр ISR
Структура регистра ISR представлена на рисунке 29.
Рисунок 29 - Структура регистра ISR
· TEIFx - флаг ошибки передачи;
· HTIFx -- флаг половины передачи;
· TCIFx -- флаг окончания передачи;
· GIFx -- флаг прерывания.
Регистр IFCR
Структура регистра IFCR представлена на рисунке 30.
Рисунок 30 - Структура регистра IFCR
· TEIFx - очистка флага ошибки передачи;
· HTIFx -- очистка флага половины передачи;
· TCIFx -- очистка флага окончания передачи;
· GIFx -- очистка флага прерывания.
Регистр CCRx
Структура регистра CCRx представлена на рисунке 31.
Рисунок 31 - Структура регистра CCRx
· MEM2MEM - Режим обмена память-память (0 - отключен, 1 - включен);
· PL -- Уровень приоритета канала (00 - низкий, 01 - средний, 10 - высокий, 11 - очень высокий);
· MSIZE -- Размер элемента данных в памяти (0 - 8 бит, 1 - 16 бит, 2 - 32 бита);
· PSIZE -- Размер элемента данных в периферии (0 - 8 бит, 1 - 16 бит, 2 - 32 бита);
· MINC -- Режим инкремента указателя в памяти (0 - отключен, 1 - включен);
· PINC -- Режим инкремента указателя в периферии (0 - отключен, 1 - включен);
· CIRC -- Режим цикличности (0 - отключен, 1 - включен);
· DIR -- Направления обмена данными (0 - чтение из периферии, 1 - из памяти);
· TEIE -- Разрешение прерывания при возникновении ошибки при обмене;
· HTIE -- Разрешение прерывания по завершении половины обмена;
· TCIE -- Разрешение прерывания по завершении обмена (1 - разрешен, 0 -- запрещен);
· EN -- Разрешение канала (0 -- выключен, 1 -- включен).
Регистр CNDTRx
Структура регистра CNDTRx представлена на рисунке 32.
Рисунок 32 - Структура регистра CNDTRx
Данный регистр содержит количество байт, которое необходимо передавать.
Регистр CPARx
Структура регистра CPARx представлена на рисунке 33.
Рисунок 33 - Структура регистра CPARx
Данный регистр содержит указатель на периферийное устройство, которое подключено к каналу.
Регистр CMARx
Структура регистра CMARx представлена на рисунке 34.
Рисунок 34 - Структура регистра CMARx
Данный регистр содержит указатель на место в памяти, куда будут записаны (или прочитаны) данные.
2.5.3 Настройка ПДП
Сконфигурируем блок ПДП в соответствии с поставленной задачей:
1. Подаем тактирование на ПДП. Для этого устанавливаем бит DMA1EN регистра AHBENR в «1».
RCC->AHBENR |= RCC_AHBENR_DMA1EN;
2. Задаем адрес периферии, откуда будем считывать данные. Для этого в регистр CPAR записываем адрес регистра DR, в котором хранятся значения оцифрованного сигнала после преобразования.
DMA1_Channel1->CPAR = (uint32_t) &ADC1->DR;
3. Задаем адрес памяти, куда будем записывать данные. Для этого в регистр CMAR записываем адрес первого бита буфера, в который будут собираться данные для отправки.
DMA1_Channel1->CMAR = (uint32_t) &BuffRxd[0];
4. Задаем направление работы ПДП, в нашем случае из периферии в память. Для этого устанавливаем бит DIR регистра CCR4 в «0».
DMA1_Channel1->CCR &= ~DMA_CCR4_DIR;
5. Задаем размер передаваемых данных из периферии, в нашем случае 16 бит. Для этого устанавливаем бит PSIZE_0 регистра CCR4 в «1».
DMA1_Channel1->CCR |= DMA_CCR4_PSIZE_0;
6. Указываем, нужно ли инкрементировать указатель адреса в периферии, в нашем случае этого делать не нужно. Для этого устанавливаем бит PINC регистра CCR4 в «1».
DMA1_Channel1->CCR = ~DMA_CCR4_PINC;
7. Задаем размер передаваемых данных в память, в нашем случае 16 бит. Для этого устанавливаем бит MSIZE_0 регистра CCR4 в «1».
DMA1_Channel4->CCR |= DMA_CCR4_MSIZE_0;
8. Указываем, нужно ли инкрементировать указатель адреса в памяти, в нашем случае это нужно для заполнения буфера приема данных. Для этого устанавливаем бит MINC регистра CCR4 в «1».
DMA1_Channel4->CCR |= DMA_CCR4_MINC;
9. Указываем, что нужно включить режим циклической передачи. Для этого устанавливаем бит CIRC регистра CCR1 в «1».
DMA1_Channel1->CCR |= DMA_CCR1_CIRC;
10. Включаем ПДП. Для этого устанавливаем бит EN регистра CCR1 в «1».
DMA1_Channel1->CCR |= DMA_CCR1_EN;
2.6 Таймер
2.6.1 Описание работы таймера
В данной части я опишу только те принципы работы и регистры, которые использовались в данной работе, так как описание таймеров занимает пятую часть документации, и описывать все здесь не имеет смысла.
Базовый модуль состоит из счетного регистра (CNT), делителя с управляющим регистром PSC и регистра автоматической загрузки ARR. Эти регистры доступны из программы. Но, помимо их, базовый модуль содержит дополнительные регистры, которые недоступны программно. Функциональная схема работы таймера представлена на рисунке 35.
Рисунок 35 - Функциональная схема работы таймера
16-разрядный счетный регистр CNT - это основа таймера. Он может считать вверх (сложение) и вниз (вычитание). Направление счета задается разрядом DIR управляющего регистра CR1. Значение счетного регистра можно программно прочитать или изменить в любой момент времени.
Счетный регистр 16-разрядный, поэтому максимальное значение до которого (а также с которого) он может считать равно 65535. Но это значение можно изменять в меньшую сторону. Для этого предназначен регистр ARR, благодаря которому счетный регистр является счетчиком с переменным коэффициентом деления.
Тактирование счетного регистра
Таймер может тактироваться от разных источников. На выходе схемы выбора источника тактирования получаем сигнал CK_PSC, который и является тактовым сигналом таймера, но он подается на счетный регистр не напрямую, а через предварительный делитель с переменным коэффициентом деления (1…65536). Сигнал, подаваемый непосредственно на вход счетного регистра, называется CK_CNT.
Коэффициент деления предварительного делителя задается управляющим регистром PSC.
Управление подачей тактовых импульсов на вход предварительного делителя (а также включение/выключение таймера) осуществляется с помощью разряда CEN регистра CR1.
Переполнение счетного регистра и событие обновления UEV
Перед началом счета в регистр CNT загружается его начальное значение. При счете вверх это значение равно нулю, а при счете вниз - содержимому регистра ARR. От каждого тактового импульса содержимое CNT увеличивается на 1 (при счете вниз уменьшается на 1), пока не достигнет своего максимального значения, которое определяется содержимым регистра ARR (при счете вниз - пока не достигнет своего минимального значения, т.е. нуля).
С приходом следующего тактового импульса произойдет сброс счетного регистра в ноль (при счете вниз в него автоматически будет записано значение регистра ARR). Этот переход и называется переполнением счетного регистра, в результате которого может формироваться событие обновления счетного регистра (UEV).
Имеется возможность запретить формирование этого сигнала. Делается это с помощью разряда UDIS регистра CR1: если он равен нулю - генерирование события обновления разрешено, единице - запрещено.
Помимо формирования сигнала обновления счетным регистром, его можно формировать программно (имитация переполнения счетного регистра). Для этого предназначен разряд UG регистра EGR. После записи в него единицы, произойдет перезагрузка счетного регистра и формирование сигнала обновления (если он разрешен разрядом UDIS).
Событие обновление используется для:
· генерирования запроса прерывания от таймера;
· генерирования запроса DMA от таймера;
· запись нового значения регистров ARR и PSC;
· управления другим таймером
Приведенная на рисунке 36 диаграмма иллюстрирует формирования события обновления по переполнению счетного регистра, который работает в режиме счета вверх. В регистре ARR содержится 0Ч36.
Рисунок 36 - Диаграмма формирования события по переполнению счетного регистра
Обновление регистров ARR и PSC.
Запись нового значения в эти регистры имеет некоторые особенности, о которых необходимо помнить.
Если записать новое значение в регистр PSC, то реально делитель будет его использовать только после очередного события обновления UEV. Приведенная на рисунке 37 диаграмма иллюстрирует это.
Рисунок 37 - Диаграмма записи нового значения в регистр PSC
Как видим, после записи нового значения в PSC, буфер делителя (который задает коэффициент деления) получит его только после очередного события обновления. Если событие обновления запрещено установкой разряда UDIS, то обновление буфера делителя не произойдет даже после переполнения счетчика.
Подобный механизм используется и для записи нового значения в регистр ARR. После записи нового значения в этот регистр, оно первоначально помещается в регистр предварительной загрузки, а после очередного события обновления счетного регистра это значение будет переписано в регистр ARR. Это показано на рисунке 38.
Рисунок 38 - Диаграмма записи нового значения в регистр ARR
Чтобы не дожидаться обновления регистра CNT, можно сгенерировать событие обновления “вручную”, записав единицу в разряд UG. После этого произойдет обновление буфера делителя и регистра ARR новыми значениями и обновление новым значением из ARR счетного регистра.
Для регистра ARR можно обойти описанный выше механизм. Для этого предназначен разряд ARPE регистра CR1. Если в этом разряде “0”, то запись нового значения в регистр ARR происходит сразу, не дожидаясь события обновления. Диаграмма записи нового значения в регистра ARR, путем сброса бита ARPE представлена на рисунке 39.
Рисунок 39 - Диаграмма записи нового значения в регистра ARR, путем сброса бита ARPE
Режим одного импульса (OPM)
Этот режим включается установкой разряда OPM регистра CR1 в единицу. Если он включен, то после формирования события обновления будет сброшен разряд CEN, благодаря чему работа таймера будет остановлена.
2.6.2 Описание регистров таймера
Регистр CR1
Структура регистра CR1 представлена на рисунке 40.
Рисунок 40 - Структура регистра CR1
· CKD[1:0] - Битовое поле определяющее соотношение между частотой тактирования и тактовыми импульсами;
· ARPE -- Автоматическая перезагрузка регистра ARR;
· CMS[1:0] -- Указатель режимов счета таймера;
· DIR -- Указатель направления счета таймера;
· OPM --Режим одного импульса;
· URS -- Флаг указывающий на источник UEV;
· UDIS -- Флаг UEV события;
· CEN -- Бит запуска счета;
Регистр DIER
Структура регистра DIER представлена на рисунке 41.
Рисунок 41 - Структура регистра DIER
Данный регистр разрешаетзапрещает прерывания и ПДП запросы от разных источников.
Регистр CNT
Структура регистра CNT представлена на рисунке 42.
Рисунок 42 - Структура регистра CNT
Данный регистр содержит текущее значение счетчика.
Регистр PSC
Структура регистра PSC представлена на рисунке 43.
Рисунок 43 - Структура регистра PSC
Данный регистр содержит значение предделителя таймера
Регистр ARR
Структура регистра ARR представлена на рисунке 44.
Рисунок 44 - Структура регистра ARR
Данный регистр содержит значение, при котором счетчик обнулится, либо (при счете вниз) значение с которого начинается отсчет.
2.6.3 Настройка таймера
Сконфигурируем таймер в соответствии с поставленной задачей:
1. Подаем тактирование на таймер. Для этого устанавливаем бит TIM1EN регистра APB1ENR в «1».
RCC->APB1ENR |= RCC_APB1ENR_TIM1EN;
2. Задаем максимальное значение, до которого будет считать счетчик, в нашем случае берем значение 1, так как нужную частоту обеспечим предделителем. Для этого записываем в регистр ARR значение 1.
TIM1->ARR = 1;
3. Задаем значение предделителя. Нужно обеспечить частоту опроса АЦП 10 кГц. По умолчанию таймер тактируется от внутреннего генератора, для нашего процессора частота равняется 120 МГц. Чтобы обеспечить заданную частоту нужно записать значение 12000, однако из-за того что отсчет начинается с нуля, а не с единицы, запишем 12000-1.
TIM1->PSC = 12000-1;
4. Запускаем ШИМ генератор. Для этого устанавливаем биты OC1M_1, OC1M_2 регистра CCMR1 и бит OIS1 регистра CR2 в «1».
TIM1->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;
TIM1->CR2 |= TIM_CR2_OIS1;
5. Разрешим прерывание по обновлению счетчика. Для этого устанавливаем бит UIE регистра DIER в «1».
TIM1->DIER |= TIM_DIER_UIE;
6. Запускаем счет таймера. Для этого устанавливаем бит CEN регистра CR1 в «1».
TIM1->CR1 |= TIM_CR1_CEN;
2.6.4 Обработчик прерываний таймера
Таймер задает частоту опроса каналов АЦП. По переполнению счетчика таймера срабатывает прерывание, которое запускает преобразование каналов регулярной группы.
Реализация в программном коде:
1. Сбрасываем флаг прерывания. Для этого устанавливаем бит UIF регистра SR в «0».
TIM1->SR &= ~TIM_SR_UIF;
2. Запускаем преобразование каналов регулярной группы. Для этого устанавливаем бит SWSTART регистра CR2 в «1».
ADC1->CR2 |= ADC_CR2_SWSTART;
2.7 UDP стек
2.7.1Настройка UDP стека
Для экономии времени был взят готовый TCP стек - LwIP. В процессе его инициализации, формирования и отправки пакета использовались библиотечные функции.
Реализация в программном коде:
1. Инициализируем Ethernet. Для этого используем библиотечную функцию.
ETH_BSP_Config();
2. Инициализируем TCP стек. Для этого используем библиотечную функцию.
LwIP_Init();
3. Так же нужно периодически рассылать широковещательные пакеты и отвечать на ARP и ICMP запросы. Для этого используем библиотечные функции.
if (ETH_CheckFrameReceived())
{
LwIP_Pkt_Handle();
}
LwIP_Periodic_Handle(LocalTime);
2.8 Основное тело программы
В основном теле программы инициализируем все периферийные устройства, глобально разрешаем прерывания, инициализируем стек, объявляем буфер данных, разрешаем прерывания от таймера и АЦП, выставляем приоритеты прерываний и запускаем функции ответа на ARP и ICMP запросы. Полный текст программы представлен в приложении А.
Реализация в программном коде:
int main(void)
{
unsigned char BuffTxd[1280]
ADC_init();
TIM_init();
DMA_init();
ETH_BSP_Config();
LwIP_Init();
enable_irq();
NVIC_EnableIRQ(TIM1_IRQn);
NVIC_SetPriority(TIM1_IRQn, 1);
NVIC_EnableIRQ(ADC1_IRQn);
while (1)
{
if (ETH_CheckFrameReceived())
{
LwIP_Pkt_Handle();
}
LwIP_Periodic_Handle(LocalTime);
}
}
2.9 Краткая инструкция по применению и настройке
Настройка производится путем изменения соответствующих значений в файле заголовков main.h.
Для настройки IP адреса устройства используются строки #define IP_ADDR0; #define IP_ADDR1; #define IP_ADDR2; #define IP_ADDR3. Соответственно первый октет IP адреса задается строкой define IP_ADDR0 «значение», второй октет строкой #define IP_ADDR1 «значение» и так далее.
Например для задания IP адреса 192.168.0.10 должна быть запись вида:
#define IP_ADDR0 192
#define IP_ADDR1 168
#define IP_ADDR2 0
#define IP_ADDR3 10
Аналогичным образом задаются и остальные параметры.
Маска подсети:
#define NETMASK_ADDR0 «значение»
#define NETMASK_ADDR1 «значение»
#define NETMASK_ADDR2 «значение»
#define NETMASK_ADDR3 «значение»
Основной шлюз:
#define GW_ADDR0 «значение»
#define GW_ADDR1 «значение»
#define GW_ADDR2 «значение»
#define GW_ADDR3 «значение»
MAC адрес устройства:
#define MAC_ADDR0 «значение»
#define MAC_ADDR1 «значение»
#define MAC_ADDR2 «значение»
#define MAC_ADDR3 «значение»
#define MAC_ADDR4 «значение»
#define MAC_ADDR5 «значение»
IP адрес назначения (куда отправлять пакеты):
#define DEST_IP_ADDR0 «значение»
#define DEST_IP_ADDR1 «значение»
#define DEST_IP_ADDR2 «значение»
#define DEST_IP_ADDR3 «значение»
UDP порт назначения (на какой порт отправлять пакеты):
#define UDP_SERVER_PORT «значение»
ГЛАВА 3. БЕЗОПАСНОСТЬ И ЭКОЛОГИЧНОСТЬ
3.1 Требования к помещениям при работе за компьютером
Помещения должны иметь естественное и искусственное освещение. Расположение рабочих мест за мониторами для взрослых пользователей в подвальных помещениях не допускается.
Площадь на одно рабочее место с компьютером для взрослых пользователей должна составлять не менее 6 м2, а объем не менее -20 м3 в соответствии с СанПиН 2.2.2/2.4.1340-03.
Помещения с компьютерами должны оборудоваться системами отопления, кондиционирования воздуха или эффективной приточно-вытяжной вентиляцией.
Для внутренней отделки интерьера помещений с компьютерами должны использоваться диффузно-отражающие материалы с коэффициентом отражения для потолка -- 0,7-0,8; для стен -- 0,5-0,6; для пола -- 0,3-0,5.
Поверхность пола в помещениях эксплуатации компьютеров должна быть ровной, без выбоин, нескользкой, удобной для очистки и влажной уборки, обладать антистатическими свойствами.
В помещении должны находиться аптечка первой медицинской помощи, углекислотный огнетушитель для тушения пожара.
3.2 Требования к микроклимату, ионному составу и концентрации вредных химических веществ в воздухе помещений
На рабочих местах пользователей персональных компьютеров должны обеспечиваться оптимальные параметры микроклимата в соответствии с СанПин 2.2.4.548-96. Согласно этому документу для категории тяжести работ 1а температура воздуха должна быть в холодный период года не более 22-24оС, в теплый период года 20-25оС. Относительная влажность должна составлять 40-60%, скорость движения воздуха -- 0,1 м/с. Для поддержания оптимальных значений микроклимата используется система отопления и кондиционирования воздуха. Для повышения влажности воздуха в помещении следует применять увлажнители воздуха с дистиллированной или кипяченой питьевой водой.
Ионный состав воздуха должен содержать следующее количество отрицательных и положительных аэройонов; минимально необходимый уровень 600 и 400 ионов в 1 см3 воздуха; оптимальный уровень 3 000-5 000 и 1 500-3 000 ионов в 1 см3 воздуха; максимально допустимый -- 50 000 ионов в 1 см3 воздуха.
3.3 Требования к освещению помещений и рабочих мест
В компьютерных залах должно быть естественное и искусственное освещение. Естественное освещение обеспечивается через оконные проемы с коэффициентом естественного освещения КЕО не ниже 1,2% в зонах с устойчивым снежным покровом и не ниже 1,5% на остальной территории. Световой поток из оконного проема должен падать на рабочее место оператора с левой стороны.
Искусственное освещение в помещениях эксплуатации компьютеров должно осуществляться системой общего равномерного освещения.
Освещенность на поверхности стола в зоне размещения документа должна быть 300-500 лк. Допускается установка светильников местного освещения для подсветки документов. Местное освещение не должно создавать бликов на поверхности экрана и увеличивать освещенность экрана более 300 лк. Прямую блесткость от источников освещения следует ограничить. Яркость светящихся поверхностей (окна, светильники), находящихся в поле зрения, должна быть не более 200 кд/м2.
Отраженная блесткость на рабочих поверхностях ограничивается за счет правильного выбора светильника и расположения рабочих мест по отношению к естественному источнику света. Яркость бликов на экране монитора не должна превышать 40 кд/м2. Показатель ослепленности для источников общего искусственного освещения в помещениях должен быть не более 20, показатель дискомфорта в административно-общественных помещениях не более 40. Соотношение яркости между рабочими поверхностями не должно превышать 3:1 -- 5:1, а между рабочими поверхностями и поверхностями стен и оборудования 10:1.
Для искусственного освещения помещений с персональными компьютерами следует применять светильники типа ЛПО36 с зеркализованными решетками, укомплектованные высокочастотными пускорегулирующими аппаратами. Допускается применять светильники прямого света, преимущественно отраженного света типа ЛПО13, ЛПО5, ЛСО4, ЛПО34, ЛПО31 с люминесцентными лампами типа ЛБ. Допускается применение светильников местного освещения с лампами накаливания. Светильники должны располагаться в виде сплошных или прерывистых линий сбоку от рабочих мест параллельно линии зрения пользователя при разном расположении компьютеров. При периметральном расположении -- линии светильников должны располагаться локализовано над рабочим столом ближе к его переднему краю, обращенному к оператору. Защитный угол светильников должен быть не менее 40 градусов. Светильники местного освещения должны иметь не просвечивающийся отражатель с защитным углом не менее 40 градусов.
Для обеспечения нормативных значений освещенности в помещениях следует проводить чистку стекол оконных проемов и светильников не реже двух раз в год и проводить своевременную замену перегоревших ламп.
3.4 Требования к шуму и вибрации в помещениях
Шум на рабочих местах пользователей персональных компьютеров не должны превышать значений, установленных СанПиН 2.2.4/2.1.8.562-96 и составляют не более 50 дБА. На рабочих местах в помещениях для размещения шумных агрегатов эквивалентный уровень звука не должен превышать 75 дБА, а уровень вибрации в помещениях допустимых значений по СН 2.2.4/2.1.8.566-96 категория 3, тип «в».
Снизить шум в помещениях можно использованием звукопоглощающих материалов с максимальными коэффициентами звукопоглощения в области частот 63-8000 Гц для отделки стен и потолка помещений. Дополнительный звукопоглощающий эффект создают однотонные занавески из плотной ткани, повешенные в складку на расстоянии 15-20 см от ограждения. Ширина занавески должна быть в 2 раза больше ширины окна.
3.5 Требования к организации и оборудованию рабочих мест
Рабочие места с персональными компьютерами по отношению к световым проемам должны располагаться так, чтобы естественный свет падал сбоку, желательно слева.
Схемы размещения рабочих мест с персональными компьютерами должны учитывать расстояния между рабочими столами с мониторами: расстояние между боковыми поверхностями мониторов не менее 1,2 м, а расстояние между экраном монитора и тыльной частью другого монитора не менее 2,0 м.
Рабочий стол может быть любой конструкции, отвечающей современным требованиям эргономики и позволяющей удобно разместить на рабочей поверхности оборудование с учетом его количества, размеров и характера выполняемой работы. Целесообразно применение столов, имеющих отдельную от основной столешницы специальную рабочую поверхность для размещения клавиатуры. Используются рабочие столы с регулируемой и нерегулируемой высотой рабочей поверхности. При отсутствии регулировки высота стола должна быть в пределах от 680 до 800 мм.
Глубина рабочей поверхности стола должна составлять 800 мм (допускаемая не менее 600 мм), ширина -- соответственно 1 600 мм и 1 200 мм. Рабочая поверхность стола не должна иметь острых углов и краев, иметь матовую или полуматовую фактуру.
Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной -- не менее 500 мм, глубиной на уровне колен -- не менее 450 мм и на уровне вытянутых ног -- не менее 650 мм.
Быстрое и точное считывание информации обеспечивается при расположении плоскости экрана ниже уровня глаз пользователя, предпочтительно перпендикулярно к нормальной линии взгляда (нормальная линия взгляда 15 градусов вниз от горизонтали).
Клавиатура должна располагаться на поверхности стола на расстоянии 100-300 мм от края, обращенного к пользователю.
Для удобства считывания информации с документов применяются подвижные подставки (пюпитры), размеры которых по длине и ширине соответствуют размерам устанавливаемых на них документов. Пюпитр размещается в одной плоскости и на одной высоте с экраном.
Для обеспечения физиологически рациональной рабочей позы, создания условий для ее изменения в течение рабочего дня применяются подъемно-поворотные рабочие стулья с сиденьем и спинкой, регулируемые по высоте и углам наклона, а также расстоянию спинки от переднего края сидения.
Конструкция стула должна обеспечивать:
§ ширину и глубину поверхности сиденья не менее 400 мм;
§ поверхность сиденья с закругленным передним краем;
§ регулировку высоты поверхности сиденья в пределах 400-550 мм и углом наклона вперед до 15 градусов и назад до 5 градусов.;
§ высоту опорной поверхности спинки 300±20 мм, ширину -- не менее 380 мм и радиус кривизны горизонтальной плоскости 400 мм;
§ угол наклона спинки в вертикальной плоскости в пределах 0±30 градусов;
§ регулировку расстояния спинки от переднего края сидения в пределах 260-400 мм;
§ стационарные или съемные подлокотники длиной не менее 250 мм и шириной 50-70 мм;
§ регулировку подлокотников по высоте над сиденьем в пределах 230±30 мм и внутреннего расстояния между подлокотниками в пределах 350-500 мм.;
§ поверхность сиденья, спинки и подлокотников должна быть полумягкой, с нескользящим не электризующимся, воздухонепроницаемым покрытием, легко очищаемым от загрязнения.
Рабочее место должно быть оборудовано подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20 град. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.
3.6 Режим труда и отдыха при работе с компьютером
Режим труда и отдыха предусматривает соблюдение определенной длительности непрерывной работы на ПК и перерывов, регламентированных с учетом продолжительности рабочей смены, видов и категории трудовой деятельности.
Виды трудовой деятельности на ПК разделяются на 3 группы: группа А -- работа по считыванию информации с экрана с предварительным запросом; группа Б -- работа по вводу информации; группа В -- творческая работа в режиме диалога с ПК .
Если в течение рабочей смены пользователь выполняет разные виды работ, то его деятельность относят к той группе работ, на выполнение которой тратится не менее 50% времени рабочей смены.
Категории тяжести и напряженности работы на ПК определяются уровнем нагрузки за рабочую смену: для группы А -- по суммарному числу считываемых знаков; для группы Б -- по суммарному числу считываемых или вводимых знаков; для группы В -- по суммарному времени непосредственной работы на ПК. В таблице приведены категории тяжести и напряженности работ в зависимости от уровня нагрузки за рабочую смену. Виды категорий трудовой деятельности представлены в таблице 1.
Таблица 1 - Виды категорий трудовой деятельности
Категория работы по тяжести и напряженности |
Уровень нагрузки за рабочую смену при видах работы на ПК |
|||
Группа А Количество знаков |
Группа Б Количество знаков |
Группа В Время работы, ч |
||
I II III |
До 20000 До 40000 До 60000 |
До 15000 До 30000 До 40000 |
До 2,0 До 4,0 До 6,0 |
Количество и длительность регламентированных перерывов, их распределение в течение рабочей смены устанавливается в зависимости от категории работ на ПК и продолжительности рабочей смены.
При 8-часовой рабочей смене и работе на ПК регламентированные перерывы следует устанавливать:
§ для первой категории работ через 2 часа от начала смены и через 2 часа после обеденного перерыва продолжительностью 15 минут каждый;
§ для второй категории работ -- через 2 часа от начала рабочей смены и через 1,5-2,0 часа после обеденного перерыва продолжительностью 15 минут каждый или продолжительностью 10 минут через каждый час работы;
§ для третьей категории работ -- через 1,5- 2,0 часа от начала рабочей смены и через 1,5-2,0 часа после обеденного перерыва продолжительностью 20 минут каждый или продолжительностью 15 минут через каждый час работы.
При 12-часовой рабочей смене регламентированные перерывы должны устанавливаться в первые 8 часов работы аналогично перерывам при 8-часовой рабочей смене, а в течение последних 4 часов работы, независимо от категории и вида работ, каждый час продолжительностью 15 минут.
Продолжительность непрерывной работы на ПК без регламентированного перерыва не должна превышать 2 часа.
При работе на ПК в ночную смену продолжительность регламентированных перерывов увеличивается на 60 минут независимо от категории и вида трудовой деятельности.
Эффективными являются нерегламентированные перерывы длительностью 1-3 минуты.
Регламентированные перерывы целесообразно использовать для выполнения комплекса упражнений и гимнастики для глаз, пальцев рук, а также массажа. Комплексы упражнений целесообразно менять через 2-3 недели.
Пользователям ПК, выполняющим работу с высоким уровнем напряженности, показана психологическая разгрузка во время регламентированных перерывов и в конце рабочего дня в специально оборудованных помещениях (комнатах психологической разгрузки).
Медико-профилактические и оздоровительные мероприятия. Все профессиональные пользователи ПК должны проходить обязательные предварительные медицинские осмотры при поступлении на работу, периодические медицинские осмотры с обязательным участием терапевта, невропатолога и окулиста, а также проведением общего анализа крови и ЭКГ.
Не допускаются к работе на ПК женщины со времени установления беременности и в период кормления грудью.
Близорукость, дальнозоркость и другие нарушения рефракции должны быть полностью корригированы очками. Для работы должны использоваться очки, подобранные с учетом рабочего расстояния от глаз до экрана дисплея. При более серьезных нарушениях состояния зрения вопрос о возможности работы на ПК решается врачом-офтальмологом.
Досуг рекомендуется использовать для пассивного и активного отдыха (занятия на тренажерах, плавание, езда на велосипеде, бег, игра в теннис, футбол, лыжи, аэробика, прогулки по парку, лесу, экскурсии, прослушивание музыки и т.п.). Дважды в год (весной и поздней осенью) рекомендуется проводить курс витаминотерапии в течение месяца. Следует отказаться от курения. Категорически должно быть запрещено курение на рабочих местах и в помещениях с ПК.
3.7 Обеспечение электробезопасности и пожарной безопасности на рабочем месте
На рабочем месте пользователя размещены дисплей, клавиатура и системный блок. При включении дисплея на электронно-лучевой трубке создается высокое напряжение в несколько киловольт. Поэтому запрещается прикасаться к тыльной стороне дисплея, вытирать пыль с компьютера при его включенном состоянии, работать на компьютере во влажной одежде и влажными руками.
Перед началом работы следует убедиться в отсутствии свешивающихся со стола или висящих под столом проводов электропитания, в целостности вилки и провода электропитания, в отсутствии видимых повреждений аппаратуры и рабочей мебели, в отсутствии повреждений и наличии заземления приэкранного фильтра.
Токи статического электричества, наведенные в процессе работы компьютера на корпусах монитора, системного блока и клавиатуры, могут приводить к разрядам при прикосновении к этим элементам. Такие разряды опасности для человека не представляют, но могут привести к выходу из строя компьютера. Для снижения величин токов статического электричества используются нейтрализаторы, местное и общее увлажнение воздуха, использование покрытия полов с антистатической пропиткой.
Для предотвращения поражений электрическим током при работе с компьютером следует установить дополнительные оградительные устройства, обеспечивающие недоступность токоведущих частей для прикосновения; с целью уменьшения опасности можно использовать разделительный трансформатор для развязки с основной сетью, и обязательным во всех случаях является наличие защитного заземления или зануления (защитного отключения) электрооборудования. Для качественной работы компьютеров создается отдельный заземляющий контур.
Пожарная безопасность обеспечивается системой предотвращения пожара и системой пожарной защиты. Во всех служебных помещениях обязательно должен быть «План эвакуации людей при пожаре», регламентирующий действия персонала в случае возникновения очага возгорания и указывающий места расположения пожарной техники.
Пожары в ВЦ представляют особую опасность, так как сопряжены с большими материальными потерями. Характерная особенность ВЦ -- небольшие площади помещений. Как известно, пожар может возникнуть при взаимодействии горючих веществ, окислителя и источников зажигания. В помещениях ВЦ присутствуют все три основные фактора, необходимые для возникновения пожара.
Горючими компонентами на ВЦ являются: строительные материалы для акустической и эстетической отделки помещений, перегородки, двери, полы, перфокарты и перфоленты, изоляция кабелей и др.
Источниками зажигания в ВЦ могут быть электрические схемы от ЭВМ, приборы, применяемые для технического обслуживания, устройства электропитания, кондиционирования воздуха, где в результате различных нарушений образуются перегретые элементы, электрические искры и дуги, способные вызвать загорания горючих материалов.
В современных ЭВМ очень высокая плотность размещения элементов электронных схем. В непосредственной близости друг от друга располагаются соединительные провода, кабели. При протекании по ним электрического тока выделяется значительное количество теплоты. При этом возможно оплавление изоляции. Для отвода избыточной теплоты от ЭВМ служат системы вентиляции и кондиционирования воздуха. При постоянном действии эти системы представляют собой дополнительную пожарную опасность.
Для большинства помещений ВЦ установлена категория пожарной опасности -В по НПБ 105-03.
ГЛАВА 4. АНАЛИЗ ТЕХНИКО-ЭКОНОМИЧЕСКИХ ПОКАЗАТЕЛЕЙ И ОБОСНОВАНИЕ ЭКОНОМИЧЕСКОЙ ЦЕЛЕСООБРАЗНОСТИ ПРИНЯТЫХ В ПРОЕКТЕ РЕШЕНИЙ
4.1 Расчет материальных затрат на необходимое дополнительное оборудование
Расчеты затрат на покупные материалы и оборудование представлены в таблице 2.
Таблица 2 - Материальные затраты
Наименование материального ресурса |
Ед. измерения |
Цена за единицу, руб. |
Кол-во |
Затраты, руб. |
НДС |
Сумма без НДС |
|
Модуль TE-STM32F207 |
шт. |
3591,58 |
1 |
3591,58 |
646,48 |
2945,1 |
|
Витая пара U/FTP, 4 пары, Cat.6 |
м. |
32,13 |
305 |
9799,65 |
1763,93 |
8035,72 |
|
Итого |
13391,23 |
2410,41 |
10980,82 |
Затраты на все материальные ресурсы с учетом транспортных расходов рассчитываются по формуле:
,
где: - общие материальные ресурсы;
- затраты на закупаемое оборудование и материалы;
- коэффициент транспортно-заготовительных расходов, принимается в пределах 15% от стоимости материалов;
4.2 Расчет трудозатрат
Определим этапы и исполнителей в процессе внедрения системы. Сведем данные в таблицу 3.
Таблица 3 - Трудозатраты
№ |
Наименование этапов |
Исполнители |
Трудоёмкость, чел/дни |
|
1 |
Постановка задачи |
руководитель |
1 |
|
2 |
Разработка схемы прокладки кабеля |
инженер |
2 |
|
3 |
Прокладка кабеля и монтаж Сетевого оборудования |
рабочий |
4 |
|
4 |
Написание программы |
инженер |
3 |
|
5 |
Консультации по специальной части |
руководитель |
2 |
|
6 |
Консультации по БЖД |
консультант |
1 |
|
7 |
Консультации по экономике |
консультант |
1 |
|
8 |
Проведение нормоконтроля |
консультант |
1 |
|
9 |
Сдача работы |
руководитель |
1 |
|
Итого |
16 |
4.3 Расчёт заработной платы
Определяем оклады руководителю, консультанту, рабочему и инженеру. Считая, что в месяце 22 рабочих дня, определяем дневной заработок, а также трудоёмкость. Месячный оклад руководителя составляет 12000 руб., консультанта-4500руб., рабочего-6000 руб., инженера-8500 руб. Сведем результаты расчетов в таблицу 4.
Таблица 4 - Расчет заработной платы
Исполнители |
Дневной заработок, руб. |
Участие, дни |
Заработная плата, руб. |
|
Руководитель |
545,45 |
4 |
2181,8 |
|
Инженер |
386,36 |
5 |
1931,8 |
|
Рабочий |
272,72 |
4 |
1090,88 |
|
Консультант по экономике |
204,55 |
1 |
204,55 |
|
Консультант по БЖД |
204,55 |
1 |
204,55 |
|
Консультант по нормоконтролю |
204,55 |
1 |
204,55 |
|
Итого |
16 |
5818,13 |
4.4 Смета затрат
Фонд оплаты труда (ФОТ) определяется суммой основной заработной платы (ОЗП) и дополнительной заработной платы (ДЗП). ДЗП составляет 30% от ОЗП:
Отчисления в фонд социального страхования (ФСС) определяется в размере 35,6% от фонда оплаты труда:
.
Затраты на электроэнергию определяются по формуле
где - коэффициент использования мощности, ;
- мощность всех приборов;
- фонд времени работы прибора;
- стоимость киловатт-часа электроэнергии, .
Результаты расчета затрат на электроэнергию сведены в таблицу 5.
Таблица 5 - Затраты на электроэнергию
Оборудование |
Потребляемая мощность, кВт |
Фонд времени, час |
Расход, кВт час |
Затраты, руб. |
НДС, руб. |
Сумма без НДС, руб. |
|
Программатор |
0,05 |
4 |
0,2 |
0,19 |
0,038 |
0,152 |
|
Итого |
0,19 |
0,038 |
0,152 |
4.5 Амортизация
В процессе установки программного обеспечения был использован программатор TE-ARM-LINK
На проведение экспериментальных работ выделен 1 день или 0,0027 года. Результаты работы сведены в таблицу 6. Норма амортизации составляет 15%.
Таблица 6 - Амортизационные отчисления
Наименование оборудования |
Цена за единицу, руб. |
Время использования, год |
Норма амортизации, % |
Год. сумма амортизации, руб. |
Амортизационные отчисления, руб. |
|
Программатор TE-ARM-LINK |
2632.83 |
0,0027 |
15 |
394,92 |
1,06 |
|
Итого |
394,92 |
1,06 |
Время дипломного проектирования 3 месяца, что составляет 0,25 лет. Затраты на специальное оборудование составляют:
,
где - затраты на специальное оборудование;
- годовые амортизационные отчисления;
- время использования по теме;
- длительность работы над дипломом.
Общая сумма всех затрат:
.
Полная себестоимость:
.
Полученные результаты расчёта основных технико-экономических показателей модернизации сведены в таблицу 7.
Таблица 7 - Основные показатели
№ |
Статьи затрат |
Сумма, руб. |
|
1 |
Основная заработная плата |
5818,13 |
|
2 |
Дополнительная заработная плата |
1745,44 |
|
3 |
Фонд оплаты труда |
7563,57 |
|
4 |
Отчисления в фонд социального страхования |
2692,63 |
|
5 |
Амортизационные отчисления |
1,06 |
|
6 |
Затраты на электроэнергию |
0,152 |
|
7 |
Затраты на материальные ресурсы |
15399,92 |
|
Полная себестоимость |
22936,91 |
||
Лимитная цена |
32111,67 |
||
Цена разработки |
38534,00 |
4.6 Расчёт цены реализации разработки
Определим лимитную цену разработки по формуле:
,
где - прибыль предприятия определяется рентабельностью изделия и принимается равной 40% от себестоимости.
Цена реализации разработки:
где - налог на добавленную стоимость, составляет 20% от лимитной цены разработки.
ЗАКЛЮЧЕНИЕ
В данном дипломном проекте была разработана универсальная микропроцессорная система сбора сигналов со следующими характеристиками: 8 каналов, частота опроса 10 кГц, Ethernet интерфейс, микроконтроллер STM32F207.
Рассмотрены в общем виде процесс производства стали, описаны известные способы детектирования шлака, выполнен анализ поставленной задачи, определена возможность её реализации и перечень работ, необходимых для её выполнения.
Оценены характеристики периферийных устройств контроллера и определены режимы их работы, необходимые для выполнения технического задания.
Разработано программное обеспечение для модуля TE-STM32F207 позволяющее применять данную плату для любой системы детектирования шлака, описанной в данной работе.
Рассмотрены нормы безопасности необходимые к соблюдению при проектировании и реализации данного проекта.
Произведен анализ технико-экономических показателей и обоснование экономической целесообразности принятых в проекте решений
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Машины и агрегаты металлургических заводов. / В 3-х томах.Т.2 Машины и агрегаты сталеплавильных цехов. Учебник для вузов/Целиков А.И., Полухин П.И., Гребеник В.М. и др. 2-е изд.,перераб. и доп.- М.:Металлургия, - 1988 - 432 с. - С.- 73 - 87.
2. Technoap.ru - сайт НПО «ТехноАп».
3. Анализ эффективности раннего обнаружения шлака при сливе металла из одних металлургических емкостей в другие. Отчет НПО 'ТехноАп' по материалам зарубежной прессы и результатам испытания на ММК.
4. Разработка и промышленная эксплуатация на ОАО 'ММК' системы раннего обнаружения шлака 'ДШ-К' фирмы ЗАО 'ТЕХНОАП'. Тахаутдинов Р.С., Носов А.Д., Бодяев Ю.А., Бузинник В.М.. (ОАО 'Магнитогорский металлургический комбинат'), Сорокин А.Н., Формакидов А.М.(ЗАО 'Техноап').
5. Cortex-M3 Technical reference manual, ARM Ltd.
6. ARMv7-M architectural reference manual, ARM Ltd.
7. ARM Architectural reference manual Thumb2 supplement, ARM Ltd.
8. STM32F207xx User Manual, ST Microelectronics.
9. STM32F20xxx FLASH Programming manual, ST Microelectronics.
ПРИЛОЖЕНИЕ А
(обязательное)
#include 'stm32f2x7_eth.h'
#include 'stm32f2xx_it.h'
#include 'netconf.h'
#include 'main.h'
void AdcInit(void)
{
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
GPIOA->CRL &= ~GPIO_CRL_MODE0;
GPIOA->CRL &= ~GPIO_CRL_MODE1;
GPIOA->CRL &= ~GPIO_CRL_MODE2;
GPIOA->CRL &= ~GPIO_CRL_MODE3;
GPIOA->CRL &= ~GPIO_CRL_MODE4;
GPIOA->CRL &= ~GPIO_CRL_MODE5;
GPIOA->CRL &= ~GPIO_CRL_MODE6;
GPIOA->CRL &= ~GPIO_CRL_MODE7;
GPIOA->CRL &= ~GPIO_CRL_CNF0;
GPIOA->CRL &= ~GPIO_CRL_CNF1;
GPIOA->CRL &= ~GPIO_CRL_CNF2;
GPIOA->CRL &= ~GPIO_CRL_CNF3;
GPIOA->CRL &= ~GPIO_CRL_CNF4;
GPIOA->CRL &= ~GPIO_CRL_CNF5;
GPIOA->CRL &= ~GPIO_CRL_CNF6;
GPIOA->CRL &= ~GPIO_CRL_CNF7;
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
ADC1->CR2 |= ADC_CR2_DMA;
ADC1->CR1 |= ADC_CR1_EOCIE;
ADC1->CR2 |= ADC_CR2_CAL;
while (!(ADC1->CR2 & ADC_CR2_CAL)){};
ADC1->CR2 |= ADC_CR2_EXTSEL;
ADC1->CR2 |= ADC_CR2_EXTTRIG;
ADC1->SMPR1 |= ADC_SMPR1_SMP0;
ADC1->SMPR1 |= ADC_SMPR1_SMP1;
ADC1->SMPR1 |= ADC_SMPR1_SMP2;
ADC1->SMPR1 |= ADC_SMPR1_SMP3;
ADC1->SMPR1 |= ADC_SMPR1_SMP4;
ADC1->SMPR1 |= ADC_SMPR1_SMP5;
ADC1->SMPR1 |= ADC_SMPR1_SMP6;
ADC1->SMPR1 |= ADC_SMPR1_SMP7;
ADC1->SQR3 |= ADC_SQR3_SQ2_0;
ADC1->SQR3 |= ADC_SQR3_SQ3_1;
ADC1->SQR3 |= ADC_SQR3_SQ4_0;
ADC1->SQR3 |= ADC_SQR3_SQ4_1;
ADC1->SQR3 |= ADC_SQR3_SQ5_2;
ADC1->SQR3 |= ADC_SQR3_SQ6_0;
ADC1->SQR3 |= ADC_SQR3_SQ6_2;
ADC1->SQR3 |= ADC_SQR3_SQ7_1;
ADC1->SQR3 |= ADC_SQR3_SQ7_2;
ADC1->SQR3 |= ADC_SQR3_SQ8_0;
ADC1->SQR3 |= ADC_SQR3_SQ8_1;
ADC1->SQR3 |= ADC_SQR3_SQ8_2;
ADC1->SQR1 |= ADC_SQR1_L_3;
ADC1->CR2 |= ADC_CR2_ADON;
}
void TIM_init(void)
{
RCC->APB1ENR |= RCC_APB1ENR_TIM1EN;
TIM1->ARR = 1;
TIM1->PSC = 12000-1;
TIM1->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2;
TIM1->CR2 |= TIM_CR2_OIS1;
TIM1->CR1 |= TIM_CR1_CEN;
TIM1->DIER |= TIM_DIER_UIE;
}
void TIM2_IRQHandler (void)
{
TIM1->SR &= ~TIM_SR_UIF;
ADC1->CR2 |= ADC_CR2_SWSTART;
}
void DMA_init (void)
{
RCC->AHBENR |= RCC_AHBENR_DMA1EN;
DMA1_Channel1->CPAR = (uint32_t) &ADC1->DR;
DMA1_Channel1->CMAR = (uint32_t) &BuffRxd[0];
DMA1_Channel1->CNDTR = 1;
DMA1_Channel1->CCR &= ~DMA_CCR4_DIR;
DMA1_Channel1->CCR |= DMA_CCR4_PSIZE_0;
DMA1_Channel1->CCR = ~DMA_CCR4_PINC;
DMA1_Channel4->CCR |= DMA_CCR4_MSIZE_0;
DMA1_Channel4->CCR |= DMA_CCR4_MINC;
DMA1_Channel1->CCR |= DMA_CCR1_CIRC;
DMA1_Channel1->CCR |= DMA_CCR1_EN;
}
void ADC1_2_IRQHandler (void)
{
schetchik = schetchik + 1
if (schetchik = 80)
{
schetchik = 0
struct udp_pcb *upcb;
struct pbuf *p;
struct ip_addr DestIPaddr;
unsigned char tdata[1280] = BuffTxd[1280];
char *data = tdata;
upcb = udp_new();
IP4_ADDR( &DestIPaddr, DEST_IP_ADDR0, DEST_IP_ADDR1, DEST_IP_ADDR2, DEST_IP_ADDR3 );
udp_connect(upcb, &DestIPaddr, UDP_SERVER_PORT);
p = pbuf_alloc(PBUF_TRANSPORT,strlen((char*)data), PBUF_POOL);
pbuf_take(p, (char*)data, strlen((char*)data));
udp_send(upcb, p);
udp_disconnect(upcb);
pbuf_free(p);
}
}
int main(void)
{
unsigned char BuffTxd[1280]
ADC_init();
TIM_init();
DMA_init();
ETH_BSP_Config();
LwIP_Init();
__enable_irq();
NVIC_EnableIRQ(TIM1_IRQn);
NVIC_SetPriority(TIM1_IRQn, 1);
NVIC_EnableIRQ(ADC1_IRQn)
while (1)
{
if (ETH_CheckFrameReceived())
{
LwIP_Pkt_Handle();
}
LwIP_Periodic_Handle(LocalTime);
}
}