Цель работы: изучить принцип работы и приемы программной конфигурации модуля АЦП цифрового сигнального процессора TMS320F2812.
Порядок выполнения лабораторной работы №4
Часть I
1. Создание проекта.
1.1 В Code Composer Studio создали новый проект Lab6.pjt. Скопировали из папки c:\tidcs файл lab6.c в папку с созданным проектом. Добавили lab6.c в проект.
1.2 Добавили в проект следующие файлы: C:\tidcs\c28\dsp281x\v100\DSP281x_headers\source\DSP281x_GlobalVariableDefs.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\cmd\F2812_EzDSP_RAM_lnk.cmd
C:\tidcs\c28\dsp281x\v100\DSP281x_headers\cmd\F2812_Headers_nonBIOS.cmd
C:\ti\c2000\cgtools\lib\rts2800_ml.lib
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_PieCtrl.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_PieVect.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_DefaultIsr.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_Adc.c
C:\tidcs\c28\dsp281x\v100\DSP281x_common\source\DSP281x_usDelay.asm
1.3 Включили в проект заголовочные файлы: Project → Build Options, в закладке Compiler выбирали Preprocessor и в поле Include Search Path (-i) ввели: C:\tidcs\C28\dsp281x\v100\DSP281x_headers\include;..\include.
1.4 Задали глубину стека: Project → Build Options → Linker → Stack Size: 0x400.
2. Инициализация системы (подпрограмма “InitSystem()”).
2.1 Разрешили работу сторожевого таймера, установили коэффициент деления 64 (регистр WDCR), сбросили сторожевой таймер (регистр SCSR).
void InitSystem(void)
{
EALLOW;
SysCtrlRegs.WDCR= 0x00AF;
2.2 Настроили ЦСП на частоту 150 МГц (регистр PLLCR), в предделитель высокоскоростного таймера занесли 2.
SysCtrlRegs.PLLCR.bit.DIV = 10;
SysCtrlRegs.HISPCP.all = 0x1;
2.3 Разрешили тактирование модуля АЦП и Менеджера Событий (регистр PCLKCR).
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;
3. Инициализация портов (подпрограмма “Gpio_select()”).
3.1 Настроили все выводы на работу в качестве портов (регистр GPxMUX).
3.2. Настроили порты A, D, E, F, G на ввод (регистр GPxDIR).
3.3 Настроили линии порта GPIOB15 – GPIOB8 на ввод, а GPIOB7 – GPIOB0 на вывод.
3.4 Сбросили биты регистров GPxQUAL в ноль.
void Gpio_select(void) {
EALLOW;
GpioMuxRegs.GPAMUX.all = 0x0; // all GPIO port Pin's to I/O
GpioMuxRegs.GPBMUX.all = 0x0;
GpioMuxRegs.GPDMUX.all = 0x0;
GpioMuxRegs.GPFMUX.all = 0x0;
GpioMuxRegs.GPEMUX.all = 0x0;
GpioMuxRegs.GPGMUX.all = 0x0;
GpioMuxRegs.GPADIR.all = 0x0; // GPIO PORT as input
GpioMuxRegs.GPBDIR.all = 0x00FF;// GPIO Port B15-B8 input , B7-B0 output
GpioMuxRegs.GPDDIR.all = 0x0; // GPIO PORT as input
GpioMuxRegs.GPEDIR.all = 0x0; // GPIO PORT as input
GpioMuxRegs.GPFDIR.all = 0x0; // GPIO PORT as input
GpioMuxRegs.GPGDIR.all = 0x0; // GPIO PORT as input
GpioMuxRegs.GPAQUAL.all = 0x0; // Set GPIO input qualifier values to zero
GpioMuxRegs.GPBQUAL.all = 0x0;
GpioMuxRegs.GPDQUAL.all = 0x0;
GpioMuxRegs.GPEQUAL.all = 0x0;
EDIS;
}
4. Инициализация модуля Менеджера Событий.
4.1 Запретили выходы сравнения и выбрали полярность выходов сравнения принудительный низкий уровень (регистр GPTCONA)
EvaRegs.GPTCONA.bit.TCMPOE = 0;
EvaRegs.GPTCONA.bit.T1PIN = 0;
4.2 В регистре T1CON выбрали: непрерывный режим счета вверх, синхронизация от внутреннего источника, запрещаем режим сравнения, разрешаем работу GP таймера 1, задаем коэффициент деления 128.
EvaRegs.T1CON.bit.FREE = 0; // Stop on emulation suspend
EvaRegs.T1CON.bit.SOFT = 0; // Stop on emulation suspend
EvaRegs.T1CON.bit.TMODE = 2; // Continuous up count mode
EvaRegs.T1CON.bit.TPS = 7; // prescaler = 128
EvaRegs.T1CON.bit.TENABLE = 1; // enable GP Timer 1
EvaRegs.T1CON.bit.TCLKS10 = 0; // internal clock
EvaRegs.T1CON.bit.TCLD10 = 0; // Compare Reload when zero
EvaRegs.T1CON.bit.TECMPR = 0; // Disable Compare operation
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.