完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
功能实现
项目基础章节,主要讲解树莓派与STM32实现透传,透传的意思是不经过任何通讯设备,直接用杜邦线把两个设备连接起来,形成通讯。我们把这一关先打通之后,想要再去加协议、通讯设备等等,都是要以这个为基础的。 树莓派 物品清单 树莓派3 B+以上的版本、网线(或使用HDMI、WIFI等方式登录)、串口调试助手以及杜邦线。 连接图 实物图 如图所示,这是树莓派的接口定义图,每个接口都有它存在的作用。 GPIO Pins 环境配置 开启ttyS0设备 注意:不要再普通用户组上进行操作,一定要在root用户组上配置,否则将会出错。 进入树莓派之后,输入命令: ls -la /dev/ 如果树莓派再此之前并没有做任何的串口配置,默认红色框内的串口ttyAMA0,这是给蓝牙模块使用的。我们还要启用串口ttyS0。 下面打开串口/dev/ttyS0,在命令框输入: sudo raspi-config 然后选择 Interfacing Options,回车 选择Serial ,然后回车 选择 Yes 然后 Yes 然后退出即可,此时提示树莓派需要重启。 再输入命令: ls -la /dev/ 此时我们能看到,除了之前的 ttyAMA0以外,ttyS0也显示在设备当中,说明前面的配置没问题。 修改映射关系 sudo vim /boot/config.txt 在该文件最后一行添加: dtoverlay=pi3-miniuart-bt 重启树莓派,然后重新在输入ls -la /dev/,查看两者是否对调成功。 关闭Console 在终端中输入: sudo systemctl stop serial-getty@ttyS0.service sudo systemctl disable serial-getty@ttyS0.service 然后配置cmdline.txt,使用的是vim,不会用的可以使用其他编辑器 sudo vim /boot/cmdline.txt 如果打开后,存在 console=serial1,115200 和 kgdboc=serial1,115200,则删除。如果没有,这步骤忽略。 console=tty1 root=PARTUUID=ea7d04d6-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles 模拟测试 python测试 安装python、python3、python-serial sudo apt install python sudo apt install python3 sudo apt install python-serial 启动python IDE 输入 python 打开 python 命令行模式,创建serial实例ser,端口为‘/dev/ttyAMA0',波特率设置为115200bps。 >>> import serial >>> ser = serial.Serial('/dev/ttyAMA0',115200) 检验串口是否打开,若未打开则输入 ser.open()打开 >>> ser.isOpen() True 打开串口调试助手 树莓派往 PC 端发送了 Raspberry 字符,也就是上图蓝框部分,说明树莓派前面的一系列配置可以实现串口透传通讯了。 python代码 最后我们创建并写一个python脚本代码,实现串口的发送和接收: import serial import time ser = serial.Serial('/dev/ttyAMA0', 115200) if ser.isOpen == False: ser.open() # 打开串口 ser.write(b"hello stm32!!n") try: while True: size = ser.inWaiting() # 获得缓冲区字符 if size != 0: res = ser.read(size) # 读取内容并显示 print(res) ser.flushInput() # 情况接收缓存区 time.sleep(0.5) # 软件延时 except KeyboardInterrupt: ser.close() C语言测试 查看 wiringPi 是否安装成功! 创建C文件写一个串口实现例程: #include #include #include #include int main() { int fd; int res; int i; i = 0; if(wiringPiSetup() < 0) { return 1; } fd = serialOpen("/dev/ttyAMA0", 115200); if(fd < 0) { return 1; } printf("serail test start ...n"); serialPrintf(fd, "hello stm32!!n"); while(1) { if(serialDataAvail(fd) != 0) { res = serialGetchar(fd); putchar(res); fflush(stdout); } } serialClose(fd); return 0; } 下面是 PC 端串口调试助手回显功能。 简单透传测试 接下来,我们就直接烧录程序,有关如何把程序下载到STM32当中,请跳转至教程里的相关手册。 连接图 烧录完成后,只需要把树莓派与STM32引脚一一对应连接即可。 实验结果 整体的过程: |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9057 浏览 16 评论
4086 浏览 18 评论
1176浏览 3评论
604浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
597浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2334浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1895浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:56 , Processed in 1.296717 second(s), Total 47, Slave 38 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号