当前位置: 首页 > news >正文

RK3568-UART通信

RK3568-UART通信

1. 功能特点

RK3568有10个UART控制器,对应设备树里的uart0-uart9。 Rockchip UART (Universal Asynchronous Receiver/Transmitter) 基于16550A串口标准,支持以下
功能:

  • 包含2组64字节的 FIFO,用于接收和传输
  • 支持流控
  • 支持速率 115.2Kbps, 460.8Kbps, 921.6Kbps, 1.5Mbps, 3Mbps, 4Mbps
  • 支持5、6、7、8 bits数据位。
  • 支持1、1.5、2 bits停止位。
  • 支持奇校验和偶校验。
  • 支持基于中断/DMA 模式

在Linux kernel 4.4和Linux kernel 4.19中,使用8250串口通用驱动,以下为主要驱动文件:

drivers/tty/serial/8250/8250_core.c # 8250串口驱动核心
drivers/tty/serial/8250/8250_dw.c # Synopsis DesignWare 8250串口驱动
drivers/tty/serial/8250/8250_dma.c # 8250串口DMA驱动
drivers/tty/serial/8250/8250_port.c # 8250串口端口操作
drivers/tty/serial/8250/8250_early.c # 8250串口early console驱动

2. 使用方式

厂家已经适配好了UART控制器的驱动,只要配置好设备树,用户空间就可以使用tty的接口进行读写操作,设备节点为/dev/ttyS0-9。

UART控制器的配置在rk3568.dtsi中,默认是关闭的。

uart3: serial@fe670000 {compatible = "rockchip,rk3568-uart", "snps,dw-apb-uart";reg = <0x0 0xfe670000 0x0 0x100>;interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;clock-names = "baudclk", "apb_pclk";reg-shift = <2>;reg-io-width = <4>;dmas = <&dmac0 6>, <&dmac0 7>;pinctrl-names = "default";pinctrl-0 = <&uart3m0_xfer>;status = "disabled";};

引脚的配置在rk3568-pinctrl.dtsi中。

uart3 {/omit-if-no-ref/uart3m0_xfer: uart3m0-xfer {rockchip,pins =/* uart3_rxm0 */<1 RK_PA0 2 &pcfg_pull_up>,/* uart3_txm0 */<1 RK_PA1 2 &pcfg_pull_up>;};/omit-if-no-ref/uart3m0_ctsn: uart3m0-ctsn {rockchip,pins =/* uart3m0_ctsn */<1 RK_PA3 2 &pcfg_pull_none>;};/omit-if-no-ref/uart3m0_rtsn: uart3m0-rtsn {rockchip,pins =/* uart3m0_rtsn */<1 RK_PA2 2 &pcfg_pull_none>;};/omit-if-no-ref/uart3m1_xfer: uart3m1-xfer {rockchip,pins =/* uart3_rxm1 */<3 RK_PC0 4 &pcfg_pull_up>,/* uart3_txm1 */<3 RK_PB7 4 &pcfg_pull_up>;};};

使用的时候在rk3568-evb1-ddr4-v10.dtsi中开启uart,配好引脚就可以了。

&uart3 {status = "okay";pinctrl-names = "default";pinctrl-0 = <&uart3m1_xfer>;
};
http://www.lryc.cn/news/159955.html

相关文章:

  • 武警三维数字沙盘电子沙盘虚拟现实模拟推演大数据人工智能开发教程第15课
  • 【Linux从入门到精通】通信 | 共享内存(System V)
  • ubuntu 扩展内存挂载
  • 聚观早报|小米14渲染图曝光;蚂蚁金融大模型正式发布
  • musl libc 动态加载:默认链接脚本
  • 快速排序(递归和非递归两种方法实现)
  • ApiPost7使用介绍 | HTTP Websocket
  • Linux常用命令——convertquota命令
  • Linux 进程基础概念-进程状态、进程构成、进程控制
  • Unity Animation、Animator 的使用
  • Flink--2、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)
  • 执行Django 的迁移命令报错[1193, Unknown system variable default_storage_engine]
  • Himall商城-公共方法
  • 海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案
  • 使用Spring Boot + MyBatis实现多数据源
  • C++中的无限循环
  • Spark2x原理剖析(二)
  • tomcat安装、部署JSPGOU项目、Tomcat多实例
  • 257. 二叉树的所有路径
  • windows10使用wheel安装tensorflow2.13.0/2.10.0
  • sql-gen:点击生成SQL、RO、VO的工具
  • pytorch从0开始安装
  • Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)
  • 什么是Linux的Overcommit和OOM
  • 解决防火墙导致虚拟机不能ping通宿主机的问题
  • 数据结构:线性表(栈的实现)
  • python如何将一个dataframe快速写入clickhouse
  • Tiny Player Mac:小而美,音乐播放的极致体验
  • 2022年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • C语言学习:7、break与continue的用法