OrangePI串口通信(pyserial和USB-TTL)

硬件

orangepi5,usb-ttl模块,openmv

系统

orangepi配置的是官网的

Orange Pi - Orangepihttp://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-pi-5.html

ubantu镜像,

配置方法和工具上方超链接有

具体操作过程和代码

1.系统内置python3.8(无需额外安装)

2.安装pip(为后续安装pyserial)

打开系统终端,安装pip

sudo apt-get install python3-pip

如果失败检查软件更新

sudo apt-get update
sudo apt-get upgrade

然后再重新安装pip

3.安装pyserial

sudo pip install python3 pyserial

4.打开串口

vim

sudo vim /boot/orangepiEnv.txt

vim操作有点麻烦

(16条消息) vim命令大全_万山寒的博客-CSDN博客

具体见大佬的vim命令大全

or

gedit

sudo gedit /boot/orangepiEnv.txt

操作简单(推荐)

5.打开后编辑文本

添加串口uart1,uart2,uart3(根据自己需要选择)

overlays=uart1 uart2 uart3

6.根据引脚图连接相应的引脚(引脚的串口通信)

6.通过USB读取串口数据(USB-TTL)

将USB插到orangepi上的任意USB接口上,然后在终端输入命令查看。USB0是否正确安装

~$ ls -l /dev/tty*

因为是UART转USB所以使用的是ttyUSB0

7.验证

import serial
import time

ser = serial.Serial("/dev/ttyUSB0", 9600, timeout=0.5)
ser.isOpen()

终端应该显示True

最近在比赛,具体和openmv的通信代码,比完赛再发

本文章仅是本人学习时的记录,供广大网友学习,小白我也是刚刚接触有什么不对的地方请指教

<think>好的,用户想实现香橙派STM32之间的串口通信,需要教程代码示例。首先,我需要回忆之前提供的引用内容,看看有没有相关的资料。引用1提到树莓派STM32通过UART通信的Python代码,这可能对香橙派也适用,因为两者都是使用Linux系统的单板机。引用34提到香橙派STM32通过串口连接,特别是引用4提到使用STM32作为主控,与香橙派通信控制机械臂,这说明确实有实际应用案例。 接下来,用户需要具体的教程代码示例。首先,硬件连接部分,香橙派的GPIO引脚需要正确连接到STM32的串口引脚。需要确认香橙派的UART引脚,比如常见的UART0是TX(GPIO15)RX(GPIO16),但不同型号可能不同,用户需要查阅香橙派的具体文档。然后,STM32端需要配置USART,比如USART2,使用对应的TXRX引脚,比如PA2PA3。电平转换方面,香橙派是3.3V,而STM32可能也是3.3V,所以可以直接连接,不需要电平转换模块,这点需要确认,如果STM32是5V的,可能需要转换。 软件配置方面,香橙派需要启用UART功能。有些系统可能需要通过配置工具如raspi-config来开启串口,或者修改/boot目录下的配置文件。例如,在香橙派的Ubuntu系统中,可能需要修改/boot/orangepiEnv.txt文件,启用uart0。然后安装pyserial库,使用Python编写通信代码,类似引用1中的示例,但需要调整串口号,比如可能是/dev/ttyS0或/dev/ttyAMA0,这需要用户根据实际硬件确认。 STM32部分需要使用HAL库或者标准库配置串口,设置波特率、数据位、停止位等参数,并编写中断服务函数来处理接收的数据。需要提供一个简单的例子,比如回显接收到的数据,或者执行特定指令。代码示例需要包括初始化USART、发送接收函数,以及中断处理。 然后,用户可能需要测试通信,比如在香橙派发送数据,STM32接收并回复,反之亦然。需要注意波特率、校验位等设置必须一致。常见问题可能包括权限问题(需要将用户加入dialout组)、串口号错误、波特率不匹配等,这些需要在注意事项里提到。 此外,引用3提到使用USBTTL模块进行串口登录,可能在硬件连接时需要用到,特别是如果香橙派的UART已经被其他功能占用的情况下。同时,引用4中的机械臂控制案例可以作为应用场景的参考,说明通信的实用性。 最后,根据用户的问题,生成相关问题,比如硬件连接注意事项、提高通信可靠性、STM32的配置、多设备通信等,帮助用户进一步学习。</think>### 香橙派与STM32串口通信实现步骤 #### 一、硬件连接 1. **接口对应关系** - 香橙派UART引脚(默认使用UART0): - TX:GPIO15(对应物理引脚号需查阅开发板手册) - RX:GPIO16 - STM32 USART引脚(以USART2为例): - TX:PA2 - RX:PA3 - **电平匹配**:若STM32为3.3V供电,可直接连接;若为5V,需添加电平转换模块[^3]。 2. **接线示意图** ``` 香橙派 <--> STM32 TX(GPIO15) --> RX(PA3) RX(GPIO16) <-- TX(PA2) GND -- GND ``` #### 二、香橙派配置 1. **启用UART功能** - 编辑配置文件: ```bash sudo nano /boot/orangepiEnv.txt ``` - 添加或修改: ``` overlays=uart0 ``` 2. **安装Python库** ```bash sudo pip3 install pyserial ``` 3. **Python通信代码示例** ```python import serial import time # 打开串口(端口号需根据实际系统查看) ser = serial.Serial( port='/dev/ttyS0', # 可能为/dev/ttyAMA0或/dev/ttyS0 baudrate=115200, timeout=1 ) try: while True: # 发送数据到STM32 ser.write(b'Ping from OrangePi!\n') # 接收数据 if ser.in_waiting > 0: data = ser.readline().decode().strip() print(f"Received: {data}") time.sleep(1) except KeyboardInterrupt: ser.close() ``` #### 三、STM32代码(基于HAL库) ```c // USART2初始化配置(以STM32F4为例) void MX_USART2_UART_Init(void) { huart2.Instance = USART2; huart2.Init.BaudRate = 115200; huart2.Init.WordLength = UART_WORDLENGTH_8B; huart2.Init.StopBits = UART_STOPBITS_1; huart2.Init.Parity = UART_PARITY_NONE; huart2.Init.Mode = UART_MODE_TX_RX; huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; HAL_UART_Init(&huart2); // 启用接收中断 HAL_UART_Receive_IT(&huart2, rx_buffer, 1); } // 接收中断回调函数 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart->Instance == USART2) { // 回传接收到的字符+1(示例逻辑) tx_buffer[0] = rx_buffer[0] + 1; HAL_UART_Transmit(&huart2, tx_buffer, 1, 100); // 重新启用中断 HAL_UART_Receive_IT(&huart2, rx_buffer, 1); } } ``` #### 四、验证通信 1. **测试场景** - 香橙派发送字符串,STM32返回处理后的数据 - 可通过逻辑分析仪或示波器观察波形 2. **调试技巧** - 使用`dmesg | grep tty`查看香橙派串口设备号 - 使用`minicom`测试基础通信: ```bash sudo minicom -D /dev/ttyS0 -b 115200 ``` #### 五、注意事项 1. 权限问题:将用户加入`dialout`组 ```bash sudo usermod -aG dialout $USER ``` 2. 避免电平不匹配导致硬件损坏 3. 波特率误差需小于3%(建议使用115200/9600等标准值)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值