реклама на сайте
подробности

 
 
> ADSP Blackfin BF 533, Работа с UART
bychkov_vladimir
сообщение Jul 23 2007, 07:19
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 106
Регистрация: 1-06-05
Из: Подольск
Пользователь №: 5 629



Добрый день всем !
Существует необходимость работы процессора BF533 с последовательным портом RS232.
На данном этапе работаю в оценочном режиме и использую
аппаратную платформу для этого применения - KIT ADDS - BF533 - EZLite.
создал простейший проект для работы в зеркальном режиме с HYP Terminal Windows. и вот уже который день бьюсь с тем, чтобы хоть как то запустить проект в работу.

хочу привести пример своего описания (все сделано в main). Если не затруднит опытных разработчиков - сделайте пожалуйста замечания по инициализации и работе с портом.
в HYP Terminal настраиваюсь на работу со скоростью 19200.

#include <cdefBF533.h>
#include <ccblkfn.h>
#include <sysreg.h>
#include <sys\exception.h>
#define N 128
// ---------------------------------------------------------------------------------
void initUART(void) ; //function for initializing the UART
void initIRQ(void) ; //initialization Interrupt
void init_UART_Irq(void) ;
void initIRQ(void) ; //function for receive interrupt
void initPLL(void) ; //Initialize PLL to 594MHz and set up SCLK 118MHz.
EX_INTERRUPT_HANDLER(UARTRx_ISR);
void UART_putRECData(void) ; // back Receve Data to terminal
// ---------------------------------------------------------------------------------

char welcomemessage[] = {"\fHello! \n\r"
"Initialization UART comlete ! \n\r"} ;

char REC_Data[N] ;


main()
{

initPLL();
initUART();
// после инициализации порта появилось гостевое приглашение.
// далее следует обработка прерывания по приему данных.
init_UART_Irq() ;
initIRQ() ;
while(1)
{
};
}

void initUART()
{
int i ;


*pUART_LCR = 0x00B3 ;
// 0000|0000
// 1011
// DLAB = 1 разрешен доступ к регистру делителя (исспользование общего адресного простр.),
// SB = 0 соединение не разрывается,
// бит четности передается м проверяется как 0.
// проверка на четность
// 0011
// PEN = 0 бит проверки не передается и не проверяется
// STB = 0 1 стоповый бит
// WLS[1:0] - 11 - 8 разрядное слово

*pUART_MCR = 0x0000 ;
*pUART_GCTL = 0x0031;
// 0000|0000
// 00
// FFE = 1 нормальный режим работы.
// FPE = 1 нормальный режим работы.
// IREN = 0 работа IRDA запрешена.
// UCEN = 1 разрешение подачи сигнала тактовой синхронизации
*pUART_DLL = 0x0083 ; // 10000011 ;
*pUART_DLH = 0x0001 ; // 00000001 ; // Divizor = 387 (19200)

// разрешить доступ к регистру передачи и приема
*pUART_LCR = 0x0033 ;
// передача приветствия в терминальную программу
int Size ;
Size = sizeof(welcomemessage) ;
for ( i=0 ; i<Size ; i++)
{
// ждать готовность передатчика
do {;}
while (TEMT == 0) ; // пока сдвиговый и буферн. регистры заполнены.
*pUART_THR = welcomemessage[i] ;
}

}

void init_UART_Irq(void)
{
*pUART_IER = 0x0001 ;
}

void initIRQ(void)
{
*pSIC_IAR0 = 0xffffffff ;
*pSIC_IAR1 = 0xf3ffffff ; // назначение ID 3 для приема данных по UART
*pSIC_IAR2 = 0xffffffff ;
register_handler(ik_ivg10, UARTRx_ISR); // UART RX -> IVG 10

*pSIC_IMASK = 0x00004000;

}

void initPLL(void)
{

sysreg_write(reg_SYSCFG, 0x32); // Инициализация системного конф.регистра

*pSIC_IWR = 0x1;
*pPLL_CTL = 0x2C00; // множитель 22, а делитель 5 (27МГц.* 22 = 594 МГц / 5 = 118 МГц.)
ssync();
idle();


}
// -------------------------------------------------------------------------------------
EX_INTERRUPT_HANDLER(UARTRx_ISR)
{

static int ii ;
++ii ;
//char temp = 0xA ;
REC_Data[ii] = *pUART_RBR ; // -- чтение должно отпустить прерывание.
//REC_Data[ii] = temp ;
if (ii == N)
{
UART_putRECData();
}


}
// -------------------------------------------------------------------------------------
void UART_putRECData(void)
{
int i ;
int Size_REC ;
Size_REC = sizeof(REC_Data) ;
for (i = 0;i < Size_REC; i++)
{
while (THRE == 0) ; // пока не пуст.
{;}
*pUART_THR = REC_Data[i] ;
}
}



Заранее благодарен.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 08:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016