搜索
热门关键词:
通信工程
物联网
博通
Mathworks
Ubuntu
手机版
官方微博
微信公众号
登录
|
免费注册
首页
新闻
新品
文章
下载
电路
问答
视频
职场
杂谈
会展
工具
博客
论坛
在线研讨会
技术频道:
单片机/处理器
FPGA
软件/编程
电源技术
模拟电子
PCB设计
测试测量
MEMS
系统设计
无源/分立器件
音频/视频/显示
应用频道:
消费电子
工业/测控
汽车电子
通信/网络
医疗电子
机器人
当前位置:
EEChina首页
›
论坛
›
新手园地
返回列表
查看:
1643
|
回复:
0
【开源教程10】疯壳·开源编队无人机-串口(基础收发)
[复制链接]
Linda-x
Linda-x
当前离线
积分
9771
发表于 2022-8-16 10:44:51
|
显示全部楼层
|
阅读模式
贸泽电子有奖问答视频,回答正确发放10元微信红包
关键词:
开源
,
编队
,
无人机
,
串口
,
基础收发
COCOFLY教程
——疯壳·无人机·系列
串口(基础收发)
图1
一、串口简介
在
嵌入式
开发领域讲的串口通常指的是 UART,UART 即为通用异步收发传输器(Universal Asynchronous Receiver/Transmitter)。是一种通用串行数据
总线
, 用于异步通信。该总线双向通信,可以实现全双工传输和接收。
UART 常常用于两个
单片机
之间进行数据传输,如下图所示。
图2
其通信过程如下图所示。
图3
STM32
F103 提供了 3 路串口,支持同步单线通信和半双工单线通信、支持LIN、支持调制解调器操作、智能卡协议和 IrDA SIR ENDEC 规范、具有 DMA 等。可配置为串口的引脚是有限制的,所以在设计硬件
电路
时需要注意哪些引脚可以配置为串口引脚,如下表所示。
串口管脚映射
图4
二、UART 串口通讯协议
串口通讯过程中一帧数据包含了起始位、数据位、停止位以及可有可无的奇偶校验位,除了需要知道这些概念外,还需要理解波特率的概念。
(1)起始位,当未有数据发送时,数据线处于逻辑“1”状态;先发出一个逻辑“0”信号,表示开始传输字符;
(2)数据位,紧接着起始位之后的 8 个数据。从最低位开始传送;
(3)奇偶校验位,一般不用;
(4)停止位,一般为 1 位(也可以是 1.5 位或者 2 位),为高电平。作为结束的标志;
(5)波特率,波特率表示每秒钟传送的码元符号的个数,是衡量数据传送速率的指标。
如下图所示,为一帧串口数据的帧组成。
图5
三、UART 串口寄存器
STM32F103 与串口相关的寄存器众多,这里只讲解重要的几个寄存器。
(1)USART_SR:状态寄存器,如下图所示:
图6
需要了解的位有:TXE:发送寄存器为空;TC:发送完成;RXNE:读取数据寄存器不为空;ORE:上溢错误;FE:帧错误;PE:奇偶校验错误。
(2)USART_DR:该寄存器只有低 8 位有效,而且具有读写操作,有关该寄存器中的数据是要发送的数据还是接受到的数据取决于执行的操作是“读取” 还是“写入”。 如下图所示:
图7
(3)USART_BRR:波特率寄存器,用于设置串口通讯的波特率,如下图所示:
图8
其中在寄存器中会设定相应的值,DIV_Mantissa[11:0]用来设定分频系数的整数部分,DIV_Fraction[3,0]用来设定分频系数的小数部分。
串口的波特率计算公式如下:
公式1
这里的 fPCLKx(x=1、2)是给外设的时钟(PCLK1 用于 USART2、3、4、5, PCLK2 用于USART1,这里 STM32F103CBT6 没有的串口就不讲解)。USARTDIV是一个无符号的浮点数。假设串口波特率为 115200,使用的是串口 1,串口的时钟为 PCLK2 的时钟(即 APB2 总线的时钟)为 72MHz,如下图所示。
图9
根据公式可得:
USARTDIV=72000000/(115200*16)=39.0625
所以小数部分 DIV_Fraction=0.0625*16=1=0x01。
整数部分 DIV_Mantissa=39=0x27。
四、串口基础收发实验
串口收发实验使用 STM32 的串口 1 即 UART1,通过串口模块连接电脑,使用串口调试助手来进行通信,STM32 收到数据后把收到的数据在发回电脑。串口引脚如下图所示:
图10
两个串口引脚分别与 PA9 与 PA10 引脚相连,那么我们就对 PA9 与 PA10 引脚以及串口模块进行配置,配置代码(通过调用官方库)。
代码编写的思路如下:
编程思路
表1
串口初始化代码如下:
图11
串口中断函数代码如下:
图12
设置串口 1 的波特率为 115200,代码如下:
图13
保存、编译、下载代码,把飞控上的 USART1 上接的视觉模块先拔下来, 然后接上
USB
转串口模块,如下图所示:
图14
然后在把 USB 转串模块插到电脑的 USB 口,打开电脑端的串口调试助手, 找到对应的 COM 口(前提是安装了 USB 转串口驱动),设置波特率为 115200, 打开,在串口调试助手的输入框内输入“www.fengke.club”,点发送,然后可以看到串口调试助手收到来自 STM32 的回发信息,也是“www.fengke.club”,如下图所示。
图15
更多完整学习资料和对应开源套件,请登陆官网:“疯壳”
如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系
文件下载请点击:
【3】串口(基础收发).pdf
(889.23 KB)
2022-8-16 10:41 上传
点击文件名下载附件
相关文章
•
无人机展|2025深圳国际低空经济及无人机产业博览会
•
高效视觉方案:AR1335与i.MX8MP的完美结合
•
对苍蝇行为的新认识有助于更好地训练
•
美国众议院通过“无人机法案”,将全面禁售大疆无人机
•
什么是微型丝杆自锁?
•
微型丝杆在精密机械设备中的优势
•
CTIS 2024消费者科技及创新展览会
•
业界首次“面向低空智联网的5.5G无人机可信接入”技术验证完成
•
开放原子校源行走进西部,加速开源人才培养
•
无人机遥控中应用的2.4GHz无线芯片
回复
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
消费电子
电源技术
电工杂谈
汽车电子
FPGA/CPLD
会展活动
音频/视频/显示
系统设计
关于我们
-
服务条款
-
使用指南
-
站点地图
-
友情链接
-
联系我们
电子工程网
© 版权所有
京ICP备16069177号
| 京公网安备11010502021702
快速回复
返回顶部
返回列表