UART串列埠及Linux實現

bigfish99發表於2022-05-08

UARTUniversal Asynchronous Receiver Transmitter864SoCUART

 

UART

UARTFIFO


  • 5/6/7/8

  • 1/1.5/2


  • FIFO

 

UART




TXD

RXD

CTSN
UARTUARTUART
RTSN
CTSN

 

UART串列埠及Linux實現

1 UART

 

UART串列埠及Linux實現

2 UART

 

UART

UART

 

UART串列埠及Linux實現

3 UART

 

1

0

5678LSB

使1()()

1/1.5/2Linux1.5

UARTUART9600115200460800

 

LinuxUART

Linux UARTUART/dev/ttyS*備(ttySUARTLinuxttyserial coreserial core調ttytty driveruart

  • struct uart_driverstruct uart_portstruct uart_opsuart

  •  uart_register_driveruart_add_one_port 

 

UART串列埠及Linux實現

4 UART

 

struct uart_opsUART

UART串列埠及Linux實現

 

UARTuart_ops


tx_empty
TX FIFO10
stop_tx

start_tx

stop_rx

startup
UART
shutdown
UART
set_termios
UART

 

struct uart_driverUARTstruct uart_portUARTstruct uart_ops

UART串列埠及Linux實現

 

UART

UARTplatform_driver

UART串列埠及Linux實現

 

uart_opsuart_opsuart_port

UART串列埠及Linux實現

 

UARTprobeuart_portserial core

UART串列埠及Linux實現

 

Linux

Linuxminicom, cutecom

/dev/ttyS0

stty -F /dev/ttyS0

stty -F /dev/ttyS0 speed 115200 cs8 -parenb -cstopb

115200 8 1 


cat /dev/ttyS0

echo "test data" > /dev/ttyS0

 

//open/read/write調LinuxAPI

struct termios options;//tcgetattr(fd, &options);//cfsetispeed(&options, B115200);cfsetospeed(&options, B115200);//8options.c_cflag &= ~CSIZE;options.c_cflag |= CS8;//options.c_cflag &= ~PARENB;//1options.c_cflag &= ~CSTOPB;//tcsetattr(fd, TCANOW, &options);

 

UART

UARTttyttyUART調UART

UARTUARTinputinputUARTUARTUARTttyserial core調UART

I2CI2Ci2c_driveri2c_transferI2CSPIspi_driverSPII2C/SPI便

UART4.14seriotty調ttytty調UART

serioUARTSerial IOseriostruct serio_busseriostruct serioseriostruct serio_drvierserio

drivers/input/serio/*drivers/input/touchscreen/touchit213.c

4.14serail dev bus

serdev_device_driver_register(struct serdev_device_driver *, struct module *);

使

drivers/bluetooth/hci_bcm.c

 ------ END ------

作者:bigfish99

部落格:https://www.cnblogs.com/bigfish0506/

公眾號:大魚嵌入式

相關文章