Arch_EVM_Lab1 (1075551), страница 2
Текст из файла (страница 2)
Например, для обращения к регистрам микроконтроллераLPC2478 достаточно подключить заголовочный файл LPC24xx.H.Управление портами ввода/вывода микроконтроллера NXP LPC2478.С целью сокращения количества выводов микроконтроллеров присохранении их функциональности большинство контактов микросхемыподключается к нескольким внутренним модулям. Выбор конкретного модуля,который подключается к контакту микросхемы, определяется с помощьюпрограммно доступного модуля управления выводами (Pin Connect Block).
Вкаждый момент времени только один модуль может быть подключен кконтактам микросхемы. Разработчик системы выбирает тот типмикроконтроллера, который обеспечивает одновременное подключение всехнеобходимых ему модулей.При включении питания все выводымикроконтроллера оказываются подключенными к модулю портов ввода/выводаобщего назначения (GPIO). Далее, в случае необходимости, должна бытьпроизведена перекоммутация модулей.
Это необходимо сделать до тогомомента, когда коммутируемый модуль будет включен разработчиком и начнетработу.Все управляемые входы микросхемы принято называть по подключеннымк ним разрядам 32-х разрядных портов ввода/вывода, которых вмикроконтроллере LPC2478 пять. Например: Port0.1 означает контактмикросхемы, к которому подключен вход №1 порта 0 модуля GPIO. Этот жевход может использоватьсямодулями UART1, UART3 и I2С1. Дляконфигурации входов/выходов необходимо указать нужное в соответствующемрегистре выбора функций (PINSEL0 для контактов 0..15 порта 0, PINSEL1 дляконтактов 16..31 порта 0 и т.д.) В таблице 2 приведены значения для разрядоврегистра PINSEL0, обеспечивающие коммутацию модулей с контактами 0..15порта 0.Таблица 2 — Назначение бит регистра PINSEL0.Биты КонтактВыбор функции00011011Поумолчанию01:00P0[0]GPIO Port 0.0RD1TXD3SDA10003:02P0[1]GPIO Port 0.1TD1RXD3SCL10005:04P0[2]GPIO Port 0.2TXD0Не исп.Не исп.0007:06P0[3]GPIO Port 0.3RXD0Не исп.Не исп.00Лабораторная работа № 18Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMI09:08P0[4]GPIO Port 0.4I2SRX_CLK/LCDVD[0]RD2CAP2[0]0011:10P0[5]GPIO Port 0.5I2SRX_WS/LCDVD[1]TD2CAP2[1]0013:12P0[6]GPIO Port 0.6I2SRX_SDA/LCDVD[8]SSEL1MAT2[0]0015:14P0[7]GPIO Port 0.7I2STX_CLK/LCDVD[9]SCK1MAT2[1]0017:16P0[8]GPIO Port 0.8I2STX_WS/LCDVD[16]MISO1MAT2[2]0019:18P0[9]GPIO Port 0.9I2STX_SDA/LCDVD[17] MOSI1MAT2[3]0021:20P0[10]GPIO Port 0.10 TXD2SDA2MAT3[0]0023:22P0[11]GPIO Port 0.11 RXD2SCL2MAT3[1]0025:24P0[12]GPIO Port 0.12 USB_PPWR2MISO1AD0[6]0027:26P0[13]GPIO Port 0.13 USB_UP_LED2MOSI1AD0[7]0029:28P0[14]GPIO Port 0.14 USB_HSTEN2USB_CONN ECT2SSEL10031:30P0[15]GPIO Port 0.15 TXD1SCK0SCK00Модуль портов ввода/вывода общего назначения (GPIO) позволяетуправлять состоянием контактов микросхемы (в режим «вывод») илификсировать их состояние для дальнейшего использования в программе (врежиме «ввод»).
Модуль позволяет задавать режим работы для каждого разрядапорта с помощью 32-разрядных регистров направления IODIRx (регистрIODIR0 для порта 0, регистр IODIR1 для порта 1 и т.д.). Запись нуля в какойлибо разряд регистра IODIRx конфигурирует соответствующий разряд порта нарежим «ввод», а запись единицы на режим «вывод».В режиме «вывод» используются регистр сброса порта IOCLRx и региструстановки порта IOSETx, изменяющие состояние выводов порта при записиединичных значений. Например, при записи в регистр IOCLR0 значения0x00000002 уровень сигнала на контакте микросхемы Port0.1 будет установленв состояние логического нуля (при условии правильной настройки модуляуправления выводами и регистра IODIR0).
Остальные выходы не изменятсвоего состояния. При записи значения 0x00000003 в регистр IOSET0 уровеньсигнала на контактах микросхемы Port0.1 и Port0.0 будет установлен всостояние логической единицы. Остальные выходы также не изменят своегосостояния.В режиме «ввод» состояние контакта микросхемы сохраняется в каждомтакте шины APB и может быть прочитано из регистра IOPINx.Пример 1. Простая программа управления портами ввода/вывода./* Программа управляет восемью светодиодами, подключенными к выходам 0..7Порта 0. В зависимости от состояния входа 8 Порта 0 светодиоды зажигаютсясправа-налево или слева-направо */#include <LPC24xx.H>/* Описание LPC24xx */void delay(void) {Лабораторная работа № 19Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIunsigned int i;for (i=0;i<0xfffff;i++){}}int main (void) {unsigned int n;//Конфигурировать функции входов/выходов порта 0 на модуль GPIOPINSEL0= 0x00000000;//IODIR0 - Регистр направления ввода вывода (1 - вывод; 0 - ввод)IODIR0 = 0x00038000; /* P0.15..17 программируем на вывод, остальные на ввод *///IOSET0 - Регистр установки порта (1 - установка; 0 - нет изменений)IOSET0 = 0x00038000; /* Устанавливаем высокий уровень на выходах (гасимсветодиоды) */while (1) {/* Бесконечный цикл *///Если PORT0.10=0 то влево, иначе вправоif (IOPIN0 & 0x400) {for (n = 0x00008000; n <= 0x00020000; n <<= 1) {//Бегущая единица//IOCLR0 - Регистр сброса порта (1 - сброс; 0 - нет изменения)IOCLR0 = n;/* Сбросить порт */delay();/* Задержка *//* То же, что IOSET0 - Установить состояние порта */*((volatile unsigned long *) 0xE0028004) = 0x00038000;}}else {for (n = 0x00020000; n >= 0x00008000; n >>= 1) {//Бегущая единицаIOCLR0 = n;/* Сбросить порт */delay();/* Задержка *//* Установить состояние порта */IOSET0 = 0x00038000;}}}}Описание интегрированной среды разработки Keil uVisionИнтегрированная среда Keil uVision3 фирмы Keil Elektronikпредоставляет пользователю набор средств для написания и отладки кодапрограмм для микроконтроллеров семейств ARM7, ARM9, Cortex M3 и других.В бесплатный дистрибутив входят следующие средства:– интегрированная среда разработки;– С/С++ компилятор RealView;– Макроассемблер и линковщик RealView;– Дополнительные утилиты RealView;– Библиотека RTX Real Time Kernel– Дебаггер uVision.Ознакомительная версия, ограниченная по объему кода, доступна дляскачивания по адресу: https://www.keil.com/demo/eval/arm.htm.Лабораторная работа № 110Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIРисунок 4 - интегрированной среды разработки Keil uVisionСоздание проектаРазработка программы начинается с создания нового проекта.
Для этого вменю Project выбрать пункт New uVision Project. Далее указываетсярасположение и название проекта, модель микроконтроллера (например,NXP(founded by Philips) → LPC2478). После этого система предложит включитьв проект стартовый код, содержащий команды инициализации. Данныйкод содержит таблицу векторов прерываний, код инициализации стекадля различныхрежимовработымикропроцессорногоядра,кодинициализации системы синхронизации и памяти.Для управления списком файлов проекта следует вызвать диалогуправления Project → Manage → Components. Диалог управления позволяеттакже настроить пути к библиотекам, выбрать компилятор, создатьсписок справочников проекта.Рабочее поле проекта показано на рисунке 4.
Его основными элементамиявляются: редактор исходных описаний; окно управления рабочим полем, менюбыстрого запуска; окно консоли.Компиляция проекта.Лабораторная работа № 111Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIДля правильной компиляции простых проектов следует отметить опциюProject → Options for Target → Linker → Use Memory Layout from Target Dialog.Отладка проекта в режиме симуляции.Отладка проекта может выполняться как в режиме симуляции(на программной модели микроконтроллера), так и в режиме аппаратнойотладки (с использованием микроконтроллера и специальных аппаратныхсредств).
Для выбора режима используется диалог «Настройки проекта»,вкладка Debug (Project → Options for Target → Debug), изображенный нарисунке 5. Следует выбрать пункт «Use Simulator».Рисунок 5 - Диалог «Настройки проекта»После этого можно приступить к симуляции, для чего в меню «Debug»следует выбрать пункт «Start/Stop Debug Session» или использовать сочетаниеклавиш Ctrl+F5.Лабораторная работа № 112Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIРисунок 6 — Окно Keil uVision в режиме симуляции.В режиме симуляции пользователю доступно большое количествосредств отладки:• Окна исходного кода, позволяющие назначать точки останова на уровнеисходного кода (breakpoints).• Окно дизассемблера, позволяющие назначать точки останова на уровнеассемблера.• Логический анализатор (Logic Analyzer), позволяющий визуализироватьизменение внешних сигналов и состояния модулей микроконтроллера.• Окна визуализации состояния периферийных устройств.• Окно навигации проекта, включающее вкладки: файлы проекта (Files);регистры ядра (Regs); книги и документация (Books); функции(Functions); типовые конструкции (Templates).• Окносигналовипеременных(Symbols),позволяющеепросмотреть текущеесостояниемикроконтроллера,периферии,сигналов,атакже упрощающее указание отображаемых сигналовлогическому анализатору (для этого следует перенести сигнал илипеременную из окна Symbols в окно в окно Logic Analyzer).• Окно консоли (Output window).• Окно стека (Call stack)• Окно переменных (Watches).• Окно трассировки (Trace).Лабораторная работа № 113Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIОписание отладочной платы SK-LPC2478-S3E.Основу платы составляет микроконтроллер фирмы NXP LPC2478 и FPGAфирмы Xilinx Spartan3E.