Цель
Целью этой лабораторной работы является практика использования базовых операций цифрового ввода/вывода.
Задание:
• Инкремент переменной “counter” каждые 100 ms
• Использование программной задержки для получения интервала в 100 ms
• Отображение 4-х битов переменной на LED LD1(GPIO9), LD2(GPIO11), LD3(GPIO34) и LD4(GPIO49) периферийной платы.
Файлы проекта:
- C – исходный файл “Lab5_1.c”
- Стартовый ассемблерный файл: “DSP2833x_CodeStartBranch.asm”
- Файл определения регистров: “DSP2833x_GlobalVariableDefs.c”
- Командные файлы редактора связей:
“28335_RAM_lnk.cmd”
“DSP2833x_Headers_nonBIOS.cmd”
- Библиотека реального времени:
“rts2800_fpu32.lib”
Файл “DSP2833x_GlobalVariableDefs.c”
Определение глобальных переменных для всей памяти отображающей периферийные регистры базирующееся на внутренней структуре
Основной файл заголовка “DSP2833x_Device.h”
Например GpioDataRegs:
Энергозависимая структура GPIO_DATA_REGS GpioDataRegs;
Эта структурная переменная объединяет все регистры, которые принадлежат этой периферийной группе, например,: GpioDataRegs.GPADAT
|
|
Каждый регистр объявлен как union чтобы допустить 32-битный - (“all”) и побитный доступ (“bit”), например:
GpioDataRegs.GPADAT.bit.GPIO9 = 1;
GpioDataRegs.GPADAT.all = 0x0000FFFF;
Шаги, которые должны быть сделаны:
Добавить “DSP2833x_GlobalVariableDefs.c” в проект
Включить “DSP2833x_Device.h” в Вашу C-программу
Регистры лабораторной работы LAB 5_1:
• Регисры ЦП:
• Управление сторожевым таймером : WDCR
• PLL тактовый регистр : PLLCR
• Делитель для высокой тактовой частоты: HISPCP
• Делитель для низкой тактовой частоты : LOSPCP
• Регистр управления тактами периферии: PCLKCRx
• Системный регистр управления и статуса: SCSR
Доступ к LED‘s (GPIO9, GPIO11,GPIO34,GPIO49):
• GPA и GPB Multiplex Регистры:
• GPAMUX1, GPAMUX2, GPBMUX1, GPBMUX2
• GPA и GPB управляющие регистры:
• GPADIR и GPBDIR
• GPA и GPB Регистры данных:
• GPASET, GPACLEAR, GPBSET, GPBCLEAR
Выводы GPIO9, GPIO11, GPIO34 и GPIO49 подключаются к четырем светодиодам (LD1-4) в периферийной плате. Цифровая выходная величина «1» включит свет, а цифровой «0» выключит. Lab5_1 будет использовать регистры напрвлений GPAMUX1, GPBMUX1, GPADIR, GPBDIR и регистры данных GPADAT, GPBDAT, GPASET, GPACLEAR, GPBSET и GPBCLEAR.
Программа Lab5_1 непрерывно увеличивает целую переменную "counter " и отображает текущее значение четырех младших битов на LD1 - LD4. В этой первой лабораторной работе мы не будем использовать прерывания. Модуль сторожевого таймера и основные регистры для установки тактовой частоты в этом упражнении используются.
Порядок выполнения
Создайте Файл Проекта.
1. Используя программу Code Composer Studio, создайте новый проект, названный Lab5.pjt в C:\DSP2833x_V4\Labs (или в другом каталоге, который доступен Вам).
|
|
2. Определите размер системного стека C. В окне проекта, кликните правой кнопкой мыши на проекте «Lab5» и выберите «Properties». На вкладках «C/C++ Build», «C2000 Linker», «Basic Options» установите размер стека C в 0x400.
3. Скопируйте предусмотренный файл исходной программы «Lab5_1.c» в папку проекта «C:\DSP2833x_V4\Labs\Lab5». Этот шаг автоматически включит файл в проект «Lab5».
Затем, мы воспользуемся некоторыми полезными файлами, которые предусмотрительно созданы инженерами фирмы Техас Инструмент и уже доступны на вашем жестком диске С как часть так называемого "Файла Заголовков" в пакете (sprc530.zip). Если нет, попросите, лаборанта установить этот пакет для Вас!
4. Во вкладке C/C++, правый клик на проекте «Lab5» и выбор “Link Files to Project”.
Откройте папку «C:\tidcs\c28\dsp2833x\v131\DSP2833x_headers\source» добавьте:
DSP2833x_GlobalVariableDefs.c
Этот файл определяет все глобальные переменные, чтобы иметь доступ к памяти отображающей периферийные регистры.
5. Повторите шаг “Link Files to Project”. Из папки C:\tidcs\c28\dsp2833x\v131\DSP2833x_common\source добавьте:
DSP2833x_CodeStartBranch.asm
Этот файл содержит единственную длинную сборочную инструкцию и должен устанавливаться в кодовый раздел "BEGIN" в программе.
Всё что будет делать Компоновщик базируется на файле, который будет добавлен на следующем шаге.
6. Из C:\tidcs\c28\dsp2833x\v131\DSP2833x_headers\cmd, добавить в «Lab5»:
DSP2833x_Headers_nonBIOS.cmd
Этот файл команд компоновщика соединит все глобальные переменные и регистры с их соответствующими физическими адресами.
Опции компиляции проекта
7. Мы также должны указать маршрут поиска файлов include для C-Компилятора. Правый клик на проекте «Lab5» и выбор «Properties». Выберите «C/C++ Build», «C2000 Compiler», «Include Options». В окне "Add dir to #include search path”, добавляем следующую строку:
C:\tidcs\C28\dsp2833x\v131\DSP2833x_headers\include
Примечание: Используйте Иконку «Add», чтобы добавить новый маршрут:
Закройте окно нажав <OK>.
Модифицируйте Исходную Программу
После того, как мы подготовили наш проект, подошло время, чтобы проверить и изменить предусмотренный C-исходный файл программы "Lab5_1.c".
8. Откройте Lab5_1.c и найдите локальную функцию «InitSystem()». Вы найдете различные вопросные маркеры в этом коде. Ваше задание - заменить все вопросные маркеры, чтобы завершить код.
· Установка Сторожевого Таймера (WDCR): дезактивируйте сторожевой таймер и очистите Разряд WD признака.
· Установите SCSR, чтобы сгенерировать СБРОС по событию переполнения сторожевого таймера (WDENINT).
Установите модуль PLL тактового генератора: (PLLCR)-множитель на 10/2. Предположим, мы используем внешний 30 MHz генератор это установит DSP на 150 MHz внутренней частоты. Установите битовую область "DIV" в PLLCR в 10 и области DIVSEL в регистре PLLSTS на 2!
- Установите высокочастотный предделитель тактового генератора (HISPCP) на «divide 2», низкочастотный предделитель (LOSPCP) на «divide 4».
- Разрешите тактирование GPIO битом "GPIOINENCLK" в регистре PCLKCR3. Запретите тактирование всех других периферийных устройств в регистрох: PCLKCR0, PCLKCR1 и PCLKCR3.
9. Найдите локальную функцию «Gpio_select()» и модифицируйте её код следующим образом:
- Установите все мультиплексные регистры на цифровой I/O.
- Установите GPADIR: линии GPIO9 и GPIO11 на вывод, все другие линии на ввод.
- Установите GPВDIR: линии GPIO34 и GPIO49 на вывод, все другие линии на ввод
- Установите GPCDIR: все линии на цифровой ввод.