Ejemplo n.º 1
0
// Initialize UART for extended-audio
void AUDIO_Init() {
    if (Transmitter.audio_player == AUDIO_DISABLED) {
        // Reload hardware.ini if audio_player had been temporarily disabled
        CONFIG_LoadHardware();
    }
    printf("Voice: Initializing UART for extended-audio\n");

#if HAS_AUDIO_UART5
    if (Transmitter.audio_uart5) {
        printf("Voice: UART5 already initialized\n");
        return;
    }
#endif

#ifndef _DEVO12_TARGET_H_
    if ( PPMin_Mode() || Model.protocol == PROTOCOL_PPM ) {
        printf("Voice: Cannot initialize UART for extended-audio, PPM in use\n");
        UART_SetDataRate(0);
    }
    else {
#endif // _DEVO12_TARGET_H_
        printf("Voice: Setting up UART for extended-audio\n");
        UART_SetDataRate(9600);
#ifndef _DEVO12_TARGET_H_
    }
#endif // _DEVO12_TARGET_H_
    AUDIO_SetVolume();
}
Ejemplo n.º 2
0
void UART_Initialize()
{
    /* Enable clocks for GPIO port containing _USART and USART */
    rcc_periph_clock_enable(get_rcc_from_port(UART_CFG.uart));
    rcc_periph_clock_enable(get_rcc_from_pin(UART_CFG.rx));
    rcc_periph_clock_enable(get_rcc_from_pin(UART_CFG.tx));

    /* Enable DMA clock */
    rcc_periph_clock_enable(get_rcc_from_port(USART_DMA.dma));

    /* Setup GPIO pin GPIO_USARTX_TX on USART GPIO port for transmit.
       Set normal function to input as this is mode reverted to in half-duplex receive */
    GPIO_setup_input(UART_CFG.rx, ITYPE_FLOAT);
    GPIO_setup_output_af(UART_CFG.tx, OTYPE_PUSHPULL, UART_CFG.uart);

    /* Setup UART parameters. */
    UART_SetDataRate(0);
    UART_SetFormat(8, UART_PARITY_NONE, UART_STOPBITS_1);
    UART_SetDuplex(UART_DUPLEX_FULL);
    usart_set_flow_control(UART_CFG.uart, USART_FLOWCONTROL_NONE);
    usart_set_mode(UART_CFG.uart, USART_MODE_TX_RX);

    /* Finally enable the USART. */
    usart_enable(UART_CFG.uart);

    nvic_set_priority(get_nvic_dma_irq(USART_DMA), 3);
    nvic_enable_irq(get_nvic_dma_irq(USART_DMA));

#if HAS_AUDIO_UART
    /* Enable clocks for GPIO port C (for GPIO_UART5_TX) and UART5. */
    rcc_periph_clock_enable(get_rcc_from_port(AUDIO_UART_CFG.uart));
    rcc_periph_clock_enable(get_rcc_from_pin(AUDIO_UART_CFG.tx));

    /* Setup GPIO pins to use UART5 */
    GPIO_setup_output_af(AUDIO_UART_CFG.tx, OTYPE_PUSHPULL, AUDIO_UART_CFG.uart);

    /* Setup UART5 parameters. */
    usart_set_baudrate(AUDIO_UART_CFG.uart, 9600);
    usart_set_databits(AUDIO_UART_CFG.uart, 8);
    usart_set_stopbits(AUDIO_UART_CFG.uart, USART_STOPBITS_1);
    usart_set_parity(AUDIO_UART_CFG.uart, USART_PARITY_NONE);
    usart_set_mode(AUDIO_UART_CFG.uart, USART_MODE_TX);

    /* Finally enable the AUDIO_UART_CFG.uart. */
    usart_enable(AUDIO_UART_CFG.uart);
#endif
}