6.12物联网RK3399项目开发实录-驱动开发之UART 串口的使用(wulianjishu666)

嵌入式实战开发例程【珍贵收藏,开发必备】:

链接:https://pan.baidu.com/s/1tkDBNH9R3iAaHOG1Zj9q1Q?pwd=t41u
======================================================================

UART 使用

简介

AIO-3399J 支持 SPI 桥接/扩展 4 个增强功能串口(UART)的功能,分别为 UART1,UART2,RS232,RS485。每个 UART 都拥有 256 字节的 FIFO 缓冲区,用于数据接收和发送。其中:

  • UART1,UART2 为 TTL 电平接口,RS232 为 RS232 电平接口,RS485 为 RS485 电平接口

  • 每个子通道 UART 的波特率、字长、校验格式可以独立设置,最高可以提供 2Mbps 的通信速率

  • 每个子通道具备收/发独立的 256 BYTE FIFO,FIFO 的中断可按用户需求进行编程触发点

  • 具备子串口接收 FIFO 超时中断

  • 支持起始位错误检测

AIO-3399J 开发板的串口接口图如下:

_images/uart_interface.jpg

DTS 配置

文件 kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-port.dtsi 有 SPI 转 UART 相关节点的定义:

&spi1 {spi_wk2xxx: spi_wk2xxx@00{status = "disabled";compatible = "firefly,spi-wk2xxx";reg = <0x00>;spi-max-frequency = <10000000>;power-gpio = <&gpio2 4 GPIO_ACTIVE_HIGH>;reset-gpio = <&gpio1 17 3 GPIO_ACTIVE_HIGH>;irq-gpio = <&gpio1 2 IRQ_TYPE_EDGE_FALLING>;cs-gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;/* rk3399 driver support SPI_CPOL | SPI_CPHA | 			SPI_CS_HIGH *///spi-cpha;     /* SPI mode: CPHA=1 *///spi-cpol;     /* SPI mode: CPOL=1 *///spi-cs-high;};
}

可以看到,在 kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-aio.dts 文件中使能该节点即可使用。另外,由于我们板子使用的 SPI 转 UART 串口模块挂到 SPI1 上,所以还要使能 SPI1 节点。如下:

&spi1 {status = "okay";
};&spi_wk2xxx {status = "okay";
};

注意:由于 spi1_rxd 和 spi1_txd 两个脚可复用为 uart4_rx 和 uart4_tx,所以要留意关闭掉 uart4 的使用,如下:

&uart4 {status = "disabled";
};

调试方法

配置好串口后,硬件接口对应软件上的节点分别为:

RS485:/dev/ttysWK0
RS232:/dev/ttysWK1
UART2:/dev/ttysWK2
UART1:/dev/ttysWK3

用户可以根据不同的接口使用不同的主机的 USB 转串口适配器向开发板的串口收发数据,例如 RS485 的调试步骤如下:

(1) 连接硬件

将开发板RS485 的A、B、GND 引脚分别和主机串口适配器(USB 转 485 转串口模块)的 A、B、GND 引脚相连。

(2) 打开主机的串口终端

在终端打开 kermit,并设置波特率:

$ sudo kermit
C-Kermit> set line /dev/ttyUSB0
C-Kermit> set speed 9600
C-Kermit> set flow-control none
C-Kermit> connect
  • /dev/ttyUSB0 为 USB 转串口适配器的设备文件

(3) 发送数据

RS485 的设备文件为 /dev/ttysWK0。在设备上运行下列命令:

echo firefly RS485 test... > /dev/ttysWK0

主机中的串口终端即可接收到字符串 “firefly RS485 test…”

(4) 接收数据

首先在设备上运行下列命令:

cat /dev/ttysWK0

然后在主机的串口终端输入字符串 “Firefly RS485 test…”,设备端即可见到相同的字符串。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/808557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有人短期获利丰厚,MOEW币这破天的富贵你接住了吗?

事实证明&#xff0c;钱是大风刮来的。前几天一哥们玩meme币&#xff0c;用1.3万美元买了MOEW&#xff0c;结果赚到了200万美元&#xff0c;利润高达15700%&#xff01; 根据Lookonchain的分析&#xff0c;这个高手在MOEW刚上线的时候&#xff0c;就迅速买进了49990万枚MOEW&am…

如何在群晖本地搭建在线PS工具Potopea并实现无公网IP远程编辑图片

文章目录 1. 部署Photopea2. 运行Photopea3. 群晖安装Cpolar4. 配置公网地址5. 公网访问测试6. 固定公网地址 本文主要介绍如何在群晖NAS使用Docker部署Potopea在线图片编辑工具&#xff0c;并结合cpolar内网穿透实现公网环境可以远程访问本地部署的Potopea. Photopea是一款强大…

[通俗易懂]《动手学强化学习》学习笔记2-第2、3、4章

文章目录 前言小总结&#xff08;前文回顾&#xff09;第二章 多臂老虎机2.2.2形式化描述 第三章 马尔可夫决策过程3.6 占用度量 代码3.6 占用度量 定理2 第四章 动态规划算法4.3.3 策略迭代算法 代码 总结 前言 参考&#xff1a; 《动手学强化学习》作者&#xff1a;张伟楠&a…

(30)动态内存管理

#include<errno.h> #include<string.h> #include<stdlib.h> #include<stdio.h> 开辟十个空间 int main() { int* p (int*)calloc(10, sizeof(int)); if (p NULL) { printf("%s\n", strerror(errno)); return …

爬取豆瓣(线程、Session)优化版本

爬取豆瓣&#xff08;线程、Session&#xff09;优化版本 该文章只是为了精进基础&#xff0c;对Session、threading、网站请求解析的理解。 此版本没有爬取详情页。还在学习阶段的读者可以尝试一下。 适用于基础刚开始学习爬虫的&#xff01; 1.改进点&#xff1a; 将普通的r…

jdk8升级到jdk17

jdk8新特性&#xff1a; 1、lambda表达式 2、引入了stream api 3、函数式接口 4、方法引用 &#xff1a;&#xff1a; 5、hashmap实现的增强 6、Optional类 7、对时间、日期的优化&#xff0c;新增了LocalDate、LocalTime、LocalDateTime&#xff0c;打印输入时比date友好。 5、…

大盗阿福1301

1301&#xff1a;大盗阿福 时间限制: 1000 ms 内存限制: 65536 KB 提交数:13109 通过数: 6123 【题目描述】 阿福是一名经验丰富的大盗。趁着月黑风高&#xff0c;阿福打算今晚洗劫一条街上的店铺。 这条街上一共有 N&#xfffd; 家店铺&#xff0c;每家店中都有一…

利用alibaba.item_get API接口,跨境电商如何快速获取商品详情?

利用alibaba.item_get API接口&#xff0c;跨境电商可以快速获取商品详情&#xff0c;为业务的开展提供有力支持。alibaba.item_get API接口是阿里巴巴开放平台提供的一项服务&#xff0c;它允许开发者通过调用API接口&#xff0c;获取阿里巴巴平台上商品的详细信息。以下是如何…

Android8.1 代码编译报错

注&#xff1a; 本文只是博主学习记录分享&#xff0c;仅供参考。如有错误肯定是博主理解有问题&#xff0c;谢谢&#xff01; 1. Android8.1 编译报 java 环境错误 1.1. 具休描述 Android8.1 代码编译报 Failed to run java: exce: "java": excutable file not fo…

【全网独家】oceanbase容器重启时报obshell failed错误,无法正常启动的问题处理

正常运行的oceanbase容器&#xff0c;重新启动该容器却启动不了&#xff0c;重启服务器也无法恢复&#xff0c;报obshell failed错误&#xff0c;无法正常启动&#xff0c;本文记录了问题处理过程。 一、问题现象 1、正常运行的oceanbase容器&#xff0c;重启却启动不了 2、运…

使用Charles断点修改接口返回数据

问题&#xff1a;数量/金额原来接口是用一个字段返回&#xff0c;由于业务需要换行展示&#xff0c;后端便拆分成了两个字段&#xff0c;前端则需要用新拆分的字段去取值&#xff0c;导致目前发现有个字段的金额也取成了件数&#xff08;红框部分&#xff09;&#xff1b;需求&…

一种springboot请求参数校验的实现方案

一、前提引入 很多时候,springboot提供的Restful-api需要根据业务需要进行参数校验,相应的,基于各位码友的习惯,各有各的实现方式,可谓是八仙过海各显神通。 二、常见方案 2.1 一种最原始的方法 通过if语句,对特定参数进行校验 if(null == name){return "name …

为无网环境安装golang

yum install --downloadonly --downloaddir/root/download golang #打包/root/download下rpm 文件到无网机器上 #解压后进入目录基于解压rpm文件安装rpm -ivh *.rpm在没有外网连接的 CentOS 7 服务器上安装应用程序可能需要一些额外的步骤&#xff0c;因为你不能直接使用 yum 或…

Java-变量和常量

变量是什么&#xff1a;就是可以变化的量&#xff01;Java是一种强类型语言&#xff0c;每个变量必须声明声明其类型Java变量是程序中最基础的存储单元&#xff0c;其要素包括变量名&#xff0c;变量类型和作用域 type varName [value][{,varName[value]}]; //数据类型 变量…

五种主流数据库:连接查询

关系型数据库通常将不同的实体对象和它们之间的联系存储在多个表中&#xff0c;例如电商系统中使用的产品表、用户表、订单表以及订单明细表等。当我们查看某个订单信息时&#xff0c;需要同时从这几个表中查找关于该订单的相关数据。 本文比较五种主流数据库实现的多表连接查…

Python编程技巧大全

简介 Python是一种高级编程语言&#xff0c;以其简洁明了的语法和强大的功能库而广受欢迎。无论是数据科学、机器学习还是Web开发&#xff0c;Python都有着广泛的应用。在这篇文章中&#xff0c;我们将分享一些Python编程的常见技巧&#xff0c;帮助你提升编程效率&#xff0c…

第3章 数据链路层(3)

3.6 局域网 采用广播信道 3.6.1 局域网的基本概念和体系结构 特点: ①覆盖范围小②专门通信介质【双绞线,同轴电缆】③通信延时短,误码率低,可靠性高。④通信质量好。因此采用无确认,无连接的服务。⑤关系平等,共享信道⑥分布式控制,广播信道,广播,组播 决定因素: ①拓扑结构:…

深入理解HTTP/HTTPS协议

HTTP协议像日常生活中简单的口头或书面交流&#xff0c;而HTTPS则类似于涉及敏感信息交换时采取的加密、身份验证等安全措施&#xff0c;确保通信的安全性和隐私性。该篇文章从以下几个方面展开&#xff1a; 目录 HTTP协议 请求与响应 请求&#xff1a; 响应&#xff1a; …

MuJoCo 入门教程(八)Model仓库

系列文章目录 前言 一、MuJoCo 动物园 一个物理仿真器的好坏取决于它所仿真的模型&#xff0c;而在像 MuJoCo 这样功能强大、建模选项众多的仿真器中&#xff0c;很容易创建出行为与预期不符的 "坏 "模型。MuJoCo Menagerie 的目标是为社区提供一个设计精良、开箱即用…

【学习笔记】R语言入门与数据分析1

数据分析 数据分析的过程&#xff1a; 数据采集 数据存储 数据分析 数据挖掘 数据可视化 进行决策 数据挖掘 数据量大 复杂度高&#xff0c;容忍一定的误差限 追求相关性而非因果性 数据可视化 直观明了 R语言介绍 R是免费的&#xff08;开源软件、扩展性好&#xff09;…