tsoftuart: add a softare timer base UART driver, and example.
This commit is contained in:
parent
05da9151ee
commit
5ab0d05768
8 changed files with 349 additions and 0 deletions
47
extras/tsoftuart/tsoftuart.h
Normal file
47
extras/tsoftuart/tsoftuart.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Software timer based UART driver.
|
||||
*
|
||||
* Copyright (C) 2018 to 2019 OurAirQuality.org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0, January 2004 (the
|
||||
* "License"); you may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at
|
||||
* http://www.apache.org/licenses/
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS WITH THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _TSOFTUART_H
|
||||
#define _TSOFTUART_H
|
||||
|
||||
#include "mactimer/mactimer.h"
|
||||
|
||||
typedef struct tsoftuart {
|
||||
uint32_t tx_pin;
|
||||
/* Bit time period in usec * 256 */
|
||||
uint32_t td;
|
||||
mactimer_t output_mactimer;
|
||||
uint32_t output_queue[16];
|
||||
volatile uint64_t output_start_time;
|
||||
volatile size_t output_queue_head;
|
||||
volatile size_t output_queue_tail;
|
||||
size_t output_queue_state;
|
||||
uint64_t output_expected_time;
|
||||
int32_t output_queue_error_high;
|
||||
int32_t output_queue_error_low;
|
||||
uint32_t output_done;
|
||||
} tsoftuart_t;
|
||||
|
||||
void tsoftuart_putc(tsoftuart_t *uart, uint8_t ch);
|
||||
ssize_t tsoftuart_write(tsoftuart_t *uart, const void *ptr, size_t len);
|
||||
tsoftuart_t *tsoftuart_init(uint8_t tx_pin, uint32_t baud_rate);
|
||||
|
||||
#endif /* _TSOFTUART_H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue