• UART串口及Linux实现


    UARTUniversal Asynchronous Receiver Transmitter864SoCUART

     

    UART

    UARTFIFO


    • 5/6/7/8

    • 1/1.5/2


    • FIFO

     

    UART




    TXD

    RXD

    CTSN
    UARTUARTUART
    RTSN
    CTSN

     

    1 UART

     

    2 UART

     

    UART

    UART

     

    3 UART

     

    线1

    0

    5678LSB

    使1()()

    1/1.5/2Linux1.5

    UARTUART9600115200460800

     

    LinuxUART

    Linux UARTUART/dev/ttyS*备(ttySUARTLinuxttyserial coreserial corettytty driveruart

    • struct uart_driverstruct uart_portstruct uart_opsuart

    •  uart_register_driveruart_add_one_port 

     

    4 UART

     

    struct uart_opsUART

     

    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

    UARTplatform_driver

     

    uart_opsuart_opsuart_port

     

    UARTprobeuart_portserial core

     

    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/writeLinuxAPI

    struct termios options;
    //获取参数
    tcgetattr(fd, &options);
    //波特率
    cfsetispeed(&options, B115200);
    cfsetospeed(&options, B115200);
    //8位数据位
    options.c_cflag &= ~CSIZE;
    options.c_cflag |= CS8;
    //无校验
    options.c_cflag &= ~PARENB;
    //1位停止位
    options.c_cflag &= ~CSTOPB;
    //设置参数
    tcsetattr(fd, TCANOW, &options);
    

     

    UART

    UARTttyttyUARTUART

    UARTUARTinputinputUARTUARTUARTttyserial coreUART

    线I2CI2C线i2c_driveri2c_transferI2CSPIspi_driverSPII2C/SPI便

    UART4.14seriottyttyttyUART

    serio线UARTSerial IOseriostruct serio_busserio线struct 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/

    公众号:大鱼嵌入式

  • 相关阅读:
    MySQL之InnoDB浅析
    MySQL 锁
    httpx.HTTPStatusError: Client error ‘429 Too Many Requests‘ for url ‘
    选低代码开发的OA系统,对低效办公说“漏”
    【ZooKeeper】zookeeper源码7-FastLeaderElection网络通信机制&选票交换机制&lookForLeader执行选举
    数仓建设中,数据治理如何切入
    Retrofit项目 - Android和Java的类型安全的HTTP客户端
    死亡游戏:密室互猜硬币规则及其破解方法
    some和filter、map的区别
    基于springboot书籍推荐系统设计与实现的源码+文档
  • 原文地址:https://www.cnblogs.com/bigfish0506/p/16244860.html