Разработка программной части осциллографа-приставки

Выпускная квалификационная работа. Часть 4.

4.1 Программа для микроконтроллера
  4.1.1 Инициализация
  4.1.2 Режим DMA
  4.1.3 Передача данных по UART
  4.1.4 Алгоритм программы микроконтроллера
4.2 Программа для ПК
  4.2.1 Обработка данных в LabVIEW
  4.2.2 Цифровой фильтр
  4.2.3 Синхронизация
  4.2.4 Спектр сигнала
  4.2.5 Графический интерактивный интерфейс пользователя
4.3 Вывод

Программное обеспечение (ПО) микропроцессорных систем состоит из двух частей: ПО микропроцессора и ПО для компьютера. ПО микропроцессора загружается во внутреннюю память микропроцессора, его задача обеспечить работу АЦП, мультиплексора, генератора тестового сигнала, обеспечить взаимодействия микроконтроллера с компьютером. Кроме того на ПО микропроцессора возлагается задача первичной обработки оцифрованного сигнала, дальнейшей обработкой занимается ПО компьютера.

При программировании микроконтроллера можно выбирать язык либо низкого, либо высокого уровня. К языкам программирования "низкого" уровня относятся языки программирования в которых каждому оператору соответствует не более одной машинной команды. Языки программирования низкого уровня в настоящее время называются ассемблерами. Языки программирования "высокого" уровня позволяют заменять один оператор несколькими машинными командами. Языки "высокого" уровня позволяют писать программы, которые могут выполняться на различных микропроцессорах. В настоящее время наиболее распространены такие языки программирования высокого уровня как С и PLM. При этом необходимо использовать программы-трансляторы для соответствующего процессора. Микроконтроллер ADUC842, относиться к семейству контроллеров MCS-51. Для микроконтроллеров семейства MCS-51 получили известность продукты таких фирм как FRANCLIN, IAR, KEIL. В состав современных средств написания и отладки программ для микроконтроллеров обычно входят эмуляторы процессоров или отладочные платы, текстовый редактор, компиляторы языка высокого уровня (чаще всего "C") и ассемблера, редактор связей и загрузчик программы в отладочную плату. Все программы обычно объединены интегрированной средой разработки программного проекта, позволяющую поддерживать один или несколько программных проектов. В СибГУТИ студенты изучают язык С в программной среде KEIL µVision, на котором и был сделан данный проект.

Разработка ПО для компьютера, работающего под управлением какой-либо операционной системой требует навыка профессионального программиста, знающего особенности операционных систем и языков программирования. Но существует способ создания профессионального программного обеспечения без участия высококвалифицированного программиста — технология виртуальных приборов. Эта технология позволяет создавать системы измерения, управления и диагностики различного назначения практически любой произвольной сложности, включая математическое моделирование и тестирование этих систем. Суть этой технологии состоит в компьютерной имитации с помощью программы реальных физических приборов, измерительных и управляющих систем. Программная среда LabVIEW является именно таким инструментарием технологии виртуальных приборов. [!]

Слово «виртуальный» не совсем оправдывает своего значения, поскольку приборы, реализованные по этой технологии, на самом деле являются реальными работающими с реальными физическими входными сигналами. Виртуальность здесь понимается в смысле виртуальной имитации функций прибора математическими и программными методами. Например, виртуальный осциллограф по функциям эквивалентен реальному осциллографу, поскольку имеет физический вход для электрического сигнала. Преобразование сигнала в цифровой сигнал осуществляется аналого-цифровым преобразователем. Дальнейшая обработка и управление сигналом, его отображение для наблюдения осуществляются программным способом. Такой осциллограф имеет виртуальный экран, виртуальные ручки управления (усиление, синхронизация, развертка и др.), графически отображаемые на экране монитора компьютера. Ручки, переключатели, кнопки виртуального прибора управляются с клавиатуры или посредством мыши.

Преимущество технологии виртуальных приборов состоит в возможности программным путем, опираясь на мощь современной компьютерной техники, создавать разнообразные приборы, измерительные системы и программно-аппаратные комплексы, легко их адаптировать к изменяющимся требованиям, уменьшить затраты и время на разработку.

Общепризнанным мировым лидером технологии виртуальных приборов является компания National Instruments, которая уже более 30 лет производит аппаратное и программное обеспечение, позволяющее создавать системы измерения, управления и диагностики. Программное обеспечение National Instruments (NI) включает в себя среды для разработки приложений LabVIEW, LabWindows/CVI и Measurement Studio, драйверы приборов и различного оборудования, а также высокоуровневые средства управления тестами и обработкой данных. Программное обеспечение использует последние версии операционных систем Windows, Mac OS X, Linux и может быть использовано на различных аппаратных платформах: на персональных и промышленных компьютерах, в распределенных системах.

Программная среда LabVIEW представляет собой высокоэффективную среду графического программирования. Широкие функциональные возможности среды LabVIEW позволяют использовать ее в практической работе студенту, инженеру. Интуитивно понятный процесс графического программирования позволяет специалисту уделять больше внимания решению самой проблемы, а не процессу программирования.

Особенности среды LabVIEW состоят в следующем:

  • функционально полный язык графического программирования, позволяющий создавать программу в форме наглядной графической блок-схемы, которая традиционно используется радиоинженерами;
  • встроенные программные средства для сбора данных, управления приборами и оборудованием, обработки сигналов и экспериментальных данных, генерации отчетов, передачи и приема данных и так далее;
  • мощное математическое обеспечение, возможность интеграции программ, написанных в среде математического пакета Matlab;
  • наличие более 2000 программ (драйверов), позволяющих сопрягать разработанную программу с разнообразными приборами и оборудованием различных фирм через стандартные интерфейсы;
  • наличие большого количества шаблонов приложений, а также свыше 1000 примеров, позволяющих быстро создавать собственные программы, внося в них небольшие коррекции;
  • возможность работы LabVIEW под управлением операционных систем Windows 2000/NT/XP, Mac OS X, Linux и Solaris.

Программу, написанную в среде LabVIEW, принято называть виртуальным прибором (ВП), или виртуальным инструментом (ВИ). Следует это из того, что любая программа, созданная в LabVIEW, представляется в виде некоторого прибора, основными составляющими которого являются лицевая панель, блок-схема, иконка и соединительная панель.

На лицевой панели располагаются элементы управления (регули-рующие ползунки, ручки, кнопки, переключатели), а также элементы отображения (экраны, цифровые табло, индикаторы). Лицевая панель является графическим интерактивным интерфейсом пользователя для управления программой.

Иконка и соединительная панель ВП служат для того, чтобы другие ВП могли передавать данные на входы ВП. Иконка является графическим изображением ВП. Соединительная панель – это графическое изображение полей ввода и вывода данных в ВП. Иконка и соединитель позволяют использовать ВП как основные программы (программы верхнего уровня) или как подпрограммы внутри других программ или подпрограмм. Графическим эквивалентом подпрограммы в LabVIEW будет виртуальный подприбор (виртуальный субинструмент) subVI.

Таким образом, LabVIEW придерживается концепции модульного программирования. При этом прикладная программа делится на ряд задач, которые можно делить снова, пока сложная прикладная программа не становится последовательностью простых подзадач. Далее формируются ВП, чтобы выполнить каждую подзадачу, а затем эти ВП объединяются на блок-схеме для выполнения общей задачи. В результате ВП верхнего уровня содержит совокупность подприборов.

Блок-схема представляет собой графическое изображение блоков, входящих в состав прибора, а также терминалы элементов управления, размещенных на лицевой панели. Как и в традиционной блок-схеме, сигнал в процессе обработки проходит через блоки от входа к выходу.

В среде LabVIEW применяется принцип обработки потока данных. По этой схеме обработка сигнала блоком начинается только тогда, когда поток данных сформирован на его входе. Последующий блок начинает обработку после окончания работы предыдущего блока. Поток данных движется от блока к блоку, подчиняясь естественной причинно-следственной связи в цепи обработки сигнала. Таким образом, обработка потока данных управляется самим потоком данных и зависит от самих данных (data dependent). В отличие от этого в обычных текстовых языках программирования порядок выполнения программы определяется последовательностью инструкций - потоком управления. Принцип потока данных LabVIEW упрощает разработку многопоточных и многозадачных программ.

4.1 Программа для микроконтроллера

Программа выполняется циклически, поскольку прекращает работать только тогда, когда этого захочет пользователь. Программа состоит из инициализации и настройки микроконтроллера, основной программы, в которой осуществляется преобразование сигнала, и передачи полученных данных по UART. Как уже было сказано, программа пишется на языке «высокого» уровня С.

4.1.1 Инициализация

Инициализация состоит из:

  • настройки ядра микроконтроллера на работу на частоте 16МГц,
  • настройка режима работы UART и скорости его передачи,
  • активизирования АЦП, настройки режима работы и частоты дискретизации АЦП,
  • конфигурация памяти ОЗУ микроконтроллера как внешней памяти XRAM.

ADUC842 тактируется от внешнего часового кварца с частотой 32,768 кГц. Интегрированная система фазовой автоподстройки частоты (ФАПЧ) умножает эту частоту на 512, получая 16,78 МГц. Ядро может работать непосредственно от этой частоты, либо от частот полученных делением 16,78 на кратные двоичные числа. По умолчанию ядро работает на частоте 2 МГц. А хотелось бы, чтоб было 16,78 МГц. Для этого существует регистр специальной функции (РСФ, SFR – special function register) PLLCON – регистр управления ФАПЧ, который настраивает микроконтроллер на необходимую рабочую частоту.

Таблица 4.1 – Описание регистра PLLCON

Номер бита Название бита Описание
7 OSC_PD
Бит включения кварца в режиме микропотребления
0 -кварц включен
1 -кварц выключен
6 LOCK Бит защелки ФАПЧ
Автоматически устанавливается в «1», если ФАПЧ отслеживает синхроимпульсы корректно, иначе «0»
5 По умолчанию значение «0». Без значения.
4 По умолчанию значение «0». Без значения.
3 FINT Бит быстрого ответа прерывания.
2 CD2
Биты установления коэффициента деления частоты ядра.
CD2 CD1 CD0 Частота ядра (МГц)
0 0 0 16,777216
0 0 1 8,388608
0 1 0 4,194304
0 1 1 2,097152 (по умолчанию)
1 0 0 1,048576
1 0 1 0,524288
1 1 0 0,262144
1 1 1 0,131072
1 CD1
0 CD0

Установим PLLCON = 0x00;

Инициализация UART нужна для того, чтобы ее использовать для передачи данных в ПК.

Конфигурировать внутреннее ОЗУ микроконтроллера нужно для того, чтобы АЦП работало в режиме DMA. Тем самым мы получаем максимальную скорость работы АЦП и всей системы в целом. Для конфигурации внутреннего ОЗУ как внешнего существует регистр CFG842. Этот регистр содержит биты для конфигурации внутреннего ОЗУ, выбора внешних источников синхронизации, выбор вывода для широтно-импульсной модуляции (ШИМ), буфер ЦАП.

Таблица 4.2 – Описание регистра CFG842

Номер бита Название бита Описание
7 EXSP
Разрешение расширения указателя стека.
0 -стек занимает область от 0x00 до 0xFF
1 -стек занимает область от 0х00FF до 0х0100
6 PWP0
Бит выбора вывода для ШИМ
0 -выводы P2.6 и Р2.7
1 -выводы Р3.4 и Р3.3
5 DBUF
Выходной буфер ЦАП
0 -буфер включен
1 -буфер выключен
4 EXTCLK
0 -использование внутреннего ФАПЧ
1 -использование внешнего тактирования (вход P3.4)
3 RSVD Всегда имеет значение 0
2 RSVD Всегда имеет значение 0
1 MSPI
Конфигурация SPI
0 -для SPI используются выводы MISO, MOSI и SCLOCK
1 -функция выводов MISO, MOSI и SCLOCK переносится на выводы P3.3, P3.4, и P3.5, соответственно
0 XRAMEN
Бит включения внешнего ОЗУ
0 -внутреннее ОЗУ недоступно. Внешняя память занимает адреса нижнего 2КБ внешнего ОЗУ
1 -внутренне ОЗУ работает как внешнее и занимает нижние адреса 2КБ внешнего ОЗУ
 
Биты регистра CFG842
Рисунок 4.1 - Биты регистра CFG842

CFG842 = 0x21;

Функция инициализации выглядит следующим образом:

void ini()
{
    PLLCON=0x00;      //настройка ядра на 16МГц
    SCON=0x52;        //первый режим работы UART
    T3CON=0x81;       //настройка скорости передачи UART
    T3FD=0x09;
    ADCCON1=0xBC;     //настройка АЦП
    ADCCON2=0x40;
    CFG842=0x21;      //конфигурация внутреннего ОЗУ как внешней
}

4.1.2 Режим DMA

АЦП в микроконверторе ADUC842 может работать в особом режиме, называемом режим DMA. АЦП можно установить в режим передачи данных по каналу прямого доступа к памяти (ПДП, DMAdirect memory access), когда блок повторяет циклы преобразования и посылает выборки во внешнюю память данных, минуя процессор.

Внутренний АЦП способен осуществлять выборки каждые 2,4 мксек. Таким образом, программа пользователя должна обслужить прерывание (прочитать результат и записать его в оперативную память микроконтроллера для дальнейшей обработки) в течение 2 мксек, иначе результат следующей выборки может быть потерян.

Режим DMA включается битом ADCCON2.6, после чего АЦП работает в соответствии с запрограммированным режимом, а результат каждой выборки записывается во внешнюю память данных, минуя микропроцессор. Повторим, что результат преобразования сигнала записывается как 12-битный код. Этот результат записывается в регистры ADCDATAL и ADCDATAH. Причем, младшие 8 бит записываются в регистр ADCDATAL, а старшие 4 бита в младшие 4 бита регистра ADCDATAH. В старшие 4 бита регистра ADCDATAH записывается номер канала АЦП для дальнейшего их различения при необходимости. DMA режим обеспечивает реализацию максимального быстродействия АЦП. Конфигурация DMA режима:

1. В указатель адреса DMA, куда кладутся результаты преобразования, запивается начальный адрес. Начальный адрес записывается в регистры - указатели адреса DMAL, DMAH и DMAP. Причем, в обязательном порядке адрес пишется сначала в DMAL, затем в DMAH и DMAP.

2. Внешняя память должна быть размеченной. Разметка состоит в записи номера канала, с которого будут считываться данные. Номер канала записывается в старшие 4 бита каждого второго байта в области памяти ОЗУ. Так как АЦП в DMA режиме работает независимо от ядра контроллера, необходимо обеспечить его командой остановки. Это делается посредством записи в последнее место записи номера канала числа «1111» в двоичной системе счисления. Так как ОЗУ микроконтроллера составляет 2КБ, то количество двухбайтовых чисел, которые можно записать туда, будет 1000. Так как в последние два байта занимает стоп - команда, то количество данных, которые могут быть получены за один цикл DMA, составляет N=998.

Разметка памяти ОЗУ
Рисунок 4.2 - Разметка памяти ОЗУ

3. Разрешение режима DMA (записываем в бит DMA = 1 регистра ADCCON2)

4. Конфигурация регистра ADCCON1. Устанавливаем скорость АЦП.

5. Старт преобразования. Устанавливаем бит CCONV = 1.

Когда цикл преобразования в режиме DMA окончен, бит прерывания ADCI автоматически устанавливается в «1». Результаты преобразования будут записаны в ОЗУ. В последние 2 байта результаты не записываются. После обработки полученным результатов, для следующего цикла DMA нужно флаг ADCI обнулить, и заново сделать шаги, указанные выше.

Операции в одном цикле DMA
Рисунок 4.3 - Операции в одном цикле DMA

Логические операции, выполняемые при режиме DMA, тактируются от внутреннего генератора микроконвертора. АЦП и запись полученных результатов в память ОЗУ выполняется одновременно. Пока АЦП выполняет преобразование аналогового сигнала в цифровой, результат преобразования записывается во внешнюю память и происходит считывание номера следующего канала в соответствии с рисунком 4.3.

Настройка АЦП на нужный рабочий режим и конфигурация нужных свойств АЦП производиться через три SFR: ADCCON1, ADCCON2 и ADCCON3.

Регистр ADCCON1 управляет режимом работы АЦП, значением тактовой частоты АЦП, временем переключения каналов, внешним запуском, регистр не имеет отдельно адресуемых битов.

Таблица 4.3 – Значение битов регистра ADCCON1

Номер бита Название бита Описание
ADCCON1.7 MD1
Бит режима работы АЦП:
0 -Режим микропотребления
1 -Нормальный режим работы
ADCCON1.6 EXT_REF Бит выбора источника опорного напряжения:
0 -Внутренний ИОН
1 -Внешний ИОН
ADCCON1.5 CD2 Биты деления тактовой частоты.
Определяют коэффициент деления основной частоты микроконтроллера для получения тактовой частоты АЦП. Цикл преобразования АЦП занимает 16 тактов поделенной частоты, в дополнение к числу тактов переключения.
СК1 СК0 Делитель для MCLK
0 0 32
0 1 4 (не используется с CD = 0)
1 0 8
1 1 2
ADCCON1.4 CK0
ADCCON1.3 AQ1 Биты задержки переключения. Выбирают время, необходимое для переключения мультиплексора:
AQ1 AQ0 Число тактов задержки запуска АЦП
0 0 1
0 1 2
1 0 3
1 1 4
ADCCON1.2 AQ0
ADCCON1.1 T2C Бит запуска преобразования от Таймера 2.
Если бит установлен, то сигнал переполнения Таймера 2 используется для запуска АЦП.
ADCCON1.0 EXC Бит разрешения внешнего запуска.
Если установлен, то сигнал на выводе CONVST# будет использоваться как сигнал запуска (активный низкий уровень должен длиться не менее 100 нс).

Переводим АЦП в нормальный режим, выбираем внутренний источник опорного напряжения, для максимального быстродействия ставим CK1 = 1 и CK0 = 1. В результате:

ADCCON1 = 10111100b = 0xBC.

Биты регистра ADCCON1
Рисунок 4.4 - Биты регистра ADCCON1

Регистр ADCCON2 управляет установкой флага прерывания, режимами однократного и циклического преобразования. Имеется возможность индивидуального управления битами.

Таблица 4.4 – Значение битов регистра ADCCON2

Номер бита Название бита Описание
ADCCON2.7 ADCI Бит прерывания АЦП устанавливается аппаратно по окончании однократного преобразования ил и по окончании передачи блока в режиме DMA. ADCI очищается аппаратно при переходе на процедуру обслуживания прерывания.
ADCCON2.6 DMA Бит разрешения режима DMA. Устанавливается пользователем для начала цикла DMA от АЦП.
ADCCON2.5 CCONV Бит циклического преобразования. Устанавливается пользователем для перевода АЦП в режим непрерывного циклического преобразования. В этом режиме АЦП выполняет преобразование в соответствии с типом синхронизации и конфигурацией каналов, определенными в других регистрах специальных функций.
ADCCON2.4 SCONV Бит запуска однократного преобразования. Устанавливается пользователем для однократного запуска АЦП. Бит сбрасывается автоматически по завершению преобразования.
ADCCON2.3 CS3 Выбрать номер канала АЦП.
В режиме DMA номер канала записывается во внешнюю память.
CS3 CS2 CS1 CSO Номер входного канала
0 0 0 0 0
0 0 0 1 1
0 0 1 0 2
0 0 1 1 3
0 1 0 0 4
0 1 0 1 5
0 1 1 0 6
0 1 1 1 7
1 0 0 0 Температурный сенсор
1 0 0 1 Выход ЦАП (0 канал)
1 0 1 0 Выход ЦАП (1 канал)
1 0 1 1 AGND
1 1 0 0 Uоп
1 1 1 1 Остановка DMA

ADCCON2 = 01000000b = 0x40.

Биты регистра ADCCON2
Рисунок 4.5 - Биты регистра ADCCON2

Регистр ADCCON3 предназначен для калибровки АЦП. Откалиброванные значения АЦП на заводе производителя более чем удовлетворяют требованиям пользователя.

4.1.3 Передача данных по UART

В лабораторном стенде LESO1 микроконтроллер связан с ПК с помощью универсального асинхронного последовательного порта (UARTUniversal asynchronous receiver/transmitter).

Через универсальный последовательный порт осуществляются прием и передача информации, представленной в последовательном коде (младшими битами вперед). Наличие буферного регистра приемника позволяет совмещать операцию чтения ранее принятого байта с приемом очередного. Но если к моменту окончания приема байта предыдущий не был считан из SBUF, то он будет потерян. Работой последовательного порта управляют три регистра:

  • регистр управления/статуса приемопередатчика SCON,
  • бит SMOD регистра управления мощностью PCON,
  • буферный регистр приемопередатчика SBUF.

Последовательный порт может работать в четырех различных режимах:

  • Режим 0. Синхронный режим. Информация передается, и принимается через вывод входа приемника RxD. Принимаются или передается 8 бит данных. Через вывод TxD выдаются импульсы синхронизации, которые сопровождают каждый бит. Скорость передачи фиксирована и составляет 1/12 Fген.
  • Режим 1. Асинхронный 8-ми битовый режим. Передаются (через TXD) или принимаются (через RXD) 10 бит: старт-бит (логический 0), 8 бит данных (младшим разрядом вперед) и стоп-бит (логическая 1). При приеме, стоп-бит поступает в бит RB8 регистра SCON. Скорость передачи в режиме 1 переменная: для управления скоростью передачи вы можете использовать таймер Т1 и/или Т2.
  • Режим 2. Асинхронный 9-ти битовый режим с фиксированной скоростью передачи.
  • Режим 3. Асинхронный 9-ти битовый режим совпадает с режимом 2 во всех деталях, за исключением частоты приема/передачи, которая задается таймером.

Во всех четырех режимах передача начинается любой командой, которая использует SBUF как регистр-приемник. Прием в режиме 0 начинается при условии RI = 0, REN = 1. Прием в других режимах начинается с приходом старт-бита, если бит REN установлен[!].

Нас интересует режим 1, так как данные будут отправляться побайтово и необходимо обеспечить максимально возможную скорость передачи данных.

Режим работы UART конфигурируется в регистре SCON.

Таблица 4.5 – Значение битов регистра SCON

Номер бита Название бита Описание
7 SM0 Биты выбора режима работы UART.
SM1 SM0 Режим
0 0 Режим 0. Синхронный режим. 8 битовый приемо-передатчик. Скорость фиксирована и равна 1/12 fген
0 1 8 битовый приемопередатчик, изменяемая скорость передачи
1 0 9 битовый приемопередатчик. Фиксированная скорость передачи
1 1 9 битовый приемопередатчик, изменяемая скорость передачи
6 SM1
5 SM2 Бит управления режимом приемопередатчика. Устанавливается программно для запрета приема сообщения, в котором девятьй бит имеет значение 0
4 REN Бит разрешения приема. Устанавливается/сбрасывается программно для разрешения/запрета приема последовательных данных
3 TB8 Передача бита 8. Устанавливается/сбрасывается программно для задания девятого передаваемого бита в режиме 9-битового передатчика
2 RB8 Прием бита 8. Устанавливается/сбрасывается аппаратно для фиксации девятого принимаемого бита в режиме 9-битового приемника
1 TI Флаг прерывания передатчика. Устанавливается аппаратно при окончании передачи байта. Сбрасывается программно после обслуживания прерывания
0 RI Флаг прерывания приемника. Устанавливается аппаратно при приеме байта. Сбрасывается программно после обслуживания прерывания

SCON = 0x52.

Скорость передачи в 1-режиме можно определять первым или вторым таймером и значением регистра SMOD. Но используя эти таймеры невозможно получить высокую скорость передачи данных (не выше 115200 бит/сек). Поэтому существует третий таймер, который предназначен для скоростных передач данных. Можно генерировать скорость от 12 бит/с до 1049000 бит/с . Для конфигурирования этого таймера есть два РСФ: T3CON и T3FD. В регистре T3CON включают таймер и устанавливают значение делителя частоты работы ядра DIV.

Таблица 4.6 – Значение битов регистра T3CON

Номер бита Название бита Описание
7 T3BAUDEN
Бит режима работы АЦП:
1 -генерирует опорную частоту UART
0 -опорная частота UART по умолчанию
6 - Биты, зарезервированные для будущего использования.
5 -
4 -
3 -
2 DIV2 Целочисленный делитель
DIV2 DIV1 DIV0 DIV
0 0 0 0
0 0 1 1
0 1 0 2
0 1 1 3
1 0 0 4
1 0 1 5
1 1 0 6
1 1 1 7

Скорость передачи данных по UART определяется как:

Формула 4.1 2КБ

где fядр = 16,777 МГц - частота ядра.

Максимальное значение V получим при DIV = 0 и T3FD = 0:

Формула 4.1 2КБ

Получаем: T3CON=0х80 и T3FD=0x00. UART настроен на первый режим работы. Данные передаются (через TXD) или принимаются (через RXD) по 10 бит: старт-бит (логический 0), 8 бит данных (младшим разрядом вперед) и стоп-бит (логическая 1). При приеме, стоп-бит поступает в бит RB8 регистра SCON. Для того чтобы принять данные нужно обнулить флаг RI. Когда данные будут приняты, флаг RI установиться. Для принятия следующего бита нужно снова обнулить RI. Принятый байт записывается в регистр SBUF.

Функция приема данных по UART выгладит следующим образом:

unsigned char receive_uart( )   // процедура приема байта по UART
{
    RI=0;                       // готовность принять данные
    while(!RI);                 // ждем окончания передачи
    return SBUF;                // считываем данные с буфера
}                         

При передаче данных, нужно обнулить флаг TI, по аналогии с приемом. Данные необходимо записать в регистр SBUF. Когда передача байта закончиться, установиться флаг TI. Функция передачи данных по UART:

void transmit_uart (unsigned char D)  //процедура передачи байта по UART
{
    TI=0;                        // готовность отправить данные
    SBUF=D;                      // записываем в буфер отправляемый байт
    while(!TI);                  // ждем окончания передачи
}

4.1.4 Алгоритм программы микроконтроллера

Процедура обмена данными между микроконтроллером и ПК состоит в следующем: из ПК передается команда запроса. На алгоритме она указана кpак сигнал «принять данные». По этой команде производиться начинается конфигурирование и преобразование сигнала в режиме DMA.

Алгоритм работы программы для ADUC842
Рисунок 4.6 - Алгоритм работы программы для ADUC842

Конфигурация режима DMA состоит в обнулении флага окончания передачи данных, настройки на непрерывный режим преобразования до поднятия флага окончания передачи данных, указания начального адреса, куда записываются преобразованный сигнал, установки флага разрешения DMA.

Старт передачи данных начинает преобразование. Пока это преобразование происходит, программа ждет установления флага передачи данных. После установления флага окончания передачи данные отправляются по последовательному порту в ЭВМ.

После отправки данных микроконтроллер ждет новую команду, для выполнения цикла программы.

4.2 Программа для ПК

4.2.1 Обработка данных в LabVIEW

Данные с АЦП приходят в виде последовательности байтов, первая которая содержит номер канала в верхних 4-х байтах и старшие 4 бита данных, вторая – остальную часть данных.

Формат передачи данных  4КБ
Рисунок 4.7 - Формат передачи данных

Для обработки необходимо собрать данные в одно 16-битное слово. Для этого в LabVIEW существует инструмент разделения матрицы «decimate 1D array».

Перемежение
Рисунок 4.8 - Перемежение

Затем побитно умножим первый байт на число 0х0F, чтобы избавиться от номера канала, так как он больше нам не нужен.

Маскирование старшей тетрады первого байта
Рисунок 4.9 - Маскирование старшей тетрады первого байта

Преобразуем первый байт в 16-битное слово. Для этого существует инструмент «to unsigned word». Передвигаем 4 бита данных в верхний байт 16-битного слова с помощью инструмента «swap bytes». Суммируем полученное 16-битное слово с младшим байтом данных. В результате получаем 16-битное слово, в котором записано 12-битная информация.

Общий алгоритм первичной обработки данных
Рисунок 4.10 - Общий алгоритм первичной обработки данных
 
Фрагмент программы на LabVIEW обработки данных
Рисунок 4.11 - Фрагмент программы на LabVIEW обработки данных

4.2.2 Цифровой фильтр

Аналоговый фильтр Бесселя имеет неравномерную АЧХ в полосе пропускания. Для измерения сигналов такой вид АЧХ фильтра не является приемлемым. После дискретизации и обработки данных, амплитуды сигналов следует исправить. Этого можно добиться цифровым фильтром с корректирующей АЧХ, показанной на рисунке 4.12.

Вид требуемого АЧХ. Расчет в LabVIEW
Рисунок 4.12 - Вид требуемого АЧХ. Расчет в LabVIEW

Цифровая фильтрация является одним из наиболее мощных инструментальных средств цифровой обработки сигналов (ЦОС). Кроме очевидных преимуществ устранения ошибок в фильтре, связанных с флуктуациями параметров пассивных компонентов во времени и по температуре, дрейфом ОУ (в активных фильтрах) и так далее. Цифровые фильтры способны удовлетворять таким техническим требованиям по своим параметрам, которых, в лучшем случае, было бы чрезвычайно трудно или даже невозможно достичь в аналоговом исполнении. Кроме того, характеристики цифрового фильтра могут быть легко изменены программно. Поэтому они широко используются в телекоммуникациях, в приложениях адаптивной фильтрации, таких как подавление эха в модемах, подавление шума и распознавание речи.

Цифровые фильтры можно классифицировать по следующим типам:

  • Фильтры с конечной импульсной характеристикой (КИХ);
  • Фильтры с бесконечной импульсной характеристикой (БИХ);
  • Нелинейные фильтры.

Выходной сигнал КИХ-фильтра зависит только от поступивших на вход отсчетов входного сигнала в предыдущие моменты времени и отсчета в рассматриваемый момент. Выходной сигнал БИХ-фильтра зависти от поступивших на вход отсчетов входного сигнала в предыдущие моменты времени и отсчета в рассматриваемый момент, а также и от отсчетов выходного сигнала в предыдущие моменты времени.

Требования, предъявляемые к проектируемому цифровому фильтру:

  • линейная ФЧХ;
  • требуемое АЧХ.

Линейную ФЧХ может обеспечить симметричный КИХ-фильтр. Поэтому свой выбор остановим на КИХ-фильтре. КИХ-фильтры также известны как нерекурсивные фильтры или фильтры свертки. КИХ-фильтры выполняют свертку своих коэффициентов с последовательностью входных отсчетов и производят последовательность выходных отсчетов, одинаково пронумерованные с входными отсчетами. Конечная свертка, которую выполняет КИХ-фильтр, определяется по уравнению:

Формула 4.2 2КБ

где x – последовательность входных отсчетов, поступающий на вход фильтра, y – последовательность отсчетов на выходе фильтра, h – коэффициенты КИХ-фильтра.

КИХ-фильтры имеют следующие особенности:

  • могут обеспечивать линейную ФЧХ при симметрии коэффициентов фильтра;
  • всегда устойчивы;
  • позволяют фильтровать сигналы на основе использования свертки.

Разработка КИХ-фильтров имеет целью приближение к желательной передаточной функции. Имеются самые общие методы приближения к желаемой АЧХ, в то время как выдерживается линейность ФЧХ. Линейность ФЧХ подразумевает, что все частотные составляющие имеют одинаковую задержку по времени.

Для получения желаемого АЧХ необходимо отталкиваться от АЧХ ранее рассчитанного аналогового фильтра. В результате должно получиться:

Формула 4.3 2КБ

где Hрез(f) – результирующая передаточная функция системы; Hан(f) – передаточная функция аналогового фильтра; Hциф(f) – передаточная функция цифрового фильтра.

В полосе пропускания сигнала, нормированное значение Hрез(f) должно быть равномерным и равно 1. Требуемая АЧХ в полосе пропускания является обратной АЧХ аналогового фильтра. Действительно, из уравнения 4.3 получаем:

Формула 4.4 2КБ

Но при этом в полосе непропускания цифровой фильтр также должен обеспечивать большое подавление. Самая простая методика для разработки КИХ-фильтров – метод «окон» (в иностранной литературе «Windowing»). При проектировании КИХ-фильтров с использованием Windowing применяют обратное БПФ к желательной передаточной функции и применяют окно сглаживания к результату. Окно сглаживания – окно в области времени. Необходимо выполнить следующие шаги для вычисления передаточной функции фильтра (вычисления коэффициентов КИХ-фильтра)[!]:

  1. выбрать идеальную частотную передаточную функцию;
  2. вычислить импульсную характеристику для идеальной частотной передаточной функции;
  3. усечь импульсную характеристику, чтобы определить конечное число коэффициентов; чтобы выполнить ограничение линейности фазовой характеристики, необходимо выдержать симметрию относительно центрального коэффициента;
  4. применить симметричное окно сглаживания.
Программа расчета коэффициентов КИХ-фильтра
Рисунок 4.13 - Программа расчета коэффициентов КИХ-фильтра

Следует проверить соответствие полученного АЧХ КИХ-фильтра с требуемым. Для этого следует пропустить через фильтр дельта-функцию, то есть сделать свертку импульсной характеристики и дельта-функции. Затем опять сделать БПФ, ограничить количество отсчетов и взять модуль значений отсчетов.Сравнение полученного АЧХ КИХ-фильтра и требуемого АЧХ показано на рисунке 4.14.

АЧХ требуемого и полученного КИХ-фильтра. Расчет в LabVIEW
Рисунок 4.14 - АЧХ требуемого (сплошной линией) и полученного КИХ-фильтра (пунктирной линией). Расчет в LabVIEW

Таким образом, результатом этой программы будет матрица, в которой будут записаны коэффициенты фильтра. Полученную матрицу коэффициентов фильтра будем использовать в основной программе LabVIEW.

4.2.3 Синхронизация

Если запуск развертки никак не связан с наблюдаемым сигналом, то изображение на экране будет выглядеть «бегущим» или даже совершенно размазанным. Это происходит потому, что в этом случае осциллограф отображает различные участки наблюдаемого сигнала на одном и том же месте. Для получения стабильного изображения все цифровые осциллографы содержат систему, называемую триггер. Триггер в осциллографе — это устройство, которое задерживает запуск развертки до тех пор, пока не будут выполнены некоторые условия. Этим условиями могут быть:

  • уровень сигнала: задает входное напряжение, при достижении которого запускается развертка;
  • тип запуска: по фронту или по спаду;
  • определенное количество отсчетов.

Таким образом, триггер запускает развертку всегда с одного и того же места сигнала, поэтому изображение сигнала на осциллограмме выглядит стабильным и неподвижным.

Для синхронизации сигнала в LabVIEW существует инструмент «trigger&gate».

Инструмент Trigger & Gate
Рисунок 4.15 - Инструмент "Trigger & Gate"

Поставим следующие настройки, показанные на рисунке 4.16:

  • Уровень сигнала для запуска: 0;
  • Тип запуска: по фронту;
  • Количество отсчетов: 500.
Настройка Trigger & Gate
Рисунок 4.16 - Настройка "Trigger & Gate"
 
Фрагмент программы. Синхронизация сигнала в LabVIEW
Рисунок 4.17 - Фрагмент программы. Синхронизация сигнала в LabVIEW

4.2.4 Спектр сигнала

Представление сигнала в области времени дает совокупность его мгновенных значений в интервале времени, в течение которого была получена выборка. Однако во многих случаях необходимо знать гармонические составляющие сигнала, а не значения единичных отсчетов в выборке.

Теорема Фурье устанавливает, что периодический сигнал любой формы в области времени может быть представлен взвешенной суммой синусов и косинусов с частотами, определяемыми периодом анализируемого сигнала.

Алгоритм, который обеспечивает преобразование выборки сигнала из области времени в область частот, является дискретным преобразованием Фурье (ДПФ). Необходимо отметить, что ДПФ по умолчанию исходный ограниченный во времени сигнал превращает в периодический с периодом, равным времени получения выборки. Если к полученным выборкам сигнала из N=998 единичных измерений от АЦП, представляющих сигнал в области времени, применить ДПФ, то результат преобразования также будет состоять из N=998 отсчетов в области частот.

ДПФ определяется следующим выражением:

Формула 4.5 2КБ

В LabVIEW для ДПФ существует блок FFT.vi.

ДПФ в LabVIEW  2КБ
Рисунок 4.18 - ДПФ в LabVIEW

Уравнение (4.5) показывает, что даже если входной сигнал x[i] реальный, значения X[k] всегда являются комплексными, хотя мнимая часть может быть и нулевой. Другими словами, каждая частотная компонента имеет амплитуду и начальную фазу. Обычно основную информацию несет амплитудная составляющая спектра. Для этого применяется блок «Complex To Polar».

Для реальных сигналов ДПФ симметрично и это свойство можно описать следующими уравнениями:

Формула 4.6 2КБ

По причине таких симметрии N выборок ДПФ содержат повторную информацию. Из-за этого повторения информации можно вычислить или отобразить только половину выборок ДПФ. Для этого применен «Array Subset» в соответствии с рисунком 4.18).

В результате получаем анализатор спектра в составе виртуального цифрового осциллографа.

4.2.5 Графический интерактивный интерфейс пользователя

Осциллограф используется для измерения широкого диапазона сигналов. Поэтому требуется переключение диапазона, как по времени, так и по амплитуде.

Вызов свойств графического окна
Рисунок 4.19 - Вызов свойств графического окна

В соответствии с рисунком 4.19 вызываем свойство графопостроителя в LabVIEW «Plot Legend». В терминале появляется окно настройки, как показано на рисунке 4.19, к которому приводиться необходимое значение деления отображающего графика сигнала.

Переключение делении амплитуд и времени отображающего окна  3КБ
Рисунок 4.20 - Вызов свойств графического окна

Пользователь может исследовать влияние сглаживающих окон во временном и частотном пространстве. Для этого существует инструмент «Scaled Time Domain Window.vi».

Инструмент Scaled Time Domain Window.vi в LabVIEW  3КБ
Рисунок 4.21 - Инструмент "Scaled Time Domain Window.vi" в LabVIEW

Выбирая нужное окно, пользователь может изучать влияние окон сглаживания на сигнал во временном и частотном пространстве в соответствии с рисунком 4.22.

Доступные окна сглаживания в LabVIEW  1КБ
Рисунок 4.22 - Доступные окна сглаживания в LabVIEW
 
Интерфейс пользователя 30КБ
Рисунок 4.23 - Интерфейс пользователя

Как видно из рисунка 4.23, в графическом индикаторе во временной области есть курсор с цифровым отображением, который можно передвигать и снимать амплитудные данные сигнала. А в частотной области есть ползунок, с помощью которого можно подстраивать относительный уровень сигнала. Подстроив основную гармонику на 0 дБ, можно посмотреть на сколько дБ меньше или больше уровень остальных гармоник относительно основной.

4.3 Вывод

В главе разработки программного обеспечения цифрового осциллографа-приставки была написана программа для микроконтроллера, которая инициализирует микроконтроллер, запускает АЦП и передает данные в ПК, и программа на LabVIEW, которая работает как виртуальный осциллограф. Здесь мы обрабатываем данные, пропускаем их через цифровой фильтр, обеспечиваем синхронизацию, визуализируем и совершая над сигналом ДПФ, рисуем спектр сигнала.

Программа для микроконтроллера приведена в приложении Б, а блок схема программы на LabVIEW – в приложении В.

Цифровой фильтр разработан по методу «окон», в результате которой получаются коэффициенты КИХ-фильтра. Свертка этих коэффициентов с входными отсчетами есть результат работы цифрового фильтра.

Интерфейс программы позволяет пользователю выбирать окна сглаживания в частотной области, переключать временные и амплитудные деления для удобства просмотра входного сигнала.


Орфографическая ошибка в тексте:
Чтобы сообщить об ошибке автору, нажмите кнопку "Отправить сообщение об ошибке". Вы также можете отправить свой комментарий.