美文网首页树莓派
STM32和树莓派串口透传

STM32和树莓派串口透传

作者: 不脱发的程序猿 | 来源:发表于2022-01-11 19:01 被阅读0次

最近做一个项目需要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 <stdarg.h>

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和树莓派进行串口通信,实现原理如下: 第一步:使用USB转TTL分别调试STM32和树...

  • 树莓派串口配置及minicom的安装

    1.树莓派串口配置:树莓派串口默认用于终端调试,如需使用串口,则需要修改树莓派设置。执行如下命令进入树莓派配置:s...

  • 树莓派串口通信

    树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登...

  • 树莓派串口设置

    1. 树莓派串口设置 1.1. 将树莓派的硬件串口与mini串口默认映射对换 硬件串口由硬件实现,有单独波特率时钟...

  • 树莓派知识随笔

    1、串口连接 这种方式在我树莓派的第一篇博客有讲,这里我简单介绍。 连接树莓派,树莓派GPIO串口的GND,txd...

  • 树莓派——opencv读取摄像头

    7寸触摸屏设置与串口 禁用串口的控制台功能:树莓派io口引出串口默认是用来做控制台使用的,即是为了用串口控制树莓派...

  • Raspberry UARTs

    相比树莓派零、1、2 以及 3 的双串口 UART0(PL011)和 UART1(mini UART),树莓派4 ...

  • 树莓派 3 java usb串口通讯485

    0 参考链接 1 环境装备 1.1 硬件准备 1,树莓派 2,一跟串口转485的数据线树莓派usb串口连接 数据线...

  • 树莓派开启SSH的N种方法

    问题:为什么我的树莓派无法使用远程连接电脑? 解答: 由于树莓派只有一个串口,当我们开发中需要占用这个串口或者我们...

  • stm32 can总线学习笔记

    这段时间折腾stm32与树莓派之间的can总线通讯遇到了不少问题,树莓派那端的已经写在树莓派外挂MCP2515模块...

网友评论

    本文标题:STM32和树莓派串口透传

    本文链接:https://www.haomeiwen.com/subject/mlcicrtx.html