Jetson Nx 串口接收数据丢失首字节问题

7 篇文章 0 订阅

1 问题描述

I write a uart program using c++ on Jetson Nx(Jetpack 4.6.1,Ubuntu version 18.04 LTS) to communicate with a PC. On PC there’s a uart simulator( as below figure 1) sending data at a period of one second, 30 bytes data are : EB90021112131415161718191A1B1C1D1E1F202122232425262728292A2B

When my program receive the data, it will lost the first byte “EB”, and sometimes more bytes are lost. as show in figure 2:
在这里插入图片描述

Besides, I tried more tests:
1 C code check. I run my c code on a PC( Ubuntu 18.04.6 LTS os on a windows virtual machine), it doesn’t lost byte. As show in figure 3 above:

2 I changed my c code as below ,set a un-blocking mode, it will not lost any data. Thren I change back to blocking mode as below, it won’t lost any data; and then I restart the Nx, and run my original code(blocking mode), the lost first byte appears.
3 I tried two third party softwares on Nx to receive data, CuteCom won’t lost first data while MiniCom lost first byte, the same problem. Test figure as Figure 4 above:
(CuteCom not lost first byte, Note this tiem sending data are EB901f1112……1c1d)

Figure 5 (Mini Com Lost first byte ‘EB’, note sending data are eb901f1112…28cb146c)

2 解决措施

禁止掉服务nvgetty,通过以下命令:

$ sudo systemctl stop nvgetty.service
$ sudo systemctl disable nvgetty.service

3 问题解析

JetNx中默认会启动服务nvgetty。这个服务中会启动串口0,然后使用串口0通过TCU给上位机发送日志信息用的。
这个服务使用串口,导致影响了正常的一些通信,本例中就是一个问题,类似的还有一些权限等问题,也是由它引起的。

4 相关参考及知识

(1)nvgetty服务干什么用的
https://forums.developer.nvidia.com/t/do-we-ned-nvgetty-service/232140

(2)TCU解释 https://elinux.org/Jetson/AGX_Xavier_Tegra_Combined_UART

(3)https://forums.developer.nvidia.com/t/jetson-nx-uart-communiation-lost-first-byte/234877/6

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Jetson Nano可以通过串口发送数据,具体步骤如下: 1. 首先需要连接串口设备,可以使用USB转串口线连接到Jetson Nano的USB口。 2. 在Jetson Nano上安装串口通信工具,比如minicom。可以使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install minicom ``` 3. 打开minicom,使用以下命令: ``` sudo minicom -s ``` 4. 在minicom的设置中,选择串口设备,比如/dev/ttyUSB,设置波特率为960。 5. 在minicom中输入数据,按下回车键发送数据。 6. 在接收端,可以使用串口调试助手等工具接收数据。 注意事项: 1. 确保连接的串口设备和波特率设置正确。 2. 发送的数据需要按照接收端的协议进行格式化。 ### 回答2: Jetson Nano是英伟达出品的一款小巧的AI计算模块,可用于卫星引导、自主机器人、嵌入式无人机等多种应用场景。在使用中,我们可能会需要通过串口数据发送给其他设备,下面就来介绍一下Jetson Nano串口发送数据的方法。 Jetson Nano板载了一个UART串口,它可以通过GPIO32和GPIO33引脚来进行数据传输。首先需要在Jetson Nano上安装串口库,在终端中输入以下命令: ``` sudo apt-get update sudo apt-get install python-serial ``` 安装完成后,打开Python编译器,并在代码中导入`serial`库,然后创建一个串口实例并打开它,示例代码如下: ```python import serial ser = serial.Serial("/dev/ttyTHS1", 9600) # 创建一个名为ser的串口实例 ser.open() # 打开串口 ``` 其中,`/dev/ttyTHS1`代表的是Jetson Nano上的UART串口设备文件,`9600`是波特率。接下来,我们就可以通过`write`方法向串口发送数据了,例如: ```python ser.write(b"Hello, world!") # 发送一个字符串 ser.write(bytes([0xFF, 0x12, 0x34])) # 发送一组字节 ``` 注意,在使用`write`方法发送数据时,需要将数据转换成字节类型,例如`b"Hello, world!"`代表一个字符串类型的数据,需要用`b`前缀将其转换为字节类型。另外,发送的数据最好以字节流的形式发送,以免出现编码问题。在发送完成后,记得关闭串口: ```python ser.close() # 关闭串口 ``` 以上就是Jetson Nano串口发送数据的基本方法,需要注意的是,如果需要接收数据,还需要使用`read`方法从串口中读取数据。同时,在实际应用中,需要根据具体的设备协议来发送和接收数据,以确保数据的正确传输。 ### 回答3: Jetson Nano是一款小型而强大的嵌入式系统,它提供了多种接口用于外设连接,其中就包括串口串口是一种基本的通讯接口,可以用于串行传输数据。下面我们来讲解Jetson Nano串口发送数据的实现方法。 首先,Jetson Nano有两个UART串口接口,一个位于40针GPIO开发板上,另一个则位于nano模块上。由于GPIO串口用法较为广泛,故本次我们主要介绍GPIO串口的使用。 GPIO串口通过Linux系统驱动进行操作,首先需要安装好驱动。可以通过以下命令来安装: ``` sudo apt-get update sudo apt-get install python-serial ``` 接下来,我们需要选择使用的串口和波特率。假设我们选择了波特率为115200,使用了/dev/ttyTHS1串口,那么我们可以使用以下代码进行串口的初始化设置: ```python import serial ser = serial.Serial('/dev/ttyTHS1', 115200) # 串口初始化,接口dev/ttyTHS1,波特率115200 ser.write('Hello world!') # 发送数据 ``` 其中,串口初始化的相关参数有以下几个: - `port`:串口号,一般是/dev/ttyTHS0或/dev/ttyTHS1 - `baudrate`:波特率,常用的为9600,115200 - `parity`:校验位,可选NONE、EVEN、ODD - `stopbits`:停止位,可选STOPBITS_ONE、STOPBITS_TWO - `bytesize`:数据位数,可选FIVEBITS、SIXBITS、SEVENBITS、EIGHTBITS - `timeout`:超时时间,单位是秒 启动程序后,可以通过ser.write()方法向串口发送数据。同时,我们也可以使用以下代码进行反馈的接收: ```python x = ser.readline() ``` 其中,x为接收到的数据。 到这里,我们便完成了Jetson Nano串口发送数据的操作。当然,在日常工程开发中还必须要考虑很多其他的因素,例如数据格式、数据传输速率等。但是,总体来说Jetson Nano与串口的配合使用是非常便利和可靠的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值