index 639e130db3c32d4d31ce347365a48ba95394de93..1f0472efb86f39772c961730495501d9a89aeed5 100755 (executable)
static void uart_delay_cycles(uint32_t cycles)
{
- while (cycles--) {
- asm ("NOP");
- }
+ while (cycles--) {
+ asm ("NOP");
+ }
}
+/******************************************************************************
+ *
+ * Function: uart_init
+ *
+ * Description: This function initializes UART peripheral for C66x
+ *
+ * Parameters: str - string to print
+ * length - length of the string to print
+ *
+ * Return Value: none
+ ******************************************************************************/
void uart_init(void)
{
- uint16_t uiBaudRate;
- uint8_t uiDLLVal = 0;
- uint8_t uiDLHVal = 0;
+ uint8_t DLL_val = 0;
+ uint8_t DLH_val = 0;
- // Allows access to the divisor latches of the baud generator during a
- // read or write operation (DLL and DLH)
+ /* Setting baud rate to 115200 */
+ DLL_val = (uint8_t )(0x00FF & BAUD_RATE_115200);
+ DLH_val = (uint8_t )(0x00FF & (BAUD_RATE_115200 >> 8));
- hUartRegs->LCR = 0x80;
+ /* Allows access to the divisor latches of the baud generator during a
+ read or write operation (DLL and DLH) */
- // Set the baudrate,for accessing LCR[7] should be enable
- hUartRegs->DLL = DLL_VAL;
- hUartRegs->DLH = DLM_VAL;
+ uart_registers->LCR = 0x80;
- // Allows access to the receiver buffer register (RBR),
- // the transmitter holding register (THR), and the
- // interrupt enable register (IER) selected.
- hUartRegs->LCR = 0x18;
+ /* Set the baudrate,for accessing LCR[7] should be enable */
+ uart_registers->DLL = DLL_val;
+ uart_registers->DLH = DLH_val;
- // Disable THR, RHR, Receiver line status interrupts
- hUartRegs->IER = 0;
+ /* Allows access to the receiver buffer register (RBR),
+ the transmitter holding register (THR), and the
+ interrupt enable register (IER) selected. */
+ uart_registers->LCR = 0x18;
+
+ /* Disable THR, RHR, Receiver line status interrupts */
+ uart_registers->IER = 0;
/* If autoflow control is desired,
- * write appropriate values to the modem
- * control register (MCR). Note that all UARTs
- * do not support autoflow control, see
- * the device-specific data manual for supported features.
- *
- * MCR
- * ====================================================
- * Bit Field Value Description
- * 5 AFE 0 Autoflow control is disabled
- * 4 LOOP 0 Loop back mode is disabled.
- * 1 RTS 0 RTS control (UARTn_RTS is disabled,
- * UARTn_CTS is only enabled.)
- * =====================================================
- *
- *
- */
-
- hUartRegs->MCR = 0;
+ * write appropriate values to the modem
+ * control register (MCR). Note that all UARTs
+ * do not support autoflow control, see
+ * the device-specific data manual for supported features.
+ *
+ * MCR
+ * ====================================================
+ * Bit Field Value Description
+ * 5 AFE 0 Autoflow control is disabled
+ * 4 LOOP 0 Loop back mode is disabled.
+ * 1 RTS 0 RTS control (UARTn_RTS is disabled,
+ * UARTn_CTS is only enabled.)
+ * =====================================================
+ *
+ *
+ */
+
+ uart_registers->MCR = 0;
/* Choose the desired response to
- * emulation suspend events by configuring
- * the FREE bit and enable the UART by setting
- * the UTRST and URRST bits in the power and
- * emulation management register (PWREMU_MGMT).
- *
- *
- * PWREMU_MGMT
- * =================================================
- * Bit Field Value Description
- * 14 UTRST 1 Transmitter is enabled
- * 13 URRST 1 Receiver is enabled
- * 0 FREE 1 Free-running mode is enabled
- * ===================================================
- *
- */
- hUartRegs->PWREMU_MGMT = 0x6001;
+ * emulation suspend events by configuring
+ * the FREE bit and enable the UART by setting
+ * the UTRST and URRST bits in the power and
+ * emulation management register (PWREMU_MGMT).
+ *
+ *
+ * PWREMU_MGMT
+ * =================================================
+ * Bit Field Value Description
+ * 14 UTRST 1 Transmitter is enabled
+ * 13 URRST 1 Receiver is enabled
+ * 0 FREE 1 Free-running mode is enabled
+ * ===================================================
+ *
+ */
+ uart_registers->PWREMU_MGMT = 0x6001;
/* Cleanup previous data (rx trigger is also set to 0)*/
- /* Set FCR = 0x07; */
- hUartRegs->FCR = 0xC1;
-
- /* Setting baud rate to 115200 */
- uiBaudRate = 88;
+ uart_registers->FCR = 0xC1;
/* Setting the baud rate */
- hUartRegs->LCR = 0x80;
- uiDLLVal = (uint8_t )(0x00FF & uiBaudRate);
- uiDLHVal = (uint8_t )(0x00FF & (uiBaudRate >> 8));
-
- // Set the baudrate,for accessing LCR[7] should be enable
- hUartRegs->DLL = uiDLLVal;
- hUartRegs->DLH = uiDLHVal;
- hUartRegs->LCR = 0x03;
-
- hUartRegs->LCR = 0x80;
- uiDLLVal = (uint8_t )(0x00FF & uiBaudRate);
- uiDLHVal = (uint8_t )(0x00FF & (uiBaudRate >> 8));
- // Set the baudrate,for accessing LCR[7] should be enable
- hUartRegs->DLL = uiDLLVal;
- hUartRegs->DLH = uiDLHVal;
- hUartRegs->LCR = 0x03;
+ uart_registers->LCR = 0x80;
+
+ /* Set the baudrate,for accessing LCR[7] should be enable */
+ uart_registers->DLL = DLL_val;
+ uart_registers->DLH = DLH_val;
+ uart_registers->LCR = 0x03;
return;
}
/******************************************************************************
*
- * Function: uart_write_byte
+ * Function: uart_write_byte
*
- * Description: This function writes a byte of data to UART device
+ * Description: This function writes a byte of data to UART device
*
- * Parameters: uint8_t uchAddress - Address of 8-bit register
- * uint8_t uchByte - 8-bit data to write to THR
+ * Parameters: byte - 8-bit data to write to THR
*
* Return Value: none
******************************************************************************/
-static void uart_write_byte(uint8_t uchByte)
+static inline void uart_write_byte(uint8_t byte)
{
- while (!(hUartRegs->LSR & UART_LSR_THRE_MASK)) {
- uart_delay_cycles(10000);
+ while (!(uart_registers->LSR & UART_LSR_THRE_MASK)) {
+ uart_delay_cycles(10000);
}
- hUartRegs->THR = (UART_THR_DATA_MASK & uchByte);
+ uart_registers->THR = (UART_THR_DATA_MASK & byte);
return;
}
-void uart_write_string(uint8_t * str, uint32_t length)
+/******************************************************************************
+ *
+ * Function: uart_write_string
+ *
+ * Description: This function writes a string of data to UART device
+ *
+ * Parameters: str - string to print
+ * length - length of the string to print, maximum is 80
+ *
+ * Return Value: none
+ ******************************************************************************/
+void uart_write_string(char * str, uint32_t length)
{
- uint32_t i;
- uart_write_byte((uint8_t)0x0D);
- uart_write_byte((uint8_t)0x0A);
- for(i = 0; i < length; i++)
- {
- uart_write_byte(str[i]);
- }
+ uint32_t i;
+ if (length==0)
+ {
+ /*Maximum length is 80 */
+ length=80;
+ }
+ for(i = 0; i < length; i++) {
+ if(str[i]=='\0') break;
+ uart_write_byte((uint8_t)str[i]);
+ }
+ uart_write_byte((uint8_t)0x0D);
+ uart_write_byte((uint8_t)0x0A);
}