ft4232树莓派linux扩展串口,如何实现STM32和树莓派串口透传?
最近做一个项目需要STM32和树莓派进行串口通信,实现原理如下:
第一步:使用USB转TTL分别调试STM32和树莓派的串口透传,确保可以通信;
第二步:确保第一步成功后,将树莓派和STM32连接,进行串口透传。
下面进行具体实验吧~树莓派环境串口透传
在开始前说明以下几点:
1、树莓派UART端口的位置:TXD位于HEAD-8;RXD位于HEAD-10;GND位于HEAD-6(可选其他GND)。
2、树莓派的TXD应接USB转串口设备的RXD,当然如果测试失败请交换RXD和TXD的顺序。
aHR0cDovL3NodW1laXBhaS5ueGV6LmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNS8wMy9ycGktcGlu.jpeg (206.67 KB, 下载次数: 0)
2020-6-29 10:00 上传
树莓派串口通信需要配置环境,主要修改两处,具体如下:
第一处:进入 /boot/cmdline.txt 文件
输入以下指令:[mw_shl_code=c,false]sudo nano /boot/cmdline.txt[/mw_shl_code]
删除以下部分:[mw_shl_code=c,false]console=ttyAMA0,115200 kgdboc=ttyAMA0,115200[/mw_shl_code]
最终变为:[mw_shl_code=c,false]dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait[/mw_shl_code]
第二步:进入 /etc/inittab 文件
输入以下指令:[mw_shl_code=c,false]sudo nano /etc/inittab[/mw_shl_code]
注释最后一行内容:[mw_shl_code=c,false]#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100[/mw_shl_code]
配置完之后便可测试一下树莓派的UART是否正常工作,而minicom便是一个简单好用的工具。minicom是linux/树莓派平台串口调试工具,相当于windows上的串口调试助手。此时需要先安装minicom:[mw_shl_code=c,false]sudo apt-get install minicom[/mw_shl_code]
接下来启动minicom工具:[mw_shl_code=c,false]minicom -b 9600 -o -D /dev/ttyAMA0
#-b代表波特率,-D代表端口,/dev/ttyAMA0 类似于windows中的COM1,-o功能暂时未知。[/mw_shl_code]
效果如下:
202006294513..png (65.69 KB, 下载次数: 0)
2020-6-29 10:02 上传
注意:
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工具安装,可输入以下指令:[mw_shl_code=c,false]sudo apt-get install python-serial[/mw_shl_code]
当以上步骤成功后,就可以使用Python编写树莓派串口透传程序,具体Demo如下:[mw_shl_code=c,false]# -*- 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()[/mw_shl_code]
此时实现了树莓派的串口通信功能。STM32环境串口透传
接下来实现STM32串口透传,这里我使用的MCU是STM32F103C8T6,配置UART1,STM32不需要配置环境直接在Demo中配置GPIO即可,将USB转TTL的TX连接STM32的RX(PA10),USB转TTL的RX连接STM32的TX(PA9),核心Demo如下:
[mw_shl_code=c,false]#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);
}
}
}[/mw_shl_code]
ft4232树莓派linux扩展串口,如何实现STM32和树莓派串口透传?相关推荐
- ft4232树莓派linux扩展串口,树莓派Linux串口编程实现自发自收
串口是计算机上一种非常通用设备通信的协议,常用PC机上包含的是RS232规格的串口,具有连接线少,通讯简单,得到广泛的使用. Linux对所有设备的访问是通过设备文件来进行的,串口也是这样,为了访问串 ...
- 【RW007系列综合实战1】STM32+RW007实现BLE透传功能
本期文章将分为5篇连载,前2篇将围绕模块功能详解展开,其后3篇将为大家讲解基于RW007相关DEMO的实现,文章目录如下: 今天我们将使用STM32F411-NUCLEO通过 RW007 BLE 功能 ...
- 手机控制树莓派linux,怎样用PC或手机远程控制树莓派
您需要: 1. Raspberry Pi 3(带SD卡). 2. 2安培USB电源. 步骤1:在Pi中安装操作系统 您可以如果您已经在Pi中安装了操作系统,请跳过此步骤. 步骤2:下载VNC View ...
- Linux的pcie模拟网卡,Qemu虚拟机pci设备透传——网卡
在qemu虚拟机中为了提高网络的性能,将本地host端的多余网卡透传到虚拟机中使用. 设备的透传需要主机支持Intel(VT-d)或AMD (IOMMU)硬件虚拟化加速技术 查看是否开启IOMMU1d ...
- 【串口通信】K210与STM32串口通信、K210与OpenMV串口通信
[串口通信]K210与STM32串口通信.K210与OpenMV串口通信 串口通信 前言 为何需要串口通信 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口发送测试 ...
- STM32 HAL库串口同时收发,接收卡死?
STM32 使用 HAL库串口同时收发,使用踩坑史 = =!......by 矜辰所致 目录 前言 一. HAL 库串口收发 1.1 串口发送 1.2 串口接收 1.2.1 标准库接收 1.2.1 H ...
- 何谓”透传“? UART串口WIFI模块做”透传“的目的及其局限性
前言 本文从UART串口型WIFI模组的"透传"概念的本质入手,解释了"透传"的实际机理,点出了UART串口型模组的"透传",其目的是为了避 ...
- STM32和树莓派串口透传
目录 树莓派环境串口透传 STM32环境串口透传 最近做一个项目需要STM32和树莓派进行串口通信,实现原理如下: 第一步:使用USB转TTL分别调试STM32和树莓派的串口透传,确保可以通信: 第二 ...
- linux恢复树莓派内存卡容量,树莓派自动扩展tf卡剩余空间
在树莓派上开发了程序,配置了很多内容,然后现在需要做一个镜像出来,我的TF卡是16G的,传输起来实在太不方便.在网上找了很多给镜像瘦身的方法,然而并没有找到一个可靠的行之有效的方法,大部分的方法的确是 ...
最新文章
- 一分钟学会spring注解之@Scope注解
- jmeter 导入java_8. Jmeter导入jar包
- VC++读取图像RGB值
- ROS学习(十四):ROS Spinning
- js encodeURIComponent 之php解码
- SQL 查询语句总是先执行 SELECT?
- 循环类里面的每一个属性
- 报表引擎 - 数据模型
- for循环,定时器,闭包混合一块的那点事。
- openwrt dhcp 无法获取ip_电脑的 ip 是怎么来的呢?我又没有配置过
- java ext pagesize_更改透明图像的不透明度/更改extgstate字典的值
- Conflux获上海市政府超过500万美元的研究资助
- iOS页面间跳转的方式
- 如何在 Spring 中自定义 scope
- javascript 使用canvas绘画
- 统一对外的接口,支持requestBody以及表单提交的坑
- 在Vista系统中,Flash渲染功能无法使用,咋办?
- 【新人c语言强化训练 】 c 语言强化练习2。1 数据对齐[zt]
- Quartus II的基本使用及仿真
- 高省是什么?它跟社交电商APP有何区别?资深淘客为你揭秘
热门文章
- Spring Cloud 系列之OpenFeign:(5)OpenFeign的高级用法
- C语言—函数_成仙不问道
- 什么是社会工程学?-以及如何防御
- Php修改config配置文件,修改config配置文件
- 编写一个判断完数的函数。完数是指一个数恰好等于它的因子之和,如6=1+2+3,6就是完数。
- neural-networks-and-deep-learning backprop_magnitude_nabla.py
- Python+OpenCV实现增强现实!快来召唤你的库洛牌!!!
- win10 win7 php,windows10和windows7的区别是什么
- 连oracle报错ora-12170,基于ORA-12170 TNS 连接超时解决办法详解
- 埃隆·马斯克(Elon·Musk)的典型特质