Collaboration diagram for USART Driver Frame:
The USART device driver implements buffered, interrupt controlled serial communication. It supports software and hardware handshake, 9-bit communication, half duplex and synchronous operation.
The driver's code is devided into a general part and a hardware dependant part, which simplifies porting it to different USART chips. The AVR USART Devices provide support for the ATmega128/103 on-chip USARTs.
Data Structures | |
struct | _RINGBUF |
Character device ring buffer structure. More... | |
struct | _USARTDCB |
USART device low level information structure. More... | |
struct | _RINGBUF |
Character device ring buffer structure. More... | |
struct | _USARTDCB |
USART device low level information structure. More... | |
Ring Buffer | |
#define | USART_RXBUFSIZ 256 |
Initial receive buffer size. | |
#define | USART_RXHIWMARK 240 |
Receiver's initial high water mark. | |
#define | USART_RXLOWMARK 208 |
Receiver's initial low water mark. | |
#define | USART_TXBUFSIZ 64 |
Initial transmit buffer size. | |
#define | USART_TXHIWMARK 56 |
Transmitter's initial high water mark. | |
#define | USART_TXLOWMARK 40 |
Transmitter's initial low water mark. | |
typedef _RINGBUF | RINGBUF |
Character device ring buffer type. | |
Initial UART Configuration | |
#define | USART_INITSPEED 115200 |
Initial bit rate. | |
Defines | |
#define | USART_MF_RTSCONTROL 0x0001 |
#define | USART_MF_CTSSENSE 0x0002 |
#define | USART_MF_DTRCONTROL 0x0004 |
#define | USART_MF_DSRSENSE 0x0008 |
#define | USART_MF_DCDSENSE 0x0010 |
#define | USART_MF_SENSEMASK 0x001A |
#define | USART_MF_CONTROLMASK 0x0005 |
#define | USART_MF_XONXOFF 0x0020 |
Software handshake. | |
#define | USART_MF_LOCALECHO 0x0040 |
#define | USART_MF_COOKEDMODE 0x0080 |
#define | USART_MF_NOBUFFER 0x0100 |
#define | USART_MF_LINEBUFFER 0x0200 |
#define | USART_MF_BUFFERMASK 0x0300 |
#define | USART_MF_HALFDUPLEX 0x0400 |
#define | USART_MF_BLOCKREAD 0x0800 |
#define | USART_SF_RTSOFF 0x0001 |
#define | USART_SF_CTSOFF 0x0002 |
#define | USART_SF_DTROFF 0x0004 |
#define | USART_SF_DSROFF 0x0008 |
#define | USART_SF_DCDOFF 0x0010 |
#define | USART_SF_TXDISABLED 0x0040 |
#define | USART_SF_RXDISABLED 0x0080 |
Typedefs | |
typedef _USARTDCB | USARTDCB |
Functions | |
int | UsartInit (NUTDEVICE *dev) |
Initialize the USART device. | |
int | UsartRead (NUTFILE *fp, void *buffer, int size) |
Read from device. | |
int | UsartWrite (NUTFILE *fp, CONST void *buffer, int len) |
Write a device or file. | |
int | UsartWrite_P (NUTFILE *fp, PGM_P buffer, int len) |
Write a device or file. | |
int | UsartClose (NUTFILE *fp) |
Close an USART device. | |
NUTFILE * | UsartOpen (NUTDEVICE *dev, CONST char *name, int mode, int acc) |
Open an USART device. | |
int | UsartIOCtl (NUTDEVICE *dev, int req, void *conf) |
Perform USART control functions. | |
long | UsartSize (NUTFILE *fp) |
Retrieves the number of characters in input buffer. |
|
Receiver's initial high water mark. Disables receiver handshake. |
|
Receiver's initial low water mark. Enables receiver handshake. |
|
Transmitter's initial high water mark. Starts the transmitter. |
|
Transmitter's initial low water mark. Wakes up transmitting threads. |
|
DTE output. |
|
DTE input. |
|
DTE output. |
|
DTE input. |
|
DTE input. |
|
Handshake sense mask. |
|
Handshake control mask. |
|
Software handshake. It is recommended to set a proper read timeout with software handshake. In this case a timeout may occur, if the communication peer lost our last XON character. The application may then use ioctl() to disable the receiver and do the read again. This will send out another XON. |
|
Should be used in stream, not device. |
|
Should be used in stream, not device. |
|
No buffering. |
|
Line buffered. |
|
Masks buffering mode flags. |
|
Half duplex control. |
|
Block read enabled |
|
Set if RTS line is off. |
|
Set if CTS line is off. |
|
Set if DTR line is off. |
|
Set if DSR line is off. |
|
Set if DCD line is off. |
|
Transmitter disabled. |
|
Receiver disabled. |
|
USART device low level information type. |
|
Initialize the USART device. This function is called by NutRegisterDevice(), using the _NUTDEVICE::dev_init entry. It will call the low level driver's _USARTDCB::dcb_init routine to initialize the hardware.
|
|
Read from device. This function is called by the low level input routines of the C runtime library, using the _NUTDEVICE::dev_read entry. The function may block the calling thread until at least one character has been received or a timeout occurs. It is recommended to set a proper read timeout with software handshake. In this case a timeout may occur, if the communication peer lost our last XON character. The application may then use ioctl() to disable the receiver and do the read again. This will send out another XON.
|
|
Write a device or file. This function is called by the low level output routines of the C runtime library, using the _NUTDEVICE::dev_write entry. The function may block the calling thread.
|
|
Write a device or file. Similar to UsartWrite() except that the data is located in program memory. This function is called by the low level output routines of the C runtime library, using the _NUTDEVICE::dev_write_P entry. The function may block the calling thread.
|
|
Close an USART device. This function is called by the low level close routine of the C runtime library, using the _NUTDEVICE::dev_close entry.
|
|
Open an USART device. This function is called by the low level open routine of the C runtime library, using the _NUTDEVICE::dev_open entry.
|
|
Perform USART control functions. This function is called by the ioctl() function of the C runtime library.
|
|
Retrieves the number of characters in input buffer. This function is called by the low level size routine of the C runtime library, using the _NUTDEVICE::dev_size entry.
|