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

news2024/11/28 22:51:43

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

链接: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.coloradmin.cn/o/1586823.html

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

相关文章

【UE Niagara】光束发射模块学习

效果 步骤 1. 新建一个Niagara发射器&#xff0c;使用Empty模板&#xff0c;这里命名为“NE_Beam” 打开“NE_Beam”&#xff0c;添加条带渲染器 添加“Spawn Burst Instantaneous”模块&#xff0c;设置生成数量为100 添加一个“Beam Emitter Setup”模块 再添加一个“Spawn …

基于STM32G030F6部分芯片烧录程序后无法识别也不运行之救砖笔记

基于STM32G030F6部分芯片烧录程序后无法识别也不运行之救砖笔记 目录 问题背景思路总结 问题背景 使用STM32G030F6这颗ic作设计&#xff0c;程序中有设置L1级读保护。首次烧写全部显示成功&#xff0c;打算再次烧录时有极个别已经找不到芯片&#xff0c;其中不能再次烧入的板子…

什么是 DNS 记录?

DNS记录是存储在DNS服务器上的文本指令。它们表明与一个域名相关的IP地址&#xff0c;也可以提供其他信息。DNS记录是计算机用语&#xff0c;指域名系统&#xff08;Domain Name System&#xff0c;简称DNS&#xff09;中的一条记录&#xff0c;这条记录存储于DNS服务器中。每一…

数通学员分享丨在誉天学习数通课程怎么样

哈喽大家好&#xff0c;我是来自誉天的田同学&#xff0c;我与誉天的故事是2022年8月开始的。 2022年六月毕业之后&#xff0c;由于对自身专业的不喜欢&#xff08;学的工程&#xff09;&#xff0c;我对未来非常的迷茫&#xff0c;这个时候我接触到了誉天&#xff0c;开启了我…

稀碎从零算法笔记Day40-LeetCode:加油站

题型&#xff1a;贪心、模拟、数组 链接&#xff1a;134. 加油站 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 在一条环路上有 n 个加油站&#xff0c;其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车&#xff0c;从第…

Harmony鸿蒙南向驱动开发-PIN接口使用

功能简介 PIN即管脚控制器&#xff0c;用于统一管理各SoC的管脚资源&#xff0c;对外提供管脚复用功能&#xff1a;包括管脚推拉方式、管脚推拉强度以及管脚功能。 PIN接口定义了操作PIN管脚的通用方法集合&#xff0c;包括&#xff1a; 获取/释放管脚描述句柄&#xff1a;传…

【C++第三阶段】stackqueue容器

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 stack容器queue容器 stack容器 是什么&#xff1f;功能是什么&#xff1f;常用接口是什么&#xff1f;局限性有哪些&#xff1f;优势又有哪些&#xff1f; 栈容器&#xff0c;先进…

@Transactional失效的10种场景

Transactional失效的场景都有哪些呢&#xff1f;本章节针对Transactional的问题&#xff0c;做以下总结整理。 1、同一个类中&#xff0c;方法内部调用事务失效 2、事务方法被final、static修饰 3、当前类没有被Spring管理 4、非public修饰的方法&#xff08;存在版本差异&a…

Spring5深入浅出篇:bean的生命周期

Spring5深入浅出篇:bean的生命周期 什么是对象的⽣命周期 指的是⼀个对象创建、存活、消亡的⼀个完整过程 为什么要学习对象的⽣命周期 由Spring负责对象的创建、存活、销毁&#xff0c;了解⽣命周期&#xff0c;有利于我们使⽤好Spring为我们创建的对象 ⽣命周期的3个阶段…

知识图谱的演进与基于 OpenSPG+TuGraph 的推理实践

本文为蚂蚁集团开发工程师王少飞在TuGraph Meetup北京站的演讲&#xff0c;主要介绍了蚂蚁知识图谱平台经过多年金融领域业务沉淀的知识语义增强可编程框架SPG&#xff0c;及TuGraph作为执行引擎在图谱推理过程的作用。 作者介绍&#xff1a; 王少飞&#xff0c;蚂蚁知识图谱推…

微信小程序抓包教程

前言 笔者最近在研究如何又简单又精准的对微信小程序进行HTTP/HTTPS流量抓包&#xff0c;然后进行渗透测试。研究了几天&#xff0c;发现了一个最适合自己的方法&#xff0c;特此进行记录。 前期准备 流量工具&#xff1a;Proxifier抓包工具&#xff1a;BurpSuite电脑端微信…

选择程序员是为什么?

本章节是关于为什么会选择一名程序员的经验分享 首先&#xff0c;我为什么会选择这个方向&#xff0c;可能是因为钱多&#xff0c;学东西不就是为了赚钱嘛&#xff1f;这是一点&#xff0c;不过最让我接收这个行业的是好奇世界的新大陆&#xff0c;可以简单的说就是&#xff0c…

蓝桥杯第十届c++大学B组详解

目录 1.组队 2.年号字符 3.数列求值 4.数的分解 5.迷宫 6.特别数的和 7.完全二叉树的权值 8.等差数列 9.后缀表达式 10.灵能传输 1.组队 题目解析&#xff1a;就是在个篮球人中选择这个最大的成绩&#xff0c;每个人只能选择一次不能重复选择。选满5人之后的成绩是最…

洛谷P1115最大子段和[神奇的题目]

啊&#xff0c;好久没更新了 往期内容推荐&#xff1a; 欧几里得算法-----无聊的军官pro max版本-CSDN博客 &#xff08;并不怎么华丽的分割线&#xff09; 一&#xff0c;题目描述 给出一个长度为 n 的序列 a&#xff0c;选出其中连续且非空的一段使得这段和最大。 ## 输…

npm i -g nodemon 遇到的下载卡住及运行权限问题解决记录

一、下载nodemon原因 nodemon作用&#xff1a;用node环境运行js文件时可以实时刷新运行出结果 (即修改js代码后不需再手动重新运行js文件) 二、下载卡住 reify:semver:timing reifyNode:node_modules/nodemon Completed 卡住位置&#xff1a;reify:semver: timing reifyNode…

C语言—每日选择题—Day69

第一题 1、以下程序的输出结果是&#xff08; &#xff09; int main() {char arr[2][4];strcpy (arr[0],"you");strcpy (arr[1],"me");arr[0][3]&;printf("%s \n",arr);return 0; } A: you&me B: you C: me D: err 答案及解析 A 这里重…

多项式拟合:最小二乘、拉格朗日插值、牛顿插值

多项式拟合是一种常用的数学和机器学习方法&#xff0c;它使用一个多项式函数来拟合一组数据点。多项式拟合的目的是在众多的样本点中找出满足样本点分布的多项式。它基于多项式函数的性质&#xff0c;可以表示为 yw0w1xw2x2…wnxn 的形式&#xff0c;其中 y 是因变量&#xff…

学习大数据,所需要的java(Maven)基础(1)

文章目录 使用Maven的优势第三方jar包添加第三方jar包获取jar包之间的依赖关系jar包之间的冲突处理将项目拆分成多个工程模块 实现项目的分布式部署Maven是什么自动化构建工具构建的概念构建环节自动化构建 Maven如何使用安装Maven核心程序maven联网问题Maven中的settings配置在…

【vue】v-bind动态属性绑定

v-bind 简写:value <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><styl…

4月跨境选品攻略:四类爆品机会,抢占市场流量!

我们来聊聊4月份海外电商的选品&#xff0c;4月份开始进入年春季&#xff0c;在西方人们开始更多的户外活动&#xff0c;阳光更加明媚&#xff0c;所以哪些产品在这个季节很好销售呢&#xff1f; 第一类&#xff1a;墨镜 谷歌搜索过去五年的搜索数据显示&#xff0c;每年4月份…