Часть II. Формирование сигналов звуковой частоты

 при помощи синусоидальных импульсов

 

Во второй части работы необходимо вывести синусоидальный ШИМ - сигнал. Отметим, что музыкальная нота – это гармоническое синусоидальное колебание определенной частоты, поэтому, изучив принцип получения синусоидальных колебаний, можно получить чистоту звучания нот, близкую к реальности. В таблице представлено соответствие частот и нот музыкального звукоряда.

 

Для расчета частоты синусоидальных колебаний используется формула:

(1)

 

где - частоты модулированных импульсов;

  - число модулированных импульсов за период.

 

1. Создание нового проекта.

1.1 Создаем новый проект Lab5А.pjt.

1.2 Добавляем в проект файлы (см. п. 1.2 части I), кроме файла

DSP281x_CpuTimers.c, и вместо lab5.c загружаем lab5А.c.

 

    2. Настройка параметров проекта, компоновка проекта и загрузка выходного файла (аналогично п.п. 2.1 – 2.4 части I данной лабораторной работы). В закладке Compiler выбираем Preprocessor и в поле Include Search Path (-i) вводим:  

C:\tidcs\C28\dsp281x\v100\DSP281x_headers\include;

..\include; C:\tidcs\C28\IQmath\cIQmath\include

 

3. Преобразование файла Lab5А.c.

Удаляем те строки программы, которые касаются работы таймера 0 ядра процессора F2812: ConfigCpuTimer(&CpuTimer0, 150, 50000), InitCpuTimers(), CpuTimer0Regs.TCR.bit.TSS = 0, переменные i и time_stamp, массив frequency [8].

Переименовываем подпрограмму “cpu_timer0_isr()” в “T1_Compare_isr” и в ней добавляем строку: PieCtrlRegs.PIEACK.all = PIEACK_GROUP2, устанавливаем бит T1CINT регистра EVAIFRA в 1.

Добавляем инструкцию, разрешающую в модуле расширения прерываний PIE прерывание от GP таймера 1: PieCtrlRegs.PIEIER2.bit.INTx5=1 и устанавливаем разрешение прерывания ядра процессора INT2: IER = 2.

    Настраиваем таймер 1 Менеджера Событий (аналогично пп. 3.5.1 – 3.5.2 части I): записываем коэффициент деления равный 1, устанавливаем бит T1CINT регистра EVAIMRA в 1.

    В регистр периода (T1PR) заносим значение, рассчитанное по формуле:

(2)

        

где   кГц,   МГц,HISCP = 2, TPS = 1.

 

 


Рис. 4.14. Принцип формирования синусоидального сигнала
широтно-импульсной модуляцией

        

4. Тестирование программы.

Сбрасываем ЦСП: Debug → Reset CPU, Debug → Restart.

    Переходим к главной подпрограмме: Debug → Go main.

Запускаем программу: Debug → Run.

Устанавливаем точку останова на строчке: PieCtrlRegs.PIEACK.all = PIEACK_GROUP2.

 

5. Включение библиотеки “IQ-Math” в проект.

Добавляем в начальную часть текста программы строки:

 #include "IQmathLib.h",

_iq30 sine_table[512],

 #pragma DATA_SECTION(sine_table,"IQmathTables");

и добавляем файл Lab5A.cmd.

 

6. Расчет необходимого значения регистра сравнения.

Учитывая, что разность значений регистра периода и регистра сравнения определяет ширину выходного модулированного импульса (см. рис. 4.15), а значения функции синуса изменяются от минус 1 до плюс 1, рассчитываем значение регистра сравнения по формуле:

 

T1CMPR = T1PR – _IQ30mpy(sine_table[index] + _IQ30(0.9999),T1PR/2) (3)

 

где функция IQ30mpy(a, b) – умножение чисел a и b в формате IQ30;  _IQ30(0.9999) – оттранслированное значение единицы.

 

Рис. 4.15. Изменение ширины импульса при ШИМ по

синусоидальному закону

 

Чтобы избежать переполнения, применим функцию насыщения _IQsat (x, max, min). Тогда окончательно записываем в подпрограмму T1_Compare_isr формулу для расчета необходимого значения регистра сравнения:

EvaRegs.T1CMPR = EvaRegs.T1PR - _IQsat(_IQ30mpy(sine_table[index]+_IQ30(0.9999), EvaRegs.T1PR/2),EvaRegs.T1PR,0).

 

7. Расчет частоты синусоидальных колебаний.

Для этого используем формулу (1), задаемся = 50 кГц, = 128, т.е. из таблицы значений синуса выбираем каждое четвертое число, добавляем строку:

 index += 4.

 

Тогда = 390,6 Гц.

Компонуем проект: Project → Rebuild All.

 

Содержание отчета:

 

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

Контрольные вопросы:

 

1. Назначение и структура Менеджера Событий DSP TMS320F2812.

2. Структура таймеров Менеджера Событий, их отличие от таймеров ЦПУ по структуре и назначению.

3. Режимы работы таймеров Менеджера Событий.

1. Регистры Менеждера Событий.

2. ШИМ – сигнал: определение, формирование с помощью Менеджера Событий.

3. Прерывания Менеджера Событий.

 

 






Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: