[an error occurred while processing this directive]
Лови ....
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено michaelv 02 февраля 2005 г. 07:50
В ответ на: Связь TMS320LF2407 c пультом через RS232 отправлено dimka124 28 января 2005 г. 10:32

struct sci
{
unsigned int ccr; /* 0x7050 in data space */
unsigned int ctl1; /* 0x7051 in data space */
unsigned int baud_hi; /* 0x7052 in data space */
unsigned int baud_lo; /* 0x7053 in data space */
unsigned int ctl2; /* 0x7054 in data space */
unsigned int rxst; /* 0x7055 in data space */
unsigned int rxemu; /* 0x7056 in data space */
unsigned int rxbuf; /* 0x7057 in data space */
unsigned int res1; /* 0x7058 in data space */
unsigned int txbuf; /* 0x7059 in data space */
unsigned int res2; /* 0x705a in data space */
unsigned int res3; /* 0x705b in data space */
unsigned int res4; /* 0x705c in data space */
unsigned int res5; /* 0x705d in data space */
unsigned int res6; /* 0x705e in data space */
unsigned int pri; /* 0x705f in data space */
};
typedef volatile struct sci SCI_STRUCT;
bool ChangeBaudRate(HANDLE h_Port, WORD BaudRate)
{
WORD mirror;
#ifdef _SCI2407_
SCI_STRUCT *sciptr; // pointer to sci defined structure
sciptr = (SCI_STRUCT *)SCI;
if(h_Port==SCI2407)
{
sciptr->baud_hi = BaudRate / 0x100;
sciptr->baud_lo = BaudRate % 0x100;
return true;
}
#endif
....
}
HANDLE OpenPort(char* Port, WORD BaudRate)
{
HANDLE h_Port;

SCI_STRUCT *sciptr; /* pointer to sci defined structure */
volatile WORD OCRAReg, INTReg, in_char;
#ifdef _SCI2407_
if(memcmp(Port, "SCI" , 3) == 0)
{
sciptr = (SCI_STRUCT *)SCI; /* overlay structure over the hardware */
/* 0x7050 for C2407 */
/* 1 stop, no parity, 8 data, async */
/* 0x17 */
/* Reset the uart */
sciptr->ctl1 = 0;
Sleep( 1 );
sciptr->ctl1 = SW_RESET;
/* reset low, clock internal, */
/* xmit enable, rec enable */
/* 0x13 */
sciptr->ccr = (WORD) ( SCI_CHAR2 | SCI_CHAR1 | SCI_CHAR0);
/* enable TX & RX ints */
/* 0x03 */
/* Set Interrupt SCI2407 */
INTReg = *(volatile WORD *)IMR;
INTReg |= 0x10; /* Set Unmask INT5=0x10 */

*(volatile WORD *)IMR = INTReg;
*(volatile WORD *)IFR = 0x10; /* Clear Interrupt request */

sciptr->ctl2 = (unsigned int) (RX_INT_EN);
/* load the baud rate */
ChangeBaudRate(SCI2407, BaudRate);

/*------------------------------------------------------------*/
/* Set mode to soft & TX low Prioritet */
/*------------------------------------------------------------*/
sciptr->pri = PRI_SOFT/*|PRI_RXPRI/*|PRI_TXPRI*/;

/*-------------------------------------------------------------*/
/* xmit enable, rec enable */
/*-------------------------------------------------------------*/
sciptr->ctl1 = (WORD) (SW_RESET | TX_ENA | RX_ENA | RXERR);
/* sciptr->ctl1 = (WORD) (SW_RESET | RX_ENA ); */
/* in_char = sciptr->rxst; */
/*------------------------------------------------------------*/
/* Test Uart */
/*------------------------------------------------------------*/
/*
sciptr->ccr |= (WORD)(LOOP_BACK);
sciptr->ccr = (WORD) ( SCI_CHAR2 | SCI_CHAR1 | SCI_CHAR0); */
return SCI2407;
} else
#endif
.......
}
#ifdef _SCI2407_
//////////////////////////////
// Read from SCI DSP //
//////////////////////////////
int readSCI2407(void)
{
SCI_STRUCT *sciptr = (SCI_STRUCT *)SCI; /* pointer to sci defined structure */

WORD rcv_status = 0;
WORD in_char;

rcv_status = sciptr->rxst;
rcv_status &= RXRDY;
if(!rcv_status)return -1;


if(!rcv_status)
{
sciptr->ctl1 = 0;
Sleep(1);
sciptr->ctl1 = (WORD) ( SW_RESET | TX_ENA | RX_ENA | RXERR);
return -1;
}

in_char = sciptr->rxbuf; /* get data from rec buffer */
in_char &= 0x00ff;
return (in_char); /* return data */

}
//////////////////////////
// transmit to SCI DSP //
//////////////////////////
WORD writeSCI2407(WORD out_char)
{
SCI_STRUCT *sciptr = (SCI_STRUCT *)SCI; /* pointer to sci defined structure */
WORD xmit_status = 0;

while( !xmit_status )
{
xmit_status = sciptr->ctl2; /* read xmit status */
xmit_status &= TX_EMPTY;
/* xmit_status &= TX_RDY; */
}
sciptr->txbuf = (0x00ff & out_char); /* send data */
return ((WORD) 0); /* return no error */

}
#endif

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru