Главная страница

Лабораторная работа 1 изучение аналогоцифрового преобразователя микропроцессора tms320F2812 по дисциплине Проектирование устройств на цифровых сигнальных процессорах


Скачать 42.54 Kb.
НазваниеЛабораторная работа 1 изучение аналогоцифрового преобразователя микропроцессора tms320F2812 по дисциплине Проектирование устройств на цифровых сигнальных процессорах
Дата18.03.2022
Размер42.54 Kb.
Формат файлаdocx
Имя файлаOtchet1.docx
ТипЛабораторная работа
#403422

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное

учреждение высшего образования

«Омский государственный технический университет»

Кафедра «Радиотехнические устройства и системы диагностики»

ЛАБОРАТОРНАЯ РАБОТА № 1:

«ИЗУЧЕНИЕ АНАЛОГО-ЦИФРОВОГО ПРЕОБРАЗОВАТЕЛЯ МИКРОПРОЦЕССОРА TMS320F2812»

по дисциплине «Проектирование устройств на цифровых сигнальных процессорах»

Выполнил студент гр. ЭНм-201:

Хамидов И.В.
Проверил преподаватель:

_____________ Титов Д.А.

Омск 2021

Цель работы:

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

Задание к работе:

  1. Ознакомиться с устройством блока аналого-цифрового преобразователя микропроцессора TMS320F2812.

  2. Изучить назначение регистров управления аналого-цифрового преобра-зователя микропроцессора TMS320F2812.

  3. Разработать ПО, выполняющее аналого-цифровое преобразование сиг-налов с частотой дискретизации 10 кГц.

  4. Произвести дискретизацию сигналов с помощью разработанного ПО.

  5. Сделать выводы по результатам работы.

Ход работы:

Микропроцессор TMS320F2812 содержит блок аналого-цифрового преоб-разователя, позволяющий производить дискретизацию 16 независимых вход-ных сигналов. Разрядность АЦП равна 12. Диапазон входных сигналов: 0–3 В.

Согласно документу соотношение между напряжением на входе и значением цифрового кода, формируемого АЦП микропроцессора TMS320F2812, определяется выражением



(1)

гдеVIN – напряжение на входе АЦП;VREF+ -, VREF-опорные напряжения; q – разрядность АЦП, равная 12; D – значение цифрового кода (целое число без знака). Для стенда ЦОС VREF-=0В ,VREF+=3 В .



  1. Произвели подготовку рабочего места к выполнению лабораторных работ.

  2. Открыли проект ПО лабораторной работы №1 «Example_ADC.pjt» (в программной среде Code Composer Studio 3.3).

  3. Перемещаясь по «дереву файлов» выбрали файл «Example_281xSpi_FFDLB.c» (файл с кодом программы).


Код программы:

////###################################################

// Программа для дискретизации сигналов

// с помошью АЦП процессора TMS320F2812

//#####################################################
#include "DSP281x_Device.h"

#include "DSP281x_Examples.h"
#pragma CODE_SECTION(cpu_timer0_isr, "ramfuncs");

#pragma CODE_SECTION(InitFlash, "ramfuncs");
// Объявление заголовков используемых функций.

// Обработчик прерывания по таймеру

interrupt void cpu_timer0_isr(void);
// Константы для настройки АЦП

#define ADC_CKPS 0x1

#define ADC_SHCLK 0xf
// Массив отсчетов входного сигнала.

// В этот массив записываются кодовые

// значения отсчетов входного сигнала,

// приходящие от АЦП микропроцессора.

Uint16 InputSamples[100];
unsigned int ii=0;

unsigned int jj=0;
void main(void)//************ main ****************

{

// Системные настройки

// (функция из файла "DSP281x_SysCtrl.c").

InitSysCtrl();

// "Очистка" всех прерываний,

// запрет маскируемых прерываний.

DINT;
// Инициализация регистров PIE

// (peripheral interrupt expansion),

// т. е. настройка источников прерываний и

// определение количества прерываний

// (функция из файла "DSP281x_PieCtrl.c").

InitPieCtrl();
// Запрет прерываний от процессора и сброс

// флагов всех прерываний.

IER = 0x0000;

IFR = 0x0000;
// Инициализация таблицы PIE

// (функция из файла "DSP281x_PieVect.c").

InitPieVectTable();
EALLOW; //Открыть доступ к регистру эмуляции.
// HSPCLK=SYSCLKOUT/2*3=150/6=25MГц.

SysCtrlRegs.HISPCP.all = 3;
// Low speed clock=SYSCLKOUT/4.

SysCtrlRegs.LOSPCP.all = 4;
// CLKIN=(OSCCLK * 10.0)/2=30МГц*10/2=150Гц.

SysCtrlRegs.PLLCR.all = 10;
PieVectTable.TINT0 = &cpu_timer0_isr;
EDIS;// Запрет записи в регистр эмуляции.
// Перенос функций в опреативную память

MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
// Инициализация флеш-памяти

InitFlash();
// Инициализация таймеров

// (функция из файла "DSP281x_CpuTimers.c").

InitCpuTimers();
// Настройка таймера CPU-Timer 0.

// Таймер настраивается на

// период дискретизации сигнала 0,1 мс.

// По таймеру выдается прерывание через 0,1 мс,

// CPU Freq = 150MГц.

ConfigCpuTimer(&CpuTimer0, 150, 100);
// Разрешение прерывания CPU INT1,

// соотв. таймеру CPU-Timer 0.

IER |= M_INT1;

// Разрешение TINT0 в таблице PIE

// (Group 1 interrupt 7)

PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
// Разрешение глобальных прерываний и событий

// процесса отладки высокого приоритета.

EINT;

ERTM;
// Инициализация периферийных устройств.

InitAdc(); // Инициализация АЦП.
// Настройка АЦП

AdcRegs.ADCTRL1.bit.ACQ_PS = ADC_SHCLK;

// ADC module clock = HSPCLK/2*ADC_CKPS =

// = 25MГц/(2*1) = 12.5MГц.

AdcRegs.ADCTRL3.bit.ADCCLKPS = ADC_CKPS;

// Режим Cascaded mode.

AdcRegs.ADCTRL1.bit.SEQ_CASC = 1;

AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x0;

// Режим Сontinuous run.

AdcRegs.ADCTRL1.bit.CONT_RUN = 1;

// Очистка массива отсчетов входного сигнала.

for(ii=0; ii<=99; ii++)

InputSamples[ii] = 0;

// Запуск АЦП.

AdcRegs.ADCTRL2.all = 0x2000;

// Запуск таймера.

StartCpuTimer0();

// режим ожидания прерывания по таймеру.

for(;;);
}//***************** end of main ********************
interrupt void cpu_timer0_isr(void)

{

// Ожидание прерывания от АЦП

while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}
// Программная задержка=

// = (HISPCP*2)*(ADCCLKPS*2)*(CPS+1) cycles =

// = (3*2)*(1*2)*(0+1)=12 cycles

asm(" RPT #11 || NOP");
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
InputSamples[jj] =((AdcRegs.ADCRESULT0>>4) );

jj++;
if(jj>99)

jj=0;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;

}

//=====================================================

  1. Выполняем компиляцию проекта. Запрограммируем микропроцессор. Микропроцессор считать успешно запрограммированным при отсутствии сообщений об ошибках в процессе программирования.

  2. Курсором выделили переменную «Input-Samples» и на выделенном участке нажали правую кнопку «мыши». В появившемся контекстном меню выбрали пункт «Add to Watch Window».

  3. К разъему «Вход» стенда ЦОС подключаем генератор сигналов. С генератора подаем гармонический сигнал положительной полярности с частотой 1 кГц и размахом 3,0 В.

  4. В меню главного окна среды Code Composer Studio 3.3 последовательно выбраем пункты «Debug»→«Run» и через 5–10 с последовательно выбраем пункты «Debug»→«Halt».

  5. В поле «Watch» главного окна среды Code Composer Studio 3.3 раскрыли и скопировали содержание переменной «InputSamples» (столбец значений).

  6. . В програмной среде Matlab в командной строке выполняем команду:

>> InputSamples=0;

Раскрываем содержание переменной «InputSamples» в редакторе массивов вставляем скопированный столбец в переменную «InputSamples».

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

>> plot(InputSamples, '-o');

>> ylabel('КОД')

>> xlabel('n') 25



Рисунок 1. Гармонический сигнал положительной полярности.

Вывод

Последовательность дискретных значений имеет гармоническую форму и на один период последовательности приходится 10 дискретных значений, что подтверждает построенный график. Для качественной оцифровки сигнала достаточно 10 дискретных значений на период. Значения последовательности целые числами и лежат в диапазоне от 0 до 4095, в соответствии с двенадцати разрядным АЦП микропроцессора.


написать администратору сайта