Exemple #1
0
/** Turn On the USART
 *
 * @param drv_info
 * @param pMode
 */
void USART_CFG(USART_INFO drv_info, DRV_UART_MODE pMode)
{
	Usart* pUsart =drv_info->hw_base;

    drv_pmc_enable(&drv_info->info);
    pUsart->US_WPMR = US_WPMR_WPKEY(0x555341);

    //* Reset receiver and transmitter
    pUsart->US_CR = US_CR_RSTRX | US_CR_RSTTX | US_CR_RXDIS | US_CR_TXDIS;

  	//* Define the baud rate divisor register
	pUsart->US_BRGR = AT91_GetDiv(pMode->baudrate);

	//* Write the Timeguard Register
    pUsart->US_TTGR = 3 ;
    pUsart->US_RTOR = pMode->rtout;

    //* Define the USART mode
    pUsart->US_MR = pMode->mode;

    //* Clear Transmit and Receive Counters
    pUsart->US_TNCR = 0;
	pUsart->US_TCR = 0;
	pUsart->US_RNCR = 0;
	pUsart->US_RCR = 0;
	pUsart->US_PTCR = US_PTCR_RXTEN | US_PTCR_TXTEN;

   	// Enable Usart
    pUsart->US_CR = US_CR_TXEN | US_CR_RXEN | US_CR_STTTO;

    pUsart->US_IER = US_IER_ENDRX | US_IER_TIMEOUT;
   	drv_enable_isr(&drv_info->info);
    PIO_CfgPeriph(&drv_info->pins);
}
Exemple #2
0
void UART_OFF(Uart* pUart)
{
    //* Disable all interrupts
    pUart->UART_IDR = UART_IDR_RXRDY | UART_IDR_TXRDY | UART_IDR_ENDRX
    		| UART_IDR_ENDTX | UART_IDR_OVRE | UART_IDR_FRAME | UART_IDR_PARE
    		| UART_IDR_TXEMPTY | UART_IDR_TXBUFE | UART_IDR_RXBUFF;

    //* Reset the baud rate divisor register
    pUart->UART_BRGR = 0 ;

    //* Reset the USART mode
    pUart->UART_MR = 0  ;

    //* Abort the Peripheral Data Transfers
	pUart->UART_PTCR =UART_PTCR_RXTDIS | UART_PTCR_TXTDIS;
	pUart->UART_RNCR = 0;
	pUart->UART_TNCR = 0;
	pUart->UART_RCR = 0;
	pUart->UART_TCR = 0;


    //* Disable receiver and transmitter and stop any activity immediately
    pUart->UART_CR = UART_CR_TXDIS | UART_CR_RXDIS | UART_CR_RSTTX | UART_CR_RSTRX;

	//RTS =1 (not ready)
    PIO_CfgPeriph(DRXD_PIN | DTXD_PIN);

}