Arch_EVM_Lab3 (1075555), страница 2
Текст из файла (страница 2)
Передача начинается установкой сигнала TX в низкий уровень(«стартовый бит»). После этого с заданной частотой на линию передаются от 5до 8 бит данных. Последовательность бит передается начиная с младших иможет дополняться контрольным разрядом. Передача завершаетсяустановкой сигнала в единичный уровень («стоповый бит»). Таким образом,один пакет может содержать от 7 до 11 бит. Для правильного приемаинформации передающая и принимающая стороны должны использоватьодинаковые настроечные параметры, такие как: частота синхронизацииприемопередатчика, количество бит данных, наличие стопового бита.Лабораторная работа № 37Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIВ микроконтроллерах NXP LPC2478 четыре приемо-передатчика UART(UART0/1/2/3), три из которых (UART0/2/3) имеют одинаковую структуру инабор регистров.
Дальнейшее описание будет относиться в равной мере кданным трем устройствам.Отличительными особенностями UART0/2/3 является:• Наличие 16 байтных FIFO буферов передатчика и приемника.• Наличие схем контроля уровней заполнения FIFO буферов (1,2,4,8,14слов) с возможностью генерации прерываний.• Встроенный генератор задающей частоты с возможностью умножения иделения частоты, автоподстойки частоты, программного управленияприемом и передачей.В универсальный асинхронный приемопередатчик микроконтроллераLPC2478 входят следующие регистры (Таблица 2):НазваниеОписаниеДоступRBR (приDLAB=0)Регистр буфера приемника позволяет прочитать данные из FIFO чтениебуфера приемника. Чтение данных из регистра RBR возможнопри сброшенном бите DLAB (бит фиксации делителя частоты) врегистре статуса LCRTHR (приDLAB=0)Регистр данных передатчика позволяет записать данные в FIFO записьбуфер передатчика.
Запись возможна только при сброшенномбите DLAB (бит фиксации делителя частоты) в регистре статусаLCRDLL (приDLAB=1)Младший байт делителя частоты позволяет задать частоту чтение/приема и передачи информации через UART.записьDLM (приDLAB=1)Старший байт делителя частоты позволяет задать частоту чтение/приема и передачи информации через UART.записьIER (приDLAB=0)Регистр разрешения прерываний позволяет управлять тремя чтение/прерываниями: прерывание по приему, прерывания по передаче, записьпрерывание по событию на линии RX.IIRРегистр прерываний позволяет идентифицировать прерываниеFCRРегистр управления UART позволяет: разрешить использование записьFIFO буфера, сбросить содержимое FIFO RX и TX буфера,указать уровень заполнения FIFO, вызывающий прерываниеLCRРегистр управления передачей позволяет задать: длина слова (от чтение/5 до 8 бит), стоповый бит (от 1 до 2 бит), контроль по четности, записьвозможность разрыва передачи, бит DLAB фиксации делителячастотыLSRРегистр статуса линий позволяет получить доступ к состоянию чтениелиний RX и TX.SCRДополнительный пользовательский регистрЛабораторная работа № 3чтениечтение/8Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIзаписьACRРегистр управления автоподстойкой частоты служить для чтение/запуска и управления процессом автоматического определения записьчастоты при получении данных.ICRРегистр управления передачей через инфракрасный порт служит чтение/для организации интерфейсов IrDAзаписьFDRРегистр подстройки делителя частоты содержит два поля: чтение/DIVADDVAL (0 ≤ DIVADDVAL < 15) деления частоты и поле записьMULVAL умножения частоты (0 < MULVAL ≤ 15),DIVADDVAL<MULVALTERРегистр разрешения передачичтение/записьЧастота передачи UART задается значениями, хранимыми в регистрахDLL, DLM, FDR по формуле:PCLKUART частота =16×256× DLM DLL×1FDR DIVADDVAL ,FDR MULVALгде PCLK - частота синхронизации UART, DLM и DLL байты делителячастоты, FDRxxx – поля регистра подстройки делителя частоты.
Записьпараметров делителя возможно только при единичном значении разряда DLABрегистра LCR.В приложении 2 приведен алгоритм определения параметров делителячастоты и примеры их вычислений. Пример использования универсальногоасинхронного приемо-передатчика приведен ниже.Пример 2#include <LPC24xx.H>#include <string.h>char str[255],cur_log[9],cur_pas[9],rx;int i;const char log[9] = "root";const char pas[9] = "12345678";//Обработчик прерываний UART0 RDA и CTIvoid UART0_Int(void) __irq{unsigned int j;void *pos;//Читать из FIFO буфера байты данныхwhile (U0LSR & 0x01) {//Прочитать байт и сбросить прерываниеrx=U0RBR;Лабораторная работа № 39Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMI//Сохранить в strmemmove(&str[strlen(str)],&rx,1);if (rx==0xD) {i++;}}if (i>=2) {//Получены две строкиi=0;memset(cur_log,0,9);memset(cur_pas,0,9);pos = memchr (str, 0xD, sizeof (str));if (pos != NULL) {//Получить поле loginj=(int)pos-(int)str;memmove(&cur_log,&str,(int)pos-(int)str);memmove(&str,&str[j+1],strlen(str));pos = memchr (str, 0xD, sizeof (str));if (pos != NULL) {//Получить поле passwordj=(int)pos-(int)str;memmove(&cur_pas,&str,j);memmove(&str,&str[j+1],strlen(str));//Ожидание готовности передатчикаwhile (!(U0LSR & 0x20));if((memcmp(cur_log,log,9)==0)&&(memcmp(cur_pas,pas,9)==0)) {//Идентификация закончилась успешно!U0RBR=0x31;}else {//Идентификация закончилась неудачей!U0RBR=0x30;}}}}VICVectAddr = 0; /*Перевести VIC в исходное состояние*/}void UART0_Init (void){//Разрешить альтернативные UART0 функции входов/выходов P0.2 и P0.3: RxD и TxDPINSEL0= 0x00000050;//Установить параметры передачи: 8 бит, без контроля четности, 1 стоповый бит//+Разрешить запись делителя частоты CLK_UART0U0LCR = 0x00000083;//Установить делитель частоты на скорость 115200 при частоте CLK_UART0 = 15MHzU0DLL = 0x00000008;//Фиксировать делитель частотыU0LCR = 0x00000003;//Программировать FIFO буфер на прием 8-ми байт.U0FCR = 0x00000081;//Разрешить прерывание по приемуU0IER = 0x00000001;//Записать адрес обработчика прерывания в таблицу векторовVICVectAddr6 = (unsigned)UART0_Int;//Разрешить прерыванияVICIntEnable |= 0x00000040;Лабораторная работа № 310Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMI}int main(void){UART0_Init();for (;;){}}Практическая частьЗадание 1.
Ознакомиться с теоретическим материалом на стр. 2-10.Задание 2. Создать проект C программы в среде Keil uVision длямикроконтроллера NXP LPC2478 с частотой генератора, указанной виндивидуальном задании.Задание 3. Определить параметры M, N, CLKSEL(7:0), PCLKSEL0,PCLKSEL1, DLL, DLM, FDR для синхронизации приема и передачиинформации по UART0.Задание 4. Разработать программу функционирования микроконтроллерапо индивидуальному заданию. Реализовать два варианта процедуры обработкипрерываний: быстрое прерывание FIQ и векторное прерывание IRQ.Задание 5.
Протестировать правильность функционирования программы спомощью среды Keil uVision. Результаты занести в отчет.Требования к отчетуОтчет по работе должен содержать: задание, листинги программфункционирования микроконтроллера для FIQ и IRQ прерываний, текстпрограммы, результаты тестирования программы, выводы о работоспособностипрограммы.Контрольные вопросы1.2.3.4.Для чего предназначен блок VIC микроконтроллера?В чем отличие прерывания IRQ от прерывания FIQ?Сколько линий прерываний подключено к VIC?Как выглядит пакет, передаваемый UART по интерфейсу RS232 дляпередачи 8-бит числа 0x0f с одним стоповым битом и контролем почетности.Лабораторная работа № 311Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMI5.
Перечислите программно задаваемые параметры, определяющие частотупередачи по UART.Лабораторная работа № 312Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIПриложение 1. Назначение линий прерываний каналам VIC.КаналМодульОписание источников прерываний0WDTWatchdog Interrupt (WDINT)1-Зарезервировано за Software Interrupt2Ядро ARMEmbedded ICE, DbgCommRx3Ядро ARMEmbedded ICE, DbgCommTx4TIMER0Match 0 - 1 (MR0, MR1), Capture 0 - 1(CR0, CR1)5TIMER1Match 0 - 2 (MR0, MR1, MR2), Capture 0 1 (CR0, CR1)6UART0Rx Line Status (RLS),Transmit Holding Register Empty (THRE),Rx Data Available (RDA),Character Time-out Indicator (CTI),End of Auto-Baud (ABEO),Auto-Baud Time-Out (ABTO)7UART1Rx Line Status (RLS),Transmit Holding Register Empty (THRE),Rx Data Available (RDA),Character Time-out Indicator (CTI),End of Auto-Baud (ABEO),Auto-Baud Time-Out (ABTO)8PWM0, PWM1Match 0 - 6 of PWM0,Capture 0 of PWM0,Match 0 - 6 of PWM1,Capture 0-1 of PWM19I2C0SI (state change)10SPI, SSP0SPI Interrupt Flag of SPI (SPIF),Mode Fault of SPI (MODF),Tx FIFO half empty of SSP0,Rx FIFO half full of SSP0,Rx Timeout of SSP0,Rx Overrun of SSP011SSP 1Tx FIFO half emptyRx FIFO half fullRx TimeoutRx Overrun12PLLPLL Lock (PLOCK)13RTCCounter Increment (RTCCIF)Alarm (RTCALF)Subsecond Int (RTCSSF)Лабораторная работа № 313Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIКаналМодульОписание источников прерываний14System ControlExternal Interrupt 0 (EINT0)15System ControlExternal Interrupt 1 (EINT1)16System ControlExternal Interrupt 2 (EINT2), LCD17System ControlExternal Interrupt 3 (EINT3)18ADC0A/D Converter 0 end of conversion19I2C1I2C1 SI (state change)20BODBrown Out detect21EthernetWakeupInt, SoftInt, TxDoneInt,TxFinishedInt,TxErrorInt, TxUnderrunInt, RxDoneInt,RxFinishedInt, RxErrorInt, RxOverrunInt.22USBUSB_INT_REQ_LP, USB_INT_REQ_HP,USB_INT_REQ_DMA23CANCAN Common, CAN 0 Tx, CAN 0 Rx,CAN 1 Tx,CAN 1 Rx24SD/ MMC interfaceRxDataAvlbl, TxDataAvlbl, RxFifoEmpty,TxFifoEmpty,RxFifoFull, TxFifoFull, RxFifoHalfFull,TxFifoHalfEmpty,RxActive, TxActive, CmdActive,DataBlockEnd, StartBitErr,DataEnd, CmdSent, CmdRespEnd,RxOverrun,TxUnderrun, DataTimeOut, CmdTimeOut,DataCrcFail,CmdCrcFail25GP DMAIntStatus of DMA channel 0, IntStatus ofDMA channel 126Timer 2Match 0-3Capture 0-127Timer 3Match 0-3Capture 0-128UART2Rx Line Status (RLS),Transmit Holding Register Empty (THRE),Rx Data Available (RDA),Character Time-out Indicator (CTI),End of Auto-Baud (ABEO),Auto-Baud Time-Out (ABTO)29UART3Rx Line Status (RLS),Лабораторная работа № 314Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIКаналМодульОписание источников прерыванийTransmit Holding Register Empty (THRE),Rx Data Available (RDA),Character Time-out Indicator (CTI),End of Auto-Baud (ABEO),Auto-Baud Time-Out (ABTO)30I2C2SI (state change)31I2Sirq_rxirq_txЛабораторная работа № 315Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIПриложение 2.
Определения параметров делителя частоты UART0/2/3.Лабораторная работа № 316Попов А.Ю.Проектирование радиоэлектронной аппаратуры на основе микроконтроллеров ARM7TDMIЛабораторная работа № 317.