Estoy realizando la comunicación UART a través de un solo cable utilizando la modulación de voltaje y corriente con un STM32F0. El problema que tengo es que cuando transmito, se reenvía a mi circuito Rx y recibo un montón de basura.
Me gustaría desactivar el Rx UART completamente mientras estoy transmitiendo, luego restablecer mi circuito analógico Tx (estado de flip flop) y luego volver a habilitar el Rx.
Actualmente, cuando intento hacer esto, cualquier retraso que inserto parece interrumpir el flujo de firmware y me quedo atascado en un bucle de interrupción de UART.
/* Disable Rx UART during message transmission */
USART_ITConfig(PMIC_COM1, USART_IT_RXNE, DISABLE);
/* Reply over CCIF if message 0x28 is received, reply is enabled and
current state is LiIon */
//TODO: Reply Enable might not be necessary if checking for this in LiIon STate
if (replyEnable == 1 && currentState == STATE_LIION)
{
CCIF_Send_Reply();
}
/* Reset Flip Flops */
PMIC_Output_On(FF_RESET);
Delay(5);
PMIC_Output_Off(FF_RESET);
/* Enable Rx UART */
USART_ITConfig(PMIC_COM1, USART_IT_RXNE, ENABLE);
void CCIF_Send_Reply(void)
{
TxBuffer[0] = 0x55;
TxBuffer[1] = 0x66;
TxBuffer[3] = 0xFF;
TxBuffer[4] = '/* Disable Rx UART during message transmission */
USART_ITConfig(PMIC_COM1, USART_IT_RXNE, DISABLE);
/* Reply over CCIF if message 0x28 is received, reply is enabled and
current state is LiIon */
//TODO: Reply Enable might not be necessary if checking for this in LiIon STate
if (replyEnable == 1 && currentState == STATE_LIION)
{
CCIF_Send_Reply();
}
/* Reset Flip Flops */
PMIC_Output_On(FF_RESET);
Delay(5);
PMIC_Output_Off(FF_RESET);
/* Enable Rx UART */
USART_ITConfig(PMIC_COM1, USART_IT_RXNE, ENABLE);
void CCIF_Send_Reply(void)
{
TxBuffer[0] = 0x55;
TxBuffer[1] = 0x66;
TxBuffer[3] = 0xFF;
TxBuffer[4] = '%pre%';
USART_ITConfig(PMIC_COM1, USART_IT_TXE, ENABLE);
}
';
USART_ITConfig(PMIC_COM1, USART_IT_TXE, ENABLE);
}