邢台网站建设邢台宁波网页制作设计营销

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

邢台网站建设邢台,宁波网页制作设计营销,网络技术服务是干什么的,wordpress 外部链接插件目录 1.UART通信介绍 2.电脑端准备工作 2.1 安装串口调试助手 2.2 硬件接线 3.Jetson Nano端准备工作 3.1安装库文件 3.2修改主板上电启动串口权限 4.示例程序-发送及接收 4.1 开启串口调试助手 4.2 导入示例程序 4.3 执行程序 4.4 查看效果
4.4.1 串口调试端 4.4…目录 1.UART通信介绍 2.电脑端准备工作 2.1 安装串口调试助手 2.2 硬件接线 3.Jetson Nano端准备工作 3.1安装库文件 3.2修改主板上电启动串口权限 4.示例程序-发送及接收 4.1 开启串口调试助手 4.2 导入示例程序 4.3 执行程序 4.4 查看效果  4.4.1 串口调试端 4.4.2 Jetson Nano端  5.串口通信代码  目录 1.UART通信介绍 2.电脑端准备工作 2.1 安装串口调试助手 2.2 硬件接线 3.Jetson Nano端准备工作 3.1安装库文件 3.2修改主板上电启动串口权限 4.示例程序-发送及接收 4.1 开启串口调试助手 4.2 导入示例程序 4.3 执行程序 4.4 查看效果  4.4.1 串口调试端 4.4.2 Jetson Nano端  1.UART通信介绍 通信协议在组织设备之间的通信方面起着重要作用。它根据系统要求以不同的方式设 计并且这些协议具有在设备之间达成一致的特定规则以实现成功的通信。         嵌入式系统、微控制器和计算机大多使用UART 作为设备到设备硬件通信协议的一种 形式。在可用的通信协议中UART仅使用两条线作为其发送端和接收端。         尽管是一种广泛使用的硬件通信协议方法但它并没有一直得到充分优化。在微控制器 内部使用UART 模块时通常会忽略帧协议的正确实现。         根据定义UART是一种硬件通信协议它使用可配置速度的异步串行通信。异步意味 着没有时钟信号来同步从发送设备到接收端的输出位。         每个UART 设备的两个信号命名为 发射机(Tx)接收器(Rx) 每个设备的发送器和接收器线的主要目的是发送和接收用于串行通信的串行数据。 发送UART 连接到以并行形式发送数据的控制数据总线。由此数据现在将在传输线 线上逐位串行传输到接收UART。反过来这会将串行数据转换为接收设备的并行数 据。         UART 线用作通信介质将一个数据发送和接收到另一个数据。请注意UART 设备 具有专用于发送或接收的发送和接收引脚。         对于UART 和大多数串行通信需要在发送和接收设备上设置相同的波特率。波特率 是信息传输到通信信道的速率。在串行端口上下文中设置的波特率将作为每秒传输的最大 位数。         在UART 中传输方式是数据包的形式。连接发送器和接收器的部分包括创建串行数 据包并控制这些物理硬件线路。数据包由起始位、数据帧、奇偶校验位和停止位组成。 起始位 UART 数据传输线在不传输数据时通常保持在高电压电平。为了开始数据传输发送 UART 将传输线从高拉低一(1) 个时钟周期。当接收UART 检测到从高到低的电压转换 时它开始以波特率的频率读取数据帧中的位。 数据框 数据帧包含正在传输的实际数据。如果使用奇偶校验位它可以是五(5) 位最多八(8) 位。如果不使用奇偶校验位则数据帧可以是九(9) 位长。在大多数情况下首先发送的 数据是最低有效位。 平价 奇偶性描述了一个数字的偶数或奇数。奇偶校验位是接收UART 判断数据在传输过程 中是否发生变化的一种方式。位可以通过电磁辐射、不匹配的波特率或长距离数据传输来改 变。         接收端UART 读取数据帧后计算值为1 的位数并检查总数是偶数还是奇数。如 果奇偶校验位为0偶校验则数据帧中的1 或逻辑高位应总计为偶数。如果奇偶校验 位为1奇校验则数据帧中的1 位或逻辑高电平应总计为奇数。         当奇偶校验位与数据匹配时UART 知道传输没有错误。但如果奇偶校验位为0总 数为奇数或者奇偶校验位为1总数为偶数则UART 知道数据帧中的位发生了变化。 停止位 为了发出数据包结束的信号发送UART 将数据传输线从低电压驱动到高电压持续 一(1) 到两(2) 位持续时间。 2.电脑端准备工作 2.1 安装串口调试助手 本节以友善串口助手为例进行说明。         双击打开本目录下的“serial5.2.3.exe”安装程序。然后按照下方图示步骤依次进行。 2.2 硬件接线 根据Jetson Nano引脚图会用到以下引脚 注意Jetson Nano使用5V 4A供电因此无需对接VCC。         使用USB转TTL模块将Jetson Nano与PC通过母对母的杜邦线连接连线如下所示         Jetson Nano引脚8TXD–USB转TTL模块RXD         Jetson Nano引脚10RXD–USB转TTL模块TXD         Jetson Nano引脚6GND–USB转TTL模块GND 3.Jetson Nano端准备工作 3.1安装库文件 启动Jetson Nano主板然后打开命令行终端输入下方指令来安装串口函数库。 sudo apt-get install python3-serial 3.2修改主板上电启动串口权限 我们需要设置Jetson Nano开机后自启动串口打开命令行终端输入下方指令来打开串 口权限。 sudo chmod 777 /dev/ttyTHS1 4.示例程序-发送及接收 本节示例以电脑上的串口调试助手显示接收到Jetson Nano发送过来的说明字符串。         电脑端通过串口调试助手发送字符也可以在Jetson Nano终端上显示。 4.1 开启串口调试助手 将USB转TTL工具插入电脑任意一个USB接口后打开电脑的设备管理器查看端口是 否被识别如下图 如果未出现带有CH340标识的端口可检查电脑是否安装了CH340驱动驱动包在本节 目录下可找到若安装了驱动却无法识别可更换USB接口进行排查。 双击安装好的“Serial Port Utility”。 打开后选择带有CH340标识的端口波特率、数据位等属性按照下图设置后点击红  框按钮即可。 4.2 导入示例程序 1) 启动Jetson Nano将其连接至远程控制软件NoMachine。         2) 缩小NoMachine窗口将同目录下的“UART.py”文件通过鼠标左键拖拽到 NoMachine系统桌面。 3) 输入指令“chmod ax /home/hiwonder/Desktop/UART.py ”为程序增加执行权 限。 这里“hiwonder”为本机创建的用户根据实际情况对上方指令进行改写。  4.3 执行程序 1) 启动Jetson Nano将其连接至远程控制软件NoMachine。         2) 双击系统桌面的图标打开命令行终端。         3) 输入指令“cd Desktop/”切换桌面。 4) 输入指令“python3 UART.py”运行测试代码。 4.4 查看效果  4.4.1 串口调试端 在串口调试助手上面可以收到Jetson Nano发来的消息如下 我们可以在下方输入例如“nihao”然后点击发送。 4.4.2 Jetson Nano端  在Jetson Nano端的命令行界面内可以收到来自电脑端发来的消息。 5.串口通信代码  #!/usr/bin/python3 import time import serialprint(UART Demonstration Program) print(NVIDIA Jetson Nano Developer Kit)serial_port serial.Serial(port/dev/ttyTHS1,baudrate115200,bytesizeserial.EIGHTBITS,parityserial.PARITY_NONE,stopbitsserial.STOPBITS_ONE, )

Wait a second to let the port initialize

time.sleep(1)try:# Send a simple headerserial_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)# if we get a carriage return, add a line feed too# \r is a carriage return; \n is a line feed# This is to help the tty program on the other end # Windows is \r\n for carriage return, line feed# Macintosh and Linux use \nif data \r.encode():# For Windows boxen on the other endserial_port.write(\n.encode())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