diff options
Diffstat (limited to 'old/ft232r/soft_uart.h')
-rw-r--r-- | old/ft232r/soft_uart.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/old/ft232r/soft_uart.h b/old/ft232r/soft_uart.h new file mode 100644 index 0000000..3027a47 --- /dev/null +++ b/old/ft232r/soft_uart.h @@ -0,0 +1,35 @@ +#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 |