PSoC3 UART stops responding. | Cypress Semiconductor
PSoC3 UART stops responding.
In our application, we are using the PSoC3 UART to communicate with another device using a packet based protocol. We have our own interrupt handled software input/output buffers (64 bytes each).
We are observing random/intermittent lockups from the PSoC UART. The only way to regain the UART is to reflash the PSoC using a MiniProg3 programmer or to cycle the power on the PSoC board. This failure occurs without any error signaling from the UART. It just stops passing bytes. The PSoC continues to process interrupts, including communicating with other hardware devices on SPI and I2C buses. Our interrupt handler is checking UART status and sending/receiving bytes via the Cypress UART API (uint8 UART_Bluetooth_ReadRxStatus(), void UART_PutChar(uint8), and uint8 UART_Bluetooth_ReadRxData(void)).
We have multiple PSoC3 devices running the same firmware and all exhibit this behavior.
Our UART Configuration: 57600, 8, None, 1, No Flow Control
Our Tx interrupt mask is: UART_TX_STS_FIFO_NOT_FULL. This interrupt mask is set to zero when the output buffer is empty.
Our Rx interrupt mask is: UART_ RX_STS_BREAK | UART_RX_STS_OVERRUN | UART_RX_STS_STOP_ERROR | UART_RX_STS_FIFO_NOTEMPTY. This mask is set during initialization and remains during operation.
Any thought on how to detect what this error is and/or how to gracefully recover the UART would be greatly appreciated.