Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб3_ММССД.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

7.3.1 Структура программы dspdaq для dsp

Пример программы dspdaq для DSP платы ADP60PCI с мезонином ADM212x40M в общем случае имеет вид, изображенный во Вставке 7.3.1.

#include <system60.h>

#include <db.h>

#include <drv.h>

#include <drvcmd.h>

#include “DspConfigADC.c”

DRV_Handle hBrd; //Дескрипторы DRV

DRV_Handle hDrv; //

int main (void)

{

long* pdata = NULL;

long* pbuf = NULL;

/*Инициализация host драйвера*/

hBrd = DRV_open(“host”, 0);

if(hBrd == NULL)

return -1;

hDrv = DRV_open(“adm212x40m”, OR_DMACONT);

if(hDrv == NULL)

{

DRV_close(hBrd);

return -1;

}

//Блок, реализующий ввод параметров настройки АЦП

if(!InitADC (hBrd, hDrv))// {

DRV_close(hBrd);

DRV_close(hDrv);

return -1;

}

и

dsp_pc_int();

async_buf[0] = (long)pdata; //Адрес первого буфер памяти

async_buf[1] = (long)(pdata + BUFSIZE); // Адрес второго буфер памяти

async_buf[2] = BUFSIZE; //Размер буферов

pbuf = pdata + 2*BUFSIZE;

//Передача буферов данных на ADM интерфейс

if(DRV_ctrl(hDrv, INGETASYNCBUF, async_buf) < 0)

return -1;

/*Блок настройки Link порта */

LinkInit(0); //reset link port

LinkSetup(1, 1, 0, 1);

k = IOP(LCOM);

IOP(LCOM) = k&~0x80000;

i = 0; k =0;

dsp_pc_int();

//Посылаем сигнал готовности

DRV_ctrl(hDrv, ADCSTART, NULL); //Запуск АЦП

DRV_ctrl(hDrv, INSTARTASYNC, NULL); //Запуск DMA-ввода в выделенные буферы

/*Здесь размещается блок заполнения буферов данными с последующей передачей на Link порт*/

free(pdata);

dsp_pc_int();

DRV_close(hDrv); //Закрытие платы

DRV_close(hBrd);

return 1;

}

Вставка 7.3.1 Общий вид программы для DSP (dspdaq)

Описание используемых функций для СПО DSP библиотеки Bardy находится в Приложении Б.

Программа dspdaq, загруженная с ЭВМ модулем hostdaq на DSP-процессор, начинает свою работу по сигналу с управляющей ЭВМ. Проведя инициализацию драйвера и завершив открытие ADM-интерфейса dspdaq запускает на выполнение модуль настройки платы АЦП на стороне DSP (dspConfigADC).

После настройки платы АЦП по сигналу управляющей ЭВМ в памяти DSP-процессора выделяется место для трех буферов данных и эти буферы заполняются информацией поступающей с ADM-интерфейса.

Далее модуль dspdaq настраивает Link-порт для последующей передачи данных и, по сигналу с управляющей ЭВМ, запускает преобразование на АЦП. Одновременно с преобразованием происходит передача данных в режиме DMA через Link-порт. После завершения преобразования необходимого объема данных программа завершает свою работу.

В результате выполнения программного модуля dspdaq, программный модуль hostdaq получает необходимый объем считанных данных с АЦП. Проверка выполнения программы может быть осуществлена путем анализа полученных данных на одноплатную ЭВМ.

7.4 Руководство программиста модулей настройки стенда ConfigAdc/dspConfigAdc

Параметры настройки АЦП содержатся в текстовом файле adc.ini.

Структура INI файла с параметрами инициализации для АЦП приведена ниже во Вставке 7.4.

Для считывания параметров настройки из файла adc.ini и их передачу в память DSP-процессора используются два программных модуля: ConfigADC и dspConfigADC.

Для интегрирования программных модулей в проект необходимо в рабочую директорию проекта ПО одноплатной ЭВМ (C:\ADI_DSP\BIN\ADC_M1\, см. 7.1) включить файлы ConfigADC.c, ConfigADC.h из C:\labs\source\. В директорию проекта ПО также требуется включить файлы dspConfigADC.c, dspConfigADC.c из той же директории. Содержимое всех необходимых файлов в директории проекта подробно описано ранее в пункте 7.1.

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

ConfigADC (const char *IniFileName, BRD_Board brd); Входные переменные для функций

InitADC (DRV_Handle hBrd, DRV_Handle hDrv); настройки

Входными переменными для функции ConfigADC одноименного модуля ConfigADC на одноплатной ЭВМ являются указатель на ini-файл и дескриптор платы АЦП. После получения входных данных параметры инициализации считываются функцией ConfigADC из файла adc.ini в локальную структуру данных BOARD_INI_PARAM. Указатель на считанные параметры инициализации передается на плату АЦП ADP60PCI.

Входными переменными для функции InitADC модуля dspConfigADC DSP-процессора являются дескрипторы одноплатной ЭВМ и ADM-интерфейса: hBrd и hDrv. После получения дескрипторов функция InitADC считывает в локальную структуру параметры настройки АЦП, а затем устанавливает их.

GEN= 2 ; Generator 0,1,2 (60MHz,50MHz,CPU CLOCK) // номер тактового генератора 0,1,2 //(60 MHz,50 MHz, CPU clock – 40MHz)

FDIV= 80 ; ADC divider // делитель тактовой частоты генератора для АЦП

GAIN0= 0 ; Gain (0,1,2,3 <-> 1,2,4,8) // код для коэффициента усиления 0,1,2,3 //(коэф – 1,2,4,8) канала 0

GAIN1= 0 ; Gain (0,1,2,3 <-> 1,2,4,8) // код для коэффициента усиления 0,1,2,3 //(коэф – 1,2,4,8) канала 1

MUX= 0 ; MUX 0,1,2 // номер канала мультиплексора 0,1,2 (1-й, 2-й, оба)

MUXCNT= 0 ; Channel 0,1,2,3,4,5,6,7 // число входов на одном канале 0..7

MUX0= 0 0 ; MUXMEM 0 // номера каналов в регистре мультиплексора 0

MUX1= 1 1 ; MUXMEM 1 // номера каналов в регистре мультиплексора 1

MUX2= 2 2 ; MUXMEM 2 // номера каналов в регистре мультиплексора 2

MUX3= 3 3 ; MUXMEM 3 // номера каналов в регистре мультиплексора 3

MUX4= 4 4 ; MUXMEM 4 // номера каналов в регистре мультиплексора 4

MUX5= 5 5 ; MUXMEM 5 // номера каналов в регистре мультиплексора 5

MUX6= 6 6 ; MUXMEM 6 // номера каналов в регистре мультиплексора 6

MUX7= 7 7 ; MUXMEM 7 // номера каналов в регистре мультиплексора 7

MUXMODE= 0 ; Compare multiplexor mode // режим мультиплексора компараторов //старта

PRETRIGMODE= 0 ; Pretrigger Mode //режим претриггера

TRIGSTART= 0 ; Triggered start // триггерный старт

INV0= 0 ; Inverse comparator 0 // инверсия компаратора 0

INV1= 0 ; Inverse comparator 1 // инверсия компаратора 1

STARTMODE= 0 ; ADC start mode // режим старта АЦП

STOPMODE= 0 ; Stop mode for triggered start // режим останова при триггерном старте

U_SCALE= 2.5 ; Scale 2.5 Volts // шкала преобразования в вольтах

U_OFFSET0= 0.0 ; Offset for channel 0 0.0 Volts // смещение канала 0 в вольтах

U_OFFSET1= 0.0 ; Offset for channel 1 0.0 Volts // смещение канала 1 в вольтах

U_COMP= 2.5 ; Scale 2.5 Volts // диапазон регулировки компараторов старта

U_COMP0= 2.0 ; Comparate 0 Volts // напряжение срабатывания для компаратора 0

U_COMP1= 2.0 ; Comparate 1 Volts // напряжение срабатывания для компаратора 1

Вставка 7.4 Структура ini-файла с параметрами настройки АЦП

В данном случае установлены типовые значения параметров настройки. Описание каждого параметра приведено в Приложении В.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]