当前位置:   article > 正文

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

树莓派32通信

目录

一、树莓派通信

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相连接 

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

 

2.3修改串口映射关系

输入sudo nano /boot/config.txt

sudo nano /boot/config.txt

末行添加 dtoverlay=pi3-miniuart-bit

 输入ls -l /dev查看设备

3、树莓派代码

 Xshell7和MobaXterm

uart.py代码如下

  1. # -*- coding: utf-8 -*-
  2. import serial
  3. import time
  4. ser = serial.Serial('/dev/ttyAMA0', 115200) #打开串口设备
  5. if ser.isOpen == False:
  6. ser.open() # 打开串口
  7. a=ser.write(b"x09")
  8. print(a)
  9. try:
  10. while True:
  11. size = ser.inWaiting() # 获得缓冲区字符
  12. if size != 0:
  13. res = ser.read(size) # 读取内容并显示
  14. print(res)
  15. print(ser.bytesize) #字节大小
  16. if res == b'\x01\r\n':
  17. ser.write(b'\x05')
  18. print(ser.baudrate) #波特率
  19. elif res == b'\x02':
  20. ser.write(b'\x06')
  21. print(ser.baudrate) #波特率
  22. elif res == b'\x03':
  23. ser.write(b'\x07')
  24. print(ser.baudrate) #波特率
  25. elif res == b'\x04':
  26. ser.write(b'\x08')
  27. print(ser.baudrate) #波特率
  28. ser.flushInput() # 情况接收缓存区
  29. time.sleep(0.5) # 软件延时
  30. except KeyboardInterrupt:
  31. ser.close()

4、上位机

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

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

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

运行代码

 测试结果

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

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

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

上位机发送0x01

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

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

 二、STM32通信

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

6、配置串口

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

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

  1. //整套推荐IO查看Projecct文件夹下的TXT文
  2. //打开新的工程或者工程移动了位置务必执行以下操作
  3. //第一步 关闭上面所有打开的文件
  4. //第二步 project clean 等待下方进度条走完
  5. #include "headfile.h"
  6. uint8 example_rx_buffer;
  7. lpuart_transfer_t example_receivexfer;
  8. lpuart_handle_t example_g_lpuartHandle;
  9. uint8 uart_data;
  10. uint8 uart_send;
  11. uint8 dat;
  12. void example_uart_callback(LPUART_Type *base, lpuart_handle_t *handle, status_t status, void *userData)
  13. {
  14. if(kStatus_LPUART_RxIdle == status)
  15. {
  16. //数据已经被写入到了 之前设置的BUFF中
  17. //本例程使用的BUFF为 example_rx_buffer
  18. uart_data = example_rx_buffer;//将数据取出
  19. }
  20. handle->rxDataSize = example_receivexfer.dataSize; //还原缓冲区长度
  21. handle->rxData = example_receivexfer.data; //还原缓冲区地址
  22. }
  23. int main(void)
  24. {
  25. DisableGlobalIRQ();
  26. board_init();//务必保留,本函数用于初始化MPU 时钟 调试串口
  27. uart_init (USART_1, 115200,UART1_TX_B12,UART1_RX_B13);
  28. NVIC_SetPriority(LPUART1_IRQn,15); //设置串口中断优先级 范围0-15 越小优先级越高
  29. uart_rx_irq(USART_1,1);
  30. //配置串口接收的缓冲区及缓冲区长度
  31. example_receivexfer.dataSize = 1;
  32. example_receivexfer.data = &example_rx_buffer;
  33. //设置中断函数及其参数
  34. uart_set_handle(USART_1, &example_g_lpuartHandle, example_uart_callback, NULL, 0, example_receivexfer.data, 1);
  35. NVIC_SetPriority(PIT_IRQn,10); //设置中断优先级 范围0-15 越小优先级越高 四路PIT共用一个PIT中断函数
  36. EnableGlobalIRQ(0);
  37. while (1)
  38. {
  39. uart_putchar(USART_1,0x01); //串口发送函数
  40. }
  41. }

7、测试STM32通信

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

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

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

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

三、树莓派与STM32通信

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

8、树莓派与STM32通信测试

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

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

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

链接:https://pan.baidu.com/s/1m2-88RypclIfefkhPGdVFQ 
提取码:8100

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号