Jetsonnano B01 笔记4:UART 通信配置及编程

news2024/11/25 12:52:01

今日继续我的Jetsonnano学习之路,今日学习使用Jetson硬件驱动之UART串口通信:

 

目录

简议串口通信:

硬件连接:

串口配置:

安装串口函数库:

设置权限:

 Python代码配置:

下载测试:


简议串口通信:

对于串口通信的基础知识这里不多讲,就简议一下,具体了解可以自行百度学习。

  嵌入式系统、微控制器和计算机大多使用 UART 作为设备到设备硬件通信协议的一种
形式。在可用的通信协议中,UART仅使用两条线作为其发送端和接收端。
尽管是一种广泛使用的硬件通信协议方法,但它并没有一直得到充分优化。在微控制器
内部使用 UART 模块时,通常会忽略帧协议的正确实现。
根据定义,UART是一种硬件通信协议,它使用可配置速度的异步串行通信。异步意味
着没有时钟信号来同步从发送设备到接收端的输出位。  

硬件连接:

查阅引脚图可知,串口TX是P8,RX是P10

串口配置:

 

安装串口函数库:

如果是官方镜像,应该是安装好了的:

sudo pip3 install pyserial

如果你也有类似的报错如下:

那就说明用户没有对缓存目录'/home/jetson/.cache/pip'或其父目录的所有权或写入权限。

此时可以尝试将命令改为:

sudo -H pip3 install pyserial

 这样就安装好了,下面的警告不用管,感兴趣了解的翻译就放在下面了:

警告:以“root”用户运行pip可能导致权限损坏,
并与系统包管理器发生冲突。
建议使用虚拟环境:https://pip.pypa.io/warnings/venv

 

设置权限:

sudo chmod 777 /dev/ttyTHS1

  此处的 777 表示 你想要设置的权限:

这样配置完全后,就能正常运行串口文件了~~

 Python代码配置:


import time
import serial

#先自己打印
print("UART Demonstration Program")
print("NVIDIA Jetson Nano Developer Kit")


serial_port = serial.Serial(
    port="/dev/ttyTHS1",
    baudrate=115200,
    bytesize=serial.EIGHTBITS,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
)


time.sleep(1)

try:
#发送了两条消息给设备:
    serial_port.write("UART Demonstration Program\r\n".encode())
    serial_port.write("NVIDIA Jetson Nano Developer Kit\r\n".encode())

    while True:
        if serial_port.inWaiting() > 0:
            data = serial_port.read()
            print(data)
            serial_port.write(data)

#接下来进入一个循环,不断检查串口是否有数据传入,
#如果有,就读取并打印出来,并将接收到的数据发送回设备。
#如果接收到的数据是回车符 "\r",则发送换行符 "\n"回设备。
            if data == "\r".encode():
                # For Windows boxen on the other end
                serial_port.write("\n".encode())

#当按下键盘上的Ctrl+C中断程序时,或者其他异常出现时,
#程序会捕捉异常并打印错误信息。最后,程序会关闭串口连接。
except KeyboardInterrupt:
    print("Exiting Program")

except Exception as exception_error:
    print("Error occurred. Exiting Program")
    print("Error: " + str(exception_error))

finally:
    serial_port.close()
    pass

下载测试:

发现上位机串口能接收Jetson传来的数据,也能发送数据给jetson

 

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

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

相关文章

机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)

11、非线性模型 当得到一个回归方程会,得到一条直线来拟合这个数据的统计规律,但是实际中用这样的简单直线很显然并不能拟合出统计规律,所谓线性回归比如两个变量之间关系就直接用一条直线来拟合,2个变量和一个1个变量的关系就用…

PDF 工具箱

PDF 工具箱 V9.0.0.1 程序:VB.net 运行库:NET Framework 4.5 功能简介: 1、PDF文件多文件合并,可调整顺序。 2、PDF文件拆分,将每页拆分成独立的PDF文件。 3、PDF文件添加水印,文字或图片水印&…

代码随想录 -- day46 --139.单词拆分

139.单词拆分 dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词 递推公式是 if([j, i] 这个区间的子串出现在字典里 && dp[j]是true) 那么 dp[i] true。 本题一定是 先遍历 背包,再遍历物品 c…

【LeetCode题目详解】第九章 动态规划part09 198.打家劫舍 213.打家劫舍II 337.打家劫舍III(day48补)

本文章代码以c为例! 一、力扣第198题:打家劫舍 题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻…

【再识C进阶2(中)】详细介绍指针的进阶——函数指针数组、回调函数、qsort函数

前言 💓作者简介: 加油,旭杏,目前大二,正在学习C,数据结构等👀 💓作者主页:加油,旭杏的主页👀 ⏩本文收录在:再识C进阶的专栏&#x1…

开开心心带你学习MySQL数据库之第七篇

MySQL提供的约束 1.not null 2.unique 3.default 4.primary key 5.foreign key 表的设计 找到实体确定实体间的关系 一对一一对多多对多 聚合查询 ~~行之间的运算 ~~聚合函数 ~~分组group by 联合查询 ~~多表查询 ~~笛卡尔积: 把两个表放到一起进行排列组合 班级表 cla…

代码随想录 -- day45 -- 70. 爬楼梯 (进阶)、322. 零钱兑换 、279.完全平方数

70. 爬楼梯 (进阶) 这里要注意,这是一个排列组合的问题,所以要先遍历背包再遍历物品 dp[i]:爬到有i个台阶的楼顶,有dp[i]种方法 递推公式为:dp[i] dp[i - j] class Solution { public:int c…

基于51单片机万年历电压电流检测-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器,液晶1602显示,DS1302时钟检测,电流电压检测、按键设置报警,蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 /lcd1602初始化设置*/ vo…

Java中什么是序列化,哪里有所应用

文章目录 一、简介1.1 本文介绍Java中的序列化技术1.2 阐述序列化的应用场景 二、Java序列化概述2.1 序列化定义2.2 序列化特征2.3 序列化机制 三、Java序列化使用3.1 实现Serializable接口3.2 transient关键字3.3 自定义序列化策略 四、Java序列化应用4.1 对象状态持久化4.2 网…

RCP系列-第一章 环境安装

RCP系列文章 第一章 Matlab安装 Matlab安装 RCP系列文章前言一、Matlab 获取二、安装1.解压2.打开解压后的文件夹中的【R2018b_win64】文件夹3.鼠标右击【setup】选择【以管理员身份运行】4.选择【使用文件安装密钥】,点击【下一步】5.选择【是】,点击【…

图像处理算法实战【1】超详细整理 | 新手入门实用指南 | 图像处理基础

1. 什么是图像 & 图像在计算机中如何存储?2. 图像可分为哪些类型? 2.1. 二值(黑白)图像2.2. 灰度图像2.3. RGB彩色图像2.4. RGBA图像 3. 什么是图像通道?4. 图像处理 4.1. 什么是图像处理?4.2. 图像处理流程4.3. 图像处理技术…

王道考研计算机网络

文章目录 计算机网络体系结构计算机网络概述计算机网络的性能指标 计算机网络体系结构与参考模型错题 物理层通信基础基础概念奈奎斯特定理和香农定理编码与调制电路交换、报文交换和分组交换数据报与虚电路 传输介质物理层设备错题 数据链路层数据链路层的功能组帧差错控制检错…

SpringSecurity一日干

前后端登录校验的逻辑 完整流程 本质就是过滤器链 1,提交用户名和密码 2,将提交的信息封装Authentication对象 3,传给下一个,调用2中的authenticate方法进行验证 4,3步骤也验证不了需要调用3的authenticate方法…

概念解析 | 揭秘视觉与语言交叉模型:CLIP和BLIP的介绍

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:CLIP和BLIP模型。 揭秘视觉与语言交叉模型:CLIP和BLIP的介绍 🎯 [LB: 0.45836] ~ BLIP+CLIP | CLIP Interrogator | Kaggle 大纲: 背景介绍原理介绍和推导 CLIP模型BLIP模…

简易yum仓库搭建

目录 一、实验准备 二、获取yum仓库、安装httpd 三、客户机配置yum源 四、测试、验证 一、实验准备 准备两台主机: 192.168.115.148 :安装http 、作为yum仓库、挂载默认光盘 192.168.115.148 :作为客户机使用yum仓库、不挂载光盘 二、…

Dominosa/数邻(1) | C++ | 结构体和类

这里是目录 一、背景介绍二、题目描述三、Dominosa 的技巧?四、编程思路五、完整代码六、补充 一、背景介绍 你玩过骨牌吗?至少你一定听说过或者亲眼见过多米诺骨牌,而多米诺骨牌就发展自骨牌,这是一种古老的游戏,而我…

【Linux】VirtualBox安装Centos7

文章目录 下载并安装VirtualBox下载Centos镜像VirtualBox设置管理->全局设定:设定虚拟机默认安装路径工具->网络管理器:添加NetWork网络配置 VirtualBox安装CentOS7新建虚拟机,指定安装目录及名称,点击下一步指定虚拟机内存…

记录征战Mini开发板从无到有(二)

接上一篇,原理图设计完成后,就要画PCB图了。因为PCB直接影响板子的性能,所以决定花钱找一博科技的资深工程师来布板。布板效果非常好,细节处理得很到位,真的是专业的人干专业的事,话不多说,来欣…

无涯教程-JavaScript - OCT2BIN函数

描述 OCT2BIN函数将八进制数转换为二进制数。 语法 OCT2BIN (number, [places])争论 Argument描述Required/OptionalNumber 您要转换的八进制数。 数字不能超过10个字符。数字的最高有效位是符号位。其余的29位是幅度位。 负数使用二进制补码表示。 RequiredPlaces 要使用的…

python library reference

文章目录 1. 标准库2. Python标准库介绍3. 示例 1. 标准库 https://docs.python.org/zh-cn/3/library/ https://pypi.org/ https://pypi.org/search/ 2. Python标准库介绍 Python 语言参考手册 描述了 Python 语言的具体语法和语义,这份库参考则介绍了与 Pytho…