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

树莓派4B学习笔记——IO通信篇(UART)

文章目录UART简介树莓派使用UART与串口屏通信串口屏简介硬件连接配置串口接口树莓派打开UART接口树莓派安装串口调试助手编程实现wiringSerial.h Serial简介C语言实现树莓派UART与串口屏通信总结树莓派4B入门学习笔记汇总UART简介UART是一种通用串行数据总线用于异步通信。该总线双向通信可以实现全双工传输和接收。在嵌入式设计中UART用来主机与辅助设备通信如汽车音响与外接AP之间的通信与PC机通信包括与监控调试器和其它器件多用于上位机与下位机的通信。在UART通信中两个UART直接相互通信。 发送UART将控制设备如CPU的并行数据转换为串行形式以串行方式将其发送到接收UART。只需要两条线即可在两个UART之间传输数据数据从发送UART的Tx引脚流到接收UART的Rx引脚波特率每秒传输二进制位数。例1分钟传输数据57600BYTE帧格式10位求波特率二进位57600*10576000/60 9600bit/sUART属于异步通讯这意味着没有时钟信号取而代之的是在数据包中添加起始和停止位。这些位定义了数据包的开始和结束通过识别起始位和结束位可以解析出数据。帧格式1位起始位(5-8)位数据1位奇偶校验位(1~2)位停止位 10位奇校验数据位上的1的个数校验位上1的个数和位奇数。数据包的传输示意图上图来自此文。①串口是什么串口就是一种通信方式TX和RX②串口通信的特点异步 全双工 串行③串口通信数据帧起始位 数据位(8) 【奇偶校验】 停止位有关串口的详细介绍参考此文。树莓派使用UART与串口屏通信今天主要借助陶晶驰串口屏配合树莓派4B实现一个通信效果。串口屏简介串口屏内置一块STM32构建了相对独立的系统有配套的软件能够进行图形化编程极大地降低了界面设计的时间和难度而且还有各种控件以便于灵活实现更多功能可以通过串口完成对各类控件的操作有很强的实用性。有关陶晶驰串口屏的具体使用可以参考官网的资料。硬件连接将串口屏的TX、RX与树莓派的UART硬件接口连接注意交叉。(没有屏幕的同学也可以使用USB转TTL连接树莓派然后安装陶晶驰的开发环境在线仿真也可。)树莓派串口屏5VVCC板载编码8脚TXRX板载编码10脚RXTXGNDGND配置串口接口树莓派一共有两个串口如下图所示来自B站树小悉这里还需要注意树莓派的串口分为了主串口和辅助串口硬件串口标识符为ttyAMA0主串口标识符为serial0辅助串口的标识符为serial1。本此介绍使用的是硬件串口和主串口利用引脚通信。树莓派打开UART接口跟之前类似打开Serial Port关闭Serail Console点击OK会提示重启。点击Yes等待重启。重启完毕后打开命令终端输入ls /dev -al回车。若重启失败先把串口屏拔下来重启完毕后再接上去下拉找到串口此时发现主串口serial0指向了mini串口辅助串口serial1指向了硬件串口ttyAM0;这与我们所需要将主串口指向硬件串口所以需要进一步修改配置。利用nano编辑器打开并修改config.txt具体步骤如下1在终端输入sudo nano /boot/config.txt回车弹出下图画面利用滚轮来到文件末尾。2添加如下代码dtoverlaypi3-miniuart-btforce_turbo1按CtrlS保存CtrlX返回。然后再次重启树莓派输入sudo reboot 等待重启完成再次打开终端输入ls /dev -al回车此时上滑找到串口发现已经修改为主串口指向硬件串口了。树莓派安装串口调试助手为了验证树莓派串口有没有真的工作需要安装一个minicom的串口助手来验证一下。安装步骤打开终端输入sudo apt-get install minicom回车等待下载和安装安装过程中有提示直接输入Y回车。安装完成后需要先将USB转TTL连接到树莓派然后打开电脑的串口调试助手连接到CH340波特率9600八位数据一位停止。同时打开树莓派的串口助手在终端输入命令minicom -D /dev/ttyAMA0 -b 9600回车即可进入。在电脑端输入abcd点击发送可以发现在树莓派上有了显示表示串口开启OK。此时我们需要退出minicom ,退出步骤首先CtrlA然后按Z最后按X选是即可退出。编程实现验证了串口功能后我们开始利用串口编程在编程之前根据前面的经验我还是需要先了解一下WiringPi的串口库给我们提供了哪些可以调用的函数。之前一直没提这个库是怎么查询的在这里说明一下安装后wiringpi的库后我们可以载可以在/usr/linclude找到wiringPi相关的头文件如下图所示wiringPi.h基本IO驱动和常用配置定义wiringPiI2C.h I2C驱动的头文件wiringPiSPI.h SPI驱动的头文件;wiringSerial.h Serial驱动的头文件;wiringSerial.h Serial简介双击wiringSerial.h Serial.h我们可以看见有以下几个函数具体解释转载与此文。extern int serialOpen (const char *device, const int baud) ;//打开串口输入设备描述符和串口波特率返回串口的设备IDextern void serialClose (const int fd) ;//关闭串口extern void serialFlush (const int fd) ;//清空缓存区extern void serialPutchar (const int fd, const unsigned char c) ;//输出一个字符extern void serialPuts (const int fd, const char *s) ;//输出字符串extern void serialPrintf (const int fd, const char *message, …) ;//格式化输出extern int serialDataAvail (const int fd) ;//返回设备缓存区接收到的数据个数extern int serialGetchar (const int fd) ;//从设备ID读取一个字符C语言实现此处转载的此文。打开Geany输入以下代码// An highlighted block#includewiringPi.h#includewiringSerial.h#includestdio.h#includestring.h#includetime.hvoiddelay_ms(int ms);intmain(){int filedevid;int recbytenum;int i;char buf[1024];memset(buf,0,1024);wiringPiSetup();if((filedevidserialOpen(/dev/ttyAMA0,115200))0)//打开串口{printf(/dev/ttyAMA0 Open Faild\r\n);return-1;}else{printf(/dev/ttyAMA0 Open with 115200, success\r\n);while(1){recbytenumserialDataAvail(filedevid);//记录接受到的数据个数if(recbytenum1)//如果接收到{i0;while(recbytenum--){buf[i]serialGetchar(filedevid);//读出缓存区的数据}printf(Rpi uart recv: %s\r\n,buf);输出在终端serialPrintf(filedevid,Rpi uart send: %s\r\n,buf);//通过串口打印到上位机啊。memset(buf,0,1024);}}}}上述代码效果如下树莓派UART与串口屏通信C语言代码如下//树莓派通过串口屏输出两个通道正弦波形。#includewiringPi.h#includewiringSerial.h#includestdio.h#includestring.h#includetime.h#define uchar unsigned char #define uint unsigned int int filedevid;int second,minute,hour,day,month,week,year,zwc,fwc,wdc,bal,txt,wendu;char endbuf[]{0xff,0xff,0xff};char buf[64];//////唤醒屏幕准备通信voidUART_Send_start(void){delay(10);serialPuts(filedevid,(char*)endbuf);//发送结束标志0xff,0xff,0xff包尾delay(10);}intmain(){uint ch0,ch1;signed int i,j;second50;minute48;hour12;day15;month7;week2;year16;bal0;txt0;wendu0;wiringPiSetup();if((filedevidserialOpen(/dev/ttyAMA0,9600))0)//打开串口{printf(/dev/ttyAMA0 Open Faild\r\n);return-1;}else{printf(/dev/ttyAMA0 Open with 9600, success\r\n);UART_Send_start();//初始化串口屏serialPuts(filedevid,page 0);//切换到初始页面serialPuts(filedevid,(char*)endbuf);//发送结束标志0xff,0xff,0xff包尾delay(1000);//等待屏幕启动while(1){j32;for(i0;isizeof(zhengxianbo);i)//正弦波显示{ch0zhengxianbo[i]/340;ch1zhengxianbo[j]/340;if(jsizeof(zhengxianbo))j0;sprintf(buf,add 1,0,%d,ch0);//将波形数据打包serialPuts(filedevid,(char*)buf);serialPuts(filedevid,(char*)endbuf);//发送结束标志0xff,0xff,0xff包尾sprintf(buf,add 1,1,%d,ch1);//将波形数据打包serialPuts(filedevid,(char*)buf);serialPuts(filedevid,(char*)endbuf);//发送结束标志0xff,0xff,0xff包尾}}}}//此处展示的代码不全有需要的点赞收藏私信笔者免费获取。效果如下总结有关树莓派串口的记录就到这里到此笔者关于树莓派的基础部分笔记也就结束了后面会根据情况更新进阶版的前面有关内容如果存在不妥之处欢迎批评指正此系列到此基本画上了句号。如果觉得对你有帮助记得点赞收藏加关注。树莓派4B入门学习笔记汇总树莓派4B学习笔记——系统烧录及初次开机树莓派4B学习笔记——点亮你的LED树莓派4B学习笔记——IO输入检测树莓派4B学习笔记——IO通信篇I2C树莓派4B学习笔记——IO通信篇SPI树莓派4B学习笔记——IO通信篇1-Wire树莓派4B学习笔记——IO通信篇UART

相关文章:

树莓派4B学习笔记——IO通信篇(UART)

文章目录UART简介树莓派使用UART与串口屏通信串口屏简介硬件连接配置串口接口树莓派打开UART接口树莓派安装串口调试助手编程实现wiringSerial.h Serial简介C语言实现树莓派UART与串口屏通信总结树莓派4B入门学习笔记汇总UART简介 UART是一种通用串行数据总线,用于…...

树莓派4B学习笔记——IO通信篇(1-Wire)

文章目录单总线协议简介树莓派4BDHT11(1-Wire协议)DHT11简介接口定义数据格式通信流程硬件连接开启树莓派1-Wire接口编程实现利用单总线与DS18B20通信获取温度总结树莓派4B入门学习笔记汇总单总线协议简介 1-wire 单总线是Maxim 全资子公司Dallas 的一项…...

树莓派4B学习笔记——IO通信篇(SPI)

文章目录SPI协议简介树莓派4B1.3寸OLED(SPI协议)1.3寸OLED简介接线图开启树莓派SPI接口wiringPiSPI库简介C语言实现(汉字、字符、数字、图片显示)Python实现总结树莓派4B入门学习笔记汇总SPI协议简介 SPI(Serial Peripheral inte…...

FastAPI单元测试实战:别等上线被喷才后悔,TestClient用对了真香!找

正文 异步/等待解决了什么问题? 在传统同步I/O操作中(如文件读取或Web API调用),调用线程会被阻塞直到操作完成。这在UI应用中会导致界面冻结,在服务器应用中则造成线程资源的浪费。async/await通过非阻塞的异步操作解…...

gopher-os社区贡献指南:从代码提交到功能开发的完整参与流程

gopher-os社区贡献指南:从代码提交到功能开发的完整参与流程 【免费下载链接】gopher-os A proof of concept OS kernel written in Go 项目地址: https://gitcode.com/gh_mirrors/go/gopher-os gopher-os是一个用Go语言编写的操作系统内核概念验证项目&…...

JavaScript中骨架屏Skeleton在异步数据加载中应用

骨架屏的核心作用是提升用户感知性能——用模拟真实内容布局的视觉占位符替代空白等待,降低加载焦虑;它比loading图标更能建立界面认知,需通过请求前插入、请求后替换实现,并注重结构准确、动画克制与切换干净。骨架屏&#xff08…...

如何快速安装Hollow Knight模组:Scarab模组管理器的完整指南

如何快速安装Hollow Knight模组:Scarab模组管理器的完整指南 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 厌倦了手动下载和安装Hollow Knight模组的繁琐过程&am…...

MapAnything损失函数深度剖析:如何设计多任务学习框架

MapAnything损失函数深度剖析:如何设计多任务学习框架 【免费下载链接】map-anything MapAnything: Universal Feed-Forward Metric 3D Reconstruction 项目地址: https://gitcode.com/gh_mirrors/map/map-anything MapAnything作为一款先进的通用前馈度量3D…...

YOLOv12部署实战:ONNX、TensorRT、OpenVINO三大引擎对比

YOLOv12部署实战:ONNX、TensorRT、OpenVINO三大引擎对比 【免费下载链接】yolov12 [NeurIPS 2025] YOLOv12: Attention-Centric Real-Time Object Detectors 项目地址: https://gitcode.com/gh_mirrors/yo/yolov12 YOLOv12作为NeurIPS 2025最新推出的注意力中…...

英伟达 Blackwell Ultra 正式量产:20 PFLOPS 单机柜算力

前言4月7日,英伟达正式宣布 Blackwell Ultra(GB300)量产出货。这条消息在技术圈炸开的速度,比很多人预期的快。简单说数字:单机柜 FP8 算力 20 PFLOPS,比 H100 提升约 8 倍,能效比提升 5 倍。这…...

Amber与Kemal框架深度对比:为什么选择Amber开发企业级应用

Amber与Kemal框架深度对比:为什么选择Amber开发企业级应用 【免费下载链接】amber A Crystal web framework that makes building applications fast, simple, and enjoyable. Get started with quick prototyping, less bugs, and blazing fast performance. 项目…...

5分钟完成开源工具FanControl本地化界面设置:效率提升指南

5分钟完成开源工具FanControl本地化界面设置:效率提升指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendin…...

如何使用R语言制作词云

词云是一种常见的文本数据可视化的方法,词云分析的工作有多种,其中使用R语言中的wordcloud包中的wordcloud2函数可以很方便地制作词云。 关于wordcold2函数的用法不再赘述,查以使用help(wordcloud2)查看有关帮助,其中的参数是不难…...

Tsung动态变量高级用法:从数据提取到循环测试的完整教程

Tsung动态变量高级用法:从数据提取到循环测试的完整教程 【免费下载链接】tsung Tsung is a high-performance benchmark framework for various protocols including HTTP, XMPP, LDAP, etc. 项目地址: https://gitcode.com/gh_mirrors/ts/tsung Tsung是一款…...

Papa Parse CSV解析完全指南:从问题诊断到性能优化的4个实战方案

Papa Parse CSV解析完全指南:从问题诊断到性能优化的4个实战方案 【免费下载链接】PapaParse Fast and powerful CSV (delimited text) parser that gracefully handles large files and malformed input 项目地址: https://gitcode.com/gh_mirrors/pa/PapaParse …...

CV算法工程师成长指南:10个必备技能助你快速入门计算机视觉

CV算法工程师成长指南:10个必备技能助你快速入门计算机视觉 【免费下载链接】cv_note 记录cv算法工程师的成长之路,分享计算机视觉和模型压缩部署技术栈笔记。https://harleyszhang.github.io/cv_note/ 项目地址: https://gitcode.com/gh_mirrors/cv/c…...

Outlook一直卡在“正在加载配置文件”怎么办?一篇文章教你快速修复

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...

如何快速掌握gh_mirrors/sc/screencasts中的D3.js数据可视化

如何快速掌握gh_mirrors/sc/screencasts中的D3.js数据可视化 【免费下载链接】screencasts Code that goes along with my screencasts. 项目地址: https://gitcode.com/gh_mirrors/sc/screencasts gh_mirrors/sc/screencasts是一个包含丰富D3.js教程和实例代码的项目&a…...

Windows本地开发环境连接云端RWKV7-1.5B-G1A模型服务指南

Windows本地开发环境连接云端RWKV7-1.5B-G1A模型服务指南 1. 前言:为什么需要本地连接云端模型 对于Windows开发者来说,直接在本地运行大模型往往面临硬件资源不足的问题。RWKV7-1.5B-G1A作为一款性能优异的中等规模语言模型,在云端GPU服务…...

终极指南:如何用虎符台轻松管理全面战争MOD,告别游戏崩溃烦恼

终极指南:如何用虎符台轻松管理全面战争MOD,告别游戏崩溃烦恼 【免费下载链接】legion-seal 虎符台/Legion Seal,全面战争游戏MOD管理器,技术栈:Tauri 2 Vue TailwindCSS 项目地址: https://gitcode.com/zeyl/legi…...

Inspektor Gadget开发者指南:从零构建你的第一个eBPF监控工具

Inspektor Gadget开发者指南:从零构建你的第一个eBPF监控工具 【免费下载链接】inspektor-gadget Inspektor Gadget is a set of tools and framework for data collection and system inspection on Kubernetes clusters and Linux hosts using eBPF 项目地址: h…...

YOLOE官版镜像快速部署指南:5分钟搞定开放词汇目标检测环境

YOLOE官版镜像快速部署指南:5分钟搞定开放词汇目标检测环境 1. 引言:为什么选择YOLOE官版镜像 在计算机视觉领域,目标检测技术已经发展得相当成熟。然而,传统模型如YOLOv5/v8存在一个明显局限——它们只能识别训练时见过的固定类…...

集成AI 的 Redis 客户端 Rudist发布新版了诒

Qt是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本笔记将重点介绍QSpinBox数值微调组件的常用方法及灵活应用。…...

模型和算法篇(二)监督学习分类问题

分类问题算法...

08_Doris 全文搜索进阶:BM25 算法与 SEARCH 函数详解

08_Doris 全文搜索进阶:BM25 算法与 SEARCH 函数详解 关键字: Apache Doris、BM25算法、全文检索、SEARCH函数、倒排索引、自定义分词器、拼音检索、中文分词、相关性评分、score()函数 标签: Apache Doris 全文搜索 BM25 倒排索引 中文分词…...

无线水位远程监测系统简介

无线水位远程监测系统是一种利用无线通信技术实现水位数据实时采集、传输和监控的解决方案,广泛应用于河流、水库、水塔、地下水等场景。一、国科WD300无线水位远程监测系统概述WD300系列无线水位远程监测系统,是用来测量水电站大坝、水库、前池、调压井…...

在科技革新与政策红利的双重驱动下,低空经济正成为全球城市发展的新引擎。随着城市空中交通(UAM)场景的快速落地,气象预测技术作为核心支撑,其重要性日益凸显。

一、低空经济的气象挑战与技术突破低空经济依托 1000 米以下空域构建立体交通网络,涵盖物流配送、应急救援、城市通勤等多元场景。然而,该空域受边界层湍流、强对流、风切变等复杂气象条件影响显著,对气象服务的时空分辨率和响应速度提出严苛…...

如何3步快速检测微信单向好友:免费开源工具完整教程

如何3步快速检测微信单向好友:免费开源工具完整教程 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

游戏音频解密全流程:acbDecrypter高效处理指南

游戏音频解密全流程:acbDecrypter高效处理指南 【免费下载链接】acbDecrypter 项目地址: https://gitcode.com/gh_mirrors/ac/acbDecrypter 在游戏开发与音频 mod 创作中,如何突破加密音频格式的限制,将 ACB、HCA、ADX 等专用格式转换…...

运维基础入门到精通,收藏这篇就够了

运维基础入门到精通,收藏这篇就够了 运维基础 一、运维概述 1、运维岗位的收入情况   2、运维的职位定义 什么是运维? 在技术人员之间,一致对运维有一个开玩笑的认知:运维就是修电脑的、装网线的、背锅的…...