【stm32CubeMX】STM32F103c8t6串口通信
【stm32CubeMX】STM32F103c8t6串口通信发送'hello windows'
- 一、串口通信协议
- 1.UART协议
- 2.RS-232
- 3、RS-485
- 二、USB转TTL
- 三、配置CubeMX并建立工程
- 四、串口通信实现
- 五、keil仿真观察串口输出波形
- 六、总结
- 七、参考资料
一、串口通信协议
串行通信协议包括系统间协议和内部系统协议。
系统间协议:用于通信两个不同设备的系统间协议。就像计算机与微控制器套件之间的通信一样。通过内部总线系统进行通信。常见的有UART协议、USART协议、USB协议。
内部系统协议:内部系统协议用于通信电路板上的两个设备。在使用这些系统内协议时,我们将不使用系统内协议而扩展微控制器的外围设备。使用系统内协议会增加电路复杂度和功耗。使用系统内协议,电路复杂度和功耗降低,成本降低,并且访问数据非常安全。常见的有I2C协议、SPI协议、CAN协议。
串口通信协议有多个标准,比如协议RS-232、RS-422和RS-485。
我们主要讲解RS-232和RS-485。
1.UART协议
UART代表通用异步发送器和接收器。UART协议是具有两个有线协议的串口通信。数据电缆信号线标记为Rx和Tx。串口通信通常用于发送和接收信号。它被传输并与串口通信接收数据,而没有类脉冲。UART接收数据字节并按顺序发送各个位。
USAT协议在嵌入式系统中,通常作为 MCU 的外设; 一般来说,由芯片引脚直接引出的一般是 TTL 电平;而中间接有转换芯片的可能就是RS232电平。详情可查看:串行通讯的标准
UART是半双工协议。半双工意味着具有传输和接收数据的功能,但不能同时进行。大多数控制器在电路板上都有硬件UART。它使用一条数据线来发送和接收数据。它具有一个起始位、一个8位数据和一个停止位,表示8位数据传输一个人的信号是从高到低。例如:电子邮件、短信、对讲机,工业物联网传输设备串口服务器。
STM32的UART特点
1、全双工异步通信;
2、分数波特率发生器系统,提供精确的波特率。发送和接受共用的可编程波特率,最高可达4.5Mbits/s;
3、可编程的数据字长度(8位或者9位);
4、可配置的停止位(支持1或者2位停止位);
5、可配置的使用DMA多缓冲器通信;
6、单独的发送器和接收器使能位;
7、检测标志:① 接受缓冲器 ②发送缓冲器空 ③传输结束标志;
8、多个带标志的中断源,触发中断;
9、其他:校验控制,四个错误检测标志。
2.RS-232
使用RS-232标准的串口设备间常见的通讯结构如下
在上面的通讯方式中,两个通讯设备的"DB9接口"之间通过串口信号线建立起连接,串口信号线中使用"RS-232标准"传输数据信号。由于RS-232电平标准的信号不能直接被控制器直接识别,所以这些信号会经过一个"电平转换芯片"转换成控制器能识别的"TTL校准"的电平信号,才能实现通讯。
电平标准
根据通讯使用的电平标准不同,串口通讯可分为TTL标准及RS-232标准,见表
我们知道常见的电子电路中常使用TTL的电平标准,理想状态下,使用5V表示二进制逻辑1,使用0V表示逻辑0;而为了增加串口通讯的远距离传输及抗干扰能力,它使用-15V表示逻辑1,+15V表示逻辑0。使用RS232与TTL电平校准表示同一个信号时的对比见图 202。
因为控制器一般使用TTL电平标准,所以常常会使用MA3232芯片对TTL及RS-232电平的信号进行互相转换。
特点
(1) 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。
(2) 传输速率较低,在异步传输时,波特率为20Kbps。
(3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4) 传输距离有限,最大传输距离标准值为50英尺,实际上也只能 用在50米左右。
3、RS-485
RS-485总线标准规定了总线接口的电气特性标准即对于2个逻辑状态的定义:正电平在+2V~+6V之间,表示一个逻辑状态;负电平在-2V~-6V之间,则表示另一个逻辑状态;数字信号采用差分传输方式,能够有效减少噪声信号的干扰。但是RS-485总线标准对于通信网络中相关的应用层通信协议并没有做出明确的规定,则对于用户或者相关的开发者来说都可以建立对于自己的通信网络设备相关的所适用的高层通信协议标准-。同时由于在工业控制领域的应用RS-485总线通信网络的现场中,经常是以分散性的工业网络控制单元的数量居多并且各个工业设备之间的分布较远为主,将会导致在现场总线通信网络中存在各种各样的干扰使得整个通信网络的通信效率可靠性不高,而在整个网络中数据传输的可靠性将会直接影响着整个现场总线通信系统的可靠性,因此研究RS-485总线通信系统的通信可靠性具有现实意义。
特点
(1) 接口的信号电平值较高,易损坏接口电路的芯片,又因为与TTL 电平不兼容故需使用电平转换电路方能与TTL电路连接。
(2) 传输速率较低,在异步传输时,波特率为20Kbps。
(3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式, 这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4) 传输距离有限,最大传输距离标准值为50英尺,实际上也只能 用在50米左右。
二、USB转TTL
USB转TTL串口模块是一个非常实用的工具,可以测试模块的UART串口通信和通过单片机的UART接口给单片机等下载程序。
USB转TTL详细使用说明请点击
注意:
1.CH340模块插在USB2.0口时,5V排针输出口电流只有500MA左右,如过要接的功率比较的大模块建议接USB3.0或者给大功率模块单独外接电源且共地。
2.与STM32F103C8T6连接
PA9–RXD
PA10–TXD
3.3V–3V3
GND–GND
3、下载时BOOT0置为1,下载完成后BOOT0置为0(否则下载断电后程序不保存)
三、配置CubeMX并建立工程
1、新建工程;
2、配置时钟源,在RCC里面的HSE配置的是晶振时钟;
3、配置程序烧录引脚SYS为SWD模式;
4、配置GPIO口,配置一个LED灯(我的板子是PA1),起到串口成功接收到数据时的指示作用;
5、配置串口收发引脚
此处我们采用的通信方式为UART通信(异步全双工串口通信),PA9作为TX,PA10作为RX使用。直接在可视框图里点击相应的引脚进行配置。
配置到目前,效果图为:
可以发现,TX和RX两个引脚配置完之后是黄色的,代表还没有配置完毕,下面继续进行配置。
6、在左边的"Connectivity”里面的USART1模式里选择异步全双工通信模式
⮚点击USATR1
⮚设置MODE为异步通信(Asynchronous)
⮚基础参数:波特率为115200 Bits/s。传输数据长度为8 Bit。奇偶检验无,停止位1,接收和发送都使能
⮚GPIO引脚设置 (前面已经设置)USART1_RX/USART_TX
⮚NVIC Settings 一栏使能接收中断
这里简单扩展一下:
STM32F103系列单片机共有5个串口,其中1-3是通用同步/异步串行接口USART(Universal Synchronous/Asynchronous Receiver/Transmitter),4,、5是通用异步串行接口UART(Universal Asynchronous Receiver/Transmitter)。
7、配置时钟树,我还是开到最高的72MHz
8、进行项目设置,最后生成代码,CubeMX部分就大功告成了
9、点击open project打开工程
10、在main.c中加入代码
while (1){HAL_UART_Transmit( &huart1,temp_buf,15,10);}
四、串口通信实现
1、使用usb转ttl下载
2、烧录
3、打开串口助手并设置
4、打开串口
实验成功
五、keil仿真观察串口输出波形
仿真设置
在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 用此功能观察串口输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
但是通过实验发现,观察PA9、PA10波形一直是平的,没有变化,后来发现是没有用LED高低电平来显示,因此这里需要使用IO口连接LED显示,稍微更改代码,设置GPIOC13闪烁;仿真如下
六、总结
本次实验比较顺利,不过因为进行仿真,实验了很多次都没有波形变换,后来发现应该用led灯的闪烁来观察,所以稍微更改代码,设置GPIOC13闪烁。
七、参考资料
串口通讯协议是什么,串行通信协议包括哪些
【stm32CubeMX】STM32F103c8t6串口通信相关推荐
- STM32CubeMX实现串口通信
文章目录 一. 环境 二. 使用STM32CubeMX 1. 安装固件库 2. 工程设置 三. USART串口通信 1. UART函数库介绍 2. 代码编写 3. 最终效果 四. 软件调试 五. 总结 ...
- STM32CubeMX实现串口通信(中断方式)
目录 一.STM32CubeMX工程创建 1.题目要求 2.配置STM32CubeMX工程 2.1 时钟的设置 2.2 USART的配置 二.Keil工程的创建 三.效果展示 总结 一.STM32Cu ...
- STM32F103C8T6串口通信
STM32串口通信 开启串口 一 在ioc配置里面开启串口1 端口 PA9 为TX PA10 为 RX 二 屏蔽Src/syscalls.c文件 右击文件 属性 c/c++ Build Excude ...
- STM32CubeMX实现串口DMA中断通信
文章目录 一. 环境 二. 使用STM32CubeMX 三. USART DMA中断通信 1. UART函数库介绍 2. 编写代码 3. 最终效果 四. 软件调试 五. 总结 一. 环境 硬件:stm ...
- STM32CubeMX实现串口中断通信
文章目录 一. 环境 二. 使用STM32CubeMX 三. USART中断通信 1. UART函数库介绍 2. 编写代码 3. 最终效果 四. 软件调试 五. 总结 一. 环境 硬件:stm32f1 ...
- STM32CubeMX实现USART串口通信
文章目录 一.实验环境 二.STM32CubeMX的安装 三.使用STM32CubeMX完成串口通信 1. 安装固件库 2.工程设置 四.USART串口通信 1. UART函数库介绍 2.代码编写 3 ...
- 【嵌入式系统基础实验一】-----led流水灯及串口通信的HAL库方式和寄存器编程方式实现,输出波形检测
文章目录 1.实验知识点简要解析 1.1串口通信协议 1.2 RS232.485电平与TTL电平的区别 1.3 USB/TTL转232"模块 2.LED流水灯的寄存器地址 和HAL库这两种方 ...
- STM32F103C8T6实现串口通信
目录 前言 一. STM32F103C8T6是什么? 二.准备相应工作 1.下载安装相关程序 2.安装HAL库 3.创建项目 三 调试程序 四 电路连接 1 电路连接 2 烧录程序 五 使用汇编完成 ...
- 【嵌入式系统开发15】STM32F103C8T6下通过定时器Timer方式实现时间的精准控制,实现串口通信并让LED等周期性地闪烁
本文目的是主要介绍通过STM32F103C8T6采用定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务.请设置一个5秒的 ...
最新文章
- 2017 数据驱动大会赠票赠书名单出啦!
- boost::stl_interfaces模块实现节点迭代器的测试程序
- shell脚本执行返回的状态码
- linux下练习 c++ 关联式容器multimap特性
- Andrew Ng教你如何引领公司进入AI时代
- SAP License:SAP FI/CO 基本概念
- 【matlab深度学习工具箱】classificationLayer参数详解
- 使用Ballerina CLI工具开发Ballerina项目
- 如何免ROOT,实现安卓设备远程控制?
- 【码云学习02】Git基本命令
- 操作系统第九次部分作业题答案
- Windows终端如何进行复制粘贴
- 【Java】自定义异常
- python 实现图片加密
- 解决webpack打包错误问题
- 如何借助内容营销快速提升新品流量[淘宝erp、打单发货接口]
- DAC8822QBDBTR
- 为什么温度越高,少子浓度越高?
- 告别低效工作,帮你重新找回工作的掌控感
- 大风车动画(css)