树莓派与STM32(rt1064)串口通信

这篇具有很好参考价值的文章主要介绍了树莓派与STM32(rt1064)串口通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、树莓派通信

1、硬件连线准备

2、安装Serial和打开树莓派串口

2.1安装Serial

2.2打开树莓派串口

2.3修改串口映射关系

3、树莓派代码

4、上位机

5、运行uart.py代码进行测试

5.1 树莓派发送,上位机接收

5.2上位机发送,树莓派接收

 二、STM32通信

6、配置串口

7、测试STM32通信

7.1 STM32发送数据,上位机接收数据

7.2 上位机发送数据,STM32接收数据

三、树莓派与STM32通信

8、树莓派与STM32通信测试


一、树莓派通信

1、硬件连线准备

树莓派4B、杜邦线、TTL转USB(只是验证树莓派功能,与STM32通信只需要杜邦线)

树莓派 RX 与TTL-USB TX相连接   树莓派TX与TTL-USB RX相连接 

树莓派与STM32(rt1064)串口通信

树莓派与STM32(rt1064)串口通信

2、安装Serial和打开树莓派串口

2.1安装Serial

输入 sudo apt-get install serial

2.2打开树莓派串口

终端输入sudo raspi-config打开界面设置

sudo raspi-config

 Interfacing Options→serial→否→是

输入ls -l /dev查看设备

ls -l /dev

 树莓派与STM32(rt1064)串口通信

2.3修改串口映射关系

输入sudo nano /boot/config.txt

sudo nano /boot/config.txt

末行添加 dtoverlay=pi3-miniuart-bit

树莓派与STM32(rt1064)串口通信

 输入ls -l /dev查看设备

树莓派与STM32(rt1064)串口通信

3、树莓派代码

 Xshell7和MobaXterm

uart.py代码如下

树莓派与STM32(rt1064)串口通信

# -*- coding: utf-8 -*-
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 115200) #打开串口设备
if ser.isOpen == False:
    ser.open()          # 打开串口    
a=ser.write(b"x09")     
print(a)
try:
    while True:
        size = ser.inWaiting()  	# 获得缓冲区字符
        if size != 0:
            res = ser.read(size)   	# 读取内容并显示
            print(res)
            print(ser.bytesize) #字节大小 
            if res == b'\x01\r\n':
                ser.write(b'\x05')
                print(ser.baudrate) #波特率    
            elif res == b'\x02':
                ser.write(b'\x06')
                print(ser.baudrate) #波特率 
            elif res == b'\x03':
                ser.write(b'\x07')
                print(ser.baudrate) #波特率                 
            elif res == b'\x04':
                ser.write(b'\x08')
                print(ser.baudrate) #波特率                                                     
            ser.flushInput()		# 情况接收缓存区
            time.sleep(0.5)			# 软件延时
except KeyboardInterrupt:
    ser.close()

4、上位机

我用的是正点原子的XCOM2.1 (这个官网都有免费的自己去下一下)

树莓派与STM32(rt1064)串口通信

5、运行uart.py代码进行测试

5.1 树莓派发送,上位机接收

运行代码

树莓派与STM32(rt1064)串口通信

 测试结果

树莓派发送 a=ser.write(b'x09')

 上位机接收:x09   (16进制不显示)

树莓派与STM32(rt1064)串口通信

 5.2上位机发送,树莓派接收

上位机发送0x01

树莓派接收数据并反馈数据

 if res == b'\x01\r\n':   #如果接受到 \x01\r\n (注意:树莓派接受数据和发送数据格式请严格要求)
     ser.write(b'\x05')   #树莓派发送 \x05   上位机接受(16进制显示)

树莓派与STM32(rt1064)串口通信

 二、STM32通信

芯片是RT1064  板子是学习版,都是在智能车比赛 逐飞科技 买的(实验室拿学弟的)。

6、配置串口

配置好后,发送是 uart_putchar(USART_1,0x01);    //串口发送函数

接受是 uart_data这个变量,不要用库函数的接收函数,用了,程序会卡住,因为等待接收当然会卡住。


//整套推荐IO查看Projecct文件夹下的TXT文
//打开新的工程或者工程移动了位置务必执行以下操作
//第一步 关闭上面所有打开的文件
//第二步 project  clean  等待下方进度条走完



#include "headfile.h"

uint8 example_rx_buffer;
lpuart_transfer_t   example_receivexfer;
lpuart_handle_t     example_g_lpuartHandle;

uint8 uart_data;
uint8 uart_send;
uint8 dat;

void example_uart_callback(LPUART_Type *base, lpuart_handle_t *handle, status_t status, void *userData)
{
    if(kStatus_LPUART_RxIdle == status)
    {
        //数据已经被写入到了 之前设置的BUFF中
        //本例程使用的BUFF为 example_rx_buffer
        uart_data = example_rx_buffer;//将数据取出
    }
    
    handle->rxDataSize = example_receivexfer.dataSize;  //还原缓冲区长度
    handle->rxData = example_receivexfer.data;          //还原缓冲区地址
}

int main(void)
{
	DisableGlobalIRQ();
    board_init();//务必保留,本函数用于初始化MPU 时钟 调试串口
    	
    uart_init (USART_1, 115200,UART1_TX_B12,UART1_RX_B13);	
    NVIC_SetPriority(LPUART1_IRQn,15);         //设置串口中断优先级 范围0-15 越小优先级越高
    uart_rx_irq(USART_1,1);
	
    //配置串口接收的缓冲区及缓冲区长度
    example_receivexfer.dataSize = 1;
    example_receivexfer.data = &example_rx_buffer;
    
    //设置中断函数及其参数
    uart_set_handle(USART_1, &example_g_lpuartHandle, example_uart_callback, NULL, 0, example_receivexfer.data, 1);
	
	NVIC_SetPriority(PIT_IRQn,10);  //设置中断优先级 范围0-15 越小优先级越高 四路PIT共用一个PIT中断函数
    
    EnableGlobalIRQ(0);
    
    while (1)
    {			
		uart_putchar(USART_1,0x01);	//串口发送函数		
    }
}

7、测试STM32通信

7.1 STM32发送数据,上位机接收数据

STM32发送0x01 ,上位机一直接收。

树莓派与STM32(rt1064)串口通信

7.2 上位机发送数据,STM32接收数据

上位机发送0x09,STM32接收到并发送0x15.

树莓派与STM32(rt1064)串口通信

三、树莓派与STM32通信

 最后其实就把STM32与树莓派用杜邦线连接就行,不用TTL-USB接口。

8、树莓派与STM32通信测试

按键模拟发送信号,STM32向树莓派发送数据,树莓派接收到数据后,向STM32发送命令控制小车电机转动。

按键按下(STM32发送‘0x01')→树莓派接收’\x01',发送‘\x05'→STM32接收到’0x05' 控制小车电机转动。(注意:树莓派与STM32的收发数据格式与上位机不同,最好自己动手实验)四个按键模拟4种信号(前后左右)每个信号控制一个轮子转动。

因为要的人多了,文件我放在百度网盘自取,因为工作了,不能及时回复,还望大家理解,谢谢大家。

链接:https://pan.baidu.com/s/1m2-88RypclIfefkhPGdVFQ 
提取码:8100文章来源地址https://www.toymoban.com/news/detail-427776.html

到了这里,关于树莓派与STM32(rt1064)串口通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 学习————串口通信

    众所周知,串口通信是MCU最基本的通信方式,对于STM32来说也是如此。本文重点讲述STM32单片机的串口通信,主要包括的内容是:通信基础知识、串口通信原理、USART有关寄存器和自定义编写串口通信函数。 通信目的:的将一个设备数据传送到另一个设备,扩展硬件系统。 通

    2024年02月01日
    浏览(33)
  • STM32简单串口通信

    题目要求: 一. 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解\\\"USB/TTL转232\\\"模块(以CH340芯片模块为例)的工作原理。 二. 安装 stm32CubeMX,配合Keil,使用HAL库(或标准库)方式,设置USART1 波特率为115200,1位停止位,无校验位,完成下列任务: 1)STM32系统给上

    2024年01月18日
    浏览(30)
  • 多串口通信(stm32)

    在做项目的过程中我们会同时使用多个串口,如:Esp8266wifl模块,HC-05蓝牙模块,还有串口下载,这些都需要多个串口通信。 串口作为 MCU 的重要外部接口,同时也是软件开发重要的调试手段,其重要性不言而喻。 现在基本上所有的 MCU 都会带有串口, STM32 自然也不例外。

    2024年04月29日
    浏览(31)
  • 【STM32串口通信】

    每天更新STM32学习笔记 串口通信的数据按 位 顺序传输,其数据包由发送设备通过自身的 TXD 接口传输到接收设备的 RXD 接口,故串口通信至少需要两根线(GND和一根信号线)来实现单工通信。若要实现全双工通信,则要三根线(GND和两根信号线)。 串口通信的数据包由起始位、数

    2024年02月04日
    浏览(36)
  • STM32—串口通信

    目录 通信基础知识 通信的本质 时钟信号划分 同步通信 异步通信 通信方式划分 串行通信 串行通信 串行传输 优点 缺点  并行通信 并行通信 并行传输 优点 缺点  通信方向划分 单工 半双工 全双工  总线协议(电气协议) USART  串口通信协议  数据帧格式 USART功能框图  流

    2024年02月04日
    浏览(32)
  • STM32-串口通信(串口的接收和发送)

    本文在于记录自己的学习过程中遇到的问题和总结,各种情况下串口通信在STM32的实际使用方面占有很大的比重,本文主要对 串口通信 做一个简要的总结。 在STM32里,串口通信是USART,STM32可以通过串口和其他设备进行传输 并行数据 ,是 全双工 , 异步时钟控制 ,设备之间是

    2024年02月03日
    浏览(53)
  • ESP32 与 STM32 串口通信

    ESP32 一共有三个 UART 通讯接口,设备号从 0~2,即 UART0,UART1,UART2。 每个UART控制器都是独立配置的,参数包括波特率、数据比特长度、位序、停止位数、奇偶校验位等。 本文章中使用ESP-WROOM-32开发板下载调试串口UART0和UART2(与STM32进行通信)实现。 STM32部分代码参照 正点原

    2024年02月11日
    浏览(30)
  • 【STM32】学习笔记(串口通信)

    串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力。 电平标准

    2024年02月10日
    浏览(28)
  • STM32速成笔记—串口通信

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 串口通信是指外部设备与主控芯片之间,通过数据信号线、地线等,按位进行数据传输的一种通信方式,属于串行通信方式。串行通信是指使用一条数据线依次逐位传输数据

    2024年02月09日
    浏览(43)
  • STM32——串口通信应用篇

            STM32微控制器是一款功能强大的嵌入式系统芯片,广泛应用于各种领域。其中,串口通信是其重要功能之一,可用于与外部设备进行数据交换和控制。本文将介绍STM32串口通信的基本原理、应用场景以及实现方法。         STM32的串口通信是基于UART(通用异步收

    2024年02月04日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包