36 lines
655 B
C
36 lines
655 B
C
#ifndef _SOFT_UART_H
|
|
#define _SOFT_UART_H
|
|
|
|
enum suart_state {
|
|
WAIT_RESET,
|
|
IN_RESET,
|
|
WAIT_START_FALLEDGE,
|
|
WAIT_START_ETU07,
|
|
RX_BITS,
|
|
POST_RX_WAIT_HIGH,
|
|
};
|
|
|
|
enum suart_convention {
|
|
DIRECT_CONVENTION,
|
|
INVERSE_CONVENTION,
|
|
};
|
|
|
|
struct suart_data {
|
|
uint32_t samplerate; /* samples per second input rate */
|
|
uint32_t recip_etu; /* 1/etu */
|
|
uint8_t num_bits;
|
|
|
|
enum suart_state state;
|
|
enum suart_convention convention;
|
|
|
|
uint32_t sample_after_sbit;
|
|
uint8_t bits_pending;
|
|
|
|
uint8_t rx_char;
|
|
};
|
|
|
|
int suart_process_sample_bit(struct suart_data *suart, uint8_t clk_bit, uint8_t rst_bit, uint8_t sample_bit);
|
|
void suart_init(struct suart_data *su);
|
|
|
|
#endif
|