STM32和树莓派串口透传

发布者:Lihua1314520最新更新时间:2024-12-30 来源: elecfans关键字:STM32  树莓派  串口透传 手机看文章 扫描二维码
随时随地手机看文章

最近做一个项目需要STM32和树莓派进行串口通信,实现原理如下:

第一步:使用USB转TTL分别调试STM32和树莓派的串口透传,确保可以通信;

第二步:确保第一步成功后,将树莓派和STM32连接,进行串口透传。

下面进行具体实验吧~

树莓派环境串口透传

在开始前说明以下几点:

1、树莓派UART端口的位置:TXD位于HEAD-8;RXD位于HEAD-10;GND位于HEAD-6(可选其他GND)。

2、树莓派的TXD应接USB转串口设备的RXD,当然如果测试失败请交换RXD和TXD的顺序。

树莓派串口通信需要配置环境,主要修改两处,具体如下:

第一处:进入  /boot/cmdline.txt 文件

输入以下指令:

sudo nano /boot/cmdline.txt

删除以下部分:

console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

最终变为:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

第二步:进入  /etc/inittab  文件

输入以下指令:

sudo nano /etc/inittab

注释最后一行内容:

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

配置完之后便可测试一下树莓派的UART是否正常工作,而minicom便是一个简单好用的工具。minicom是linux/树莓派平台串口调试工具,相当于windows上的串口调试助手。此时需要先安装minicom:

sudo apt-get install minicom

接下来启动minicom工具:

minicom -b 9600 -o -D /dev/ttyAMA0

#-b代表波特率,-D代表端口,/dev/ttyAMA0 类似于windows中的COM1,-o功能暂时未知。

效果如下:

注意:

1、minicom发送内容直接在控制台中输入内容即可,如果minicom打开了回显可在控制台中观察到输出内容,如果回显关闭则控制台中没人任何反应,千万不要以为minicom没有正常工作。

2、minicom回显控制,先Ctrl+A,再E。可翻转回显状态(原来回显打开则此事回显关闭)

3、minicom回显关闭,先Ctrl+A,再Q。 

minicom仅满足调试用途,如果需要编程解决问题那么python的serial扩展库——pyserial则是一个不错的选择。

收下需要安装pyserial扩展库,可使用pip或者easy_install安装,也可以直接选择apt-get工具安装。

若使用apt-get工具安装,可输入以下指令:

sudo apt-get install python-serial

当以上步骤成功后,就可以使用Python编写树莓派串口透传程序,具体Demo如下:

# -*- coding: utf-8 -*

import serial

import time

# 打开串口

ser = serial.Serial('/dev/ttyAMA0', 9600)

def main():

    while True:

        # 获得接收缓冲区字符

        count = ser.inWaiting()

        if count != 0:

            # 读取内容并回显

            recv = ser.read(count)

            ser.write(recv)

        # 清空接收缓冲区

        ser.flushInput()

        # 必要的软件延时

        time.sleep(0.1)


if __name__ == '__main__':

    try:

        main()

    except KeyboardInterrupt:

        if ser != None:

            ser.close()

此时实现了树莓派的串口通信功能。

STM32环境串口透传

接下来实现STM32串口透传,这里我使用的MCU是STM32F103C8T6,配置UART1,STM32不需要配置环境直接在Demo中配置GPIO即可,将USB转TTL的TX连接STM32的RX(PA10),USB转TTL的RX连接STM32的TX(PA9),核心Demo如下:

#include 'usart1.h'

#include

void USART1_Config(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

USART_InitTypeDef USART_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOA, &GPIO_InitStructure);   


  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

  GPIO_Init(GPIOA, &GPIO_InitStructure); 


USART_InitStructure.USART_BaudRate = 115200;

USART_InitStructure.USART_WordLength = USART_WordLength_8b;

USART_InitStructure.USART_StopBits = USART_StopBits_1;

USART_InitStructure.USART_Parity = USART_Parity_No ; 

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

USART_Init(USART1, &USART_InitStructure); 

USART_Cmd(USART1, ENABLE);

}

void UART1SendByte(unsigned char SendData)

{  

        USART_SendData(USART1,SendData);

        while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);    

unsigned char UART1GetByte(unsigned char* GetData)

{     

        if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)

        {  return 0;

}

        *GetData = USART_ReceiveData(USART1);

        return 1;

}

void UART1Test(void)

{

       unsigned char i = 0;

       while(1)

       {   

while(UART1GetByte(&i))

        {

         USART_SendData(USART1,i);

        }     

       }   

}

当STM32测试成功后,恭喜各位,将树莓派的TX和STM32的RX(PA10)连接,树莓派的RX和STM32的TX连接(PA9),注意一定要将STM32的GND和树莓派的GND连接,即可实现STM32和树莓派串口通信。

关键字:STM32  树莓派  串口透传 引用地址:STM32和树莓派串口透传

上一篇:STM32 USB的实现和软件实现
下一篇:[从智能锁谈STM32安全技术 学习笔记] 二. 加解密技术

推荐阅读最新更新时间:2026-03-20 11:48

远程透传网关-单网口快速实现信捷XD5串口PLC程序远程上下载
准备工作 一台可联网操作的电脑 一台单网口的远程透传网关及博达远程透传配置工具 网线一条,用于实现网络连接及连接PLC 一台信捷XD5 PLC及其编程软件 一根232转换线、232转换头及连接线 一张4G卡或WIFI天线实现通讯(使用4G联网则插入4G SIM卡,WIFI联网则将WIFI天线插入USB口) 第一步 接线步骤 将网关通电,用网线将网关和电脑进行连接; 将232转换头插入PLC,用连接线通过COM口连接至网关(无法连接成功可尝试反接) 如图所示:232转换头的TX接接网关上的TX,RX接网关上的RX,GND地接网关上的GND 注:如果不是使用转换线, 则一般为RX接网关TX, TX接网关RX,GND地接网关G
[嵌入式]
远程<font color='red'>透传</font>网关-单网口快速实现信捷XD5<font color='red'>串口</font>PLC程序远程上下载
IAR 串口调试,基于新唐n76e003的双串口透传程序设计
在解决好多bug后终于实现了双串口之间的相互收发,但是主管说写的程序很垃圾,但是终于能用了,还是很开心,在指导下会进一步修改,如果只是完成作业的话可以借鉴一下,话不多说,继续码上 在这里插入 //*********************************************************************************************************** // File Function: N76E003 UART-0 Mode1 demo code //************************************************************
[单片机]
串口透传实现机制
对于透传,串口接收数据间隔超过约 20 ms,就会认为数据接收结束,将已经接受的数据...超时退出处理,防止卡死 5.所有数组下标尽量在访问数组前都做下标是否越界判断 两个或的条件: 1.超时 2.数据达到一包的长度。
[单片机]
STM32树莓派串口通信实现(简易教程,无需安装micro-ROS版)
零、预设: 本次实验是为了给ROS2模块小车的通信打基础,我们选择stm32f407和树莓派4B进行电机控制和数据处理,二者之间需要进行串口通信,找到一个比较方便的方法(无需安装micro-ROS) 一、基本思路: 和普通的串口通信其实都差不多,只是stm32发送的数据要用树莓派的ros系统上来接收,我们这次只是为了验证能否正常通信,于是树莓派的ros系统上我们就用cutecom串口收发助手来进行接收 二、具体操作: 1、接线: 我们使用TTL转串口来进行,注意stm32引出的串口RX、TX要和TTL转串口的TX、RX交错连接,引脚电平3v3,别忘了GND。 2、stm32端的代码编
[单片机]
<font color='red'>STM32</font>与<font color='red'>树莓派</font><font color='red'>串口</font>通信实现(简易教程,无需安装micro-ROS版)
利用树莓派打造STM32无线在线调试器!
不知各位嵌入式开发者有没有遇到这样的经历:J-link的线长限制了我们编程的姿势,很多时候我们的工程都需要板子产生一些位移(比如调小车之类的),这时候J-link的线会让我们Debug的过程变得非常痛苦。。。那么有没有办法让我们解决这个数据线的痛苦呢??答案是当然有的!只要有着一颗折腾的心,办法总是会慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢慢想出来的。本人最近一直在弄一个相关工程,因为被线限制的非常痛苦,于是就考虑出了使用树莓派作为J-link的服务器然
[单片机]
利用<font color='red'>树莓派</font>打造<font color='red'>STM32</font>无线在线调试器!
4美元就能买到瑞萨的FPGA开发板,还带树莓派RP2040 MCU
Shrike-lite 是一款超低成本的 FPGA 开发板,基于 Renesas ForgeFPGA 器件(SLG47910V,1120 个 LUT),并配备 Raspberry Pi RP2040 微控制器。 该板还配备 USB-C 接口用于供电和编程、两个 18 针引脚头以及一个 12 针 PMOD 兼容引脚头用于 I/O 接口,还有 Boot 和 Reset 按钮,但设计为最小化开发板,因此其他功能不多。 Shrike-lite 和 Shrike 板规格: FPGA – Renesas ForgeFPGA (SLG47910V, 1120 LUTs) 1120 个 5 位 LUT 1120 个 DFF 5 kb
[嵌入式]
4美元就能买到瑞萨的FPGA开发板,还带<font color='red'>树莓派</font>RP2040 MCU
Videtronic开发出利用 GMSL2 延长树莓派摄像头电缆的方案
Videtronic 的 V-Link 是一款紧凑型解决方案,旨在运用 GMSL2(千兆多媒体串行链路 v2)技术,通过长达 15 米的电缆扩展树莓派 MIPI DSI 摄像头的使用范围。此前,这种类型的解决方案常见于多款 NVIDIA Jetson Nano 开发套件和嵌入式计算机中,但在树莓派 SBC 中较为少见。 V-Link 依赖基于 MAX96717 的 MIPI CSI 转 GSML2 板卡,以及基于 MAX96714 的 GSML2 转 MIPI CSI 板作为双向收发器配对使用。该方案是 THine THSER101 树莓派相机扩展套件的替代选择,可与长达 20 米的 LAN 电缆配合使用。 V-Link
[嵌入式]
Videtronic开发出利用 GMSL2 延长<font color='red'>树莓派</font>摄像头电缆的方案
虹科方案 | 虹科工业树莓派和PLC怎么选?
1. 树莓派 在了解虹科工业树莓派之前,首先要了解一下什么是树莓派。树莓派是一款基于ARM的小型电脑,在树莓派上提供丰富的接口,能够实现较多功能。它同样是开发人员的最爱,其搭载Linux系统,开源性较强,支持多种高级编程语言开发,使它经常被应用于各种测试和应用环境。现有的树莓派计算模块已经发展到CM4阶段,在算力上有了很大的提升,可以进行更加复杂的应用。 2. 虹科工业树莓派 日常学习或者应用中的树莓派可以称为普通树莓派,与之相对应有一款适用于工业场景的树莓派——虹科工业树莓派。虹科工业树莓派采用和普通树莓派一样的树莓派计算模块CM4,与上一个版本工业树莓派外围电路结合,组成树莓派CM4S。采用适配硬件的定制化Raspdebi
[嵌入式]
虹科方案 | 虹科工业<font color='red'>树莓派</font>和PLC怎么选?
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved