IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32的串口通信及实例 -> 正文阅读

[嵌入式]STM32的串口通信及实例


一、 串口协议

串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式

1.1 RS232标准

RS-232(又称EIA RS-232)是常用的串行通信接口标准之一,由美国电子工业协会(EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定。它具有信号线少、灵活的波特率选择、采用负逻辑传送和传送距离较远等特点。
RS-232C 标准(协议)的全称是 EIA-RS-232C 标准,其中EIA (Electronic Industry Association)代表美国电子工业协会,RS(recommended standard)代表推荐标准,232是标识号,C代表RS232的最新一次修改(1969),在这之前,有RS232B、RS232A。它规定连接电缆和机械、电气特性、信号功能及传送过程。常用物理标准还有EIARS-422A、EIA RS-423A、EIARS-485。这里只介绍EIA RS-232C(简称232,RS232)。例如,目前在IBM PC机上的COM1、COM2接口,就是RS-232C接口。

1.2RS485标准

RS-485接口具有良好的抗噪声干扰性,长的传输距离和多站能力等上述优点就使其成为首选的串行接口。因为RS485接口组成的半双工网络,一般只需二根连线,所以RS485接口均采用屏蔽双绞线传输。 RS485接口连接器采用DB-9的9芯插头座,与智能终端RS485接口采用DB-9(孔),与键盘连接的键盘接口RS485采用DB-9(针)。
在RS485标准下,数字信号采用差分传输方式,能够有效减少噪声信号的干扰。但是RS-485总线标准对于通信网络中相关的应用层通信协议并没有做出明确的规定,则对于用户或者相关的开发者来说都可以建立对于自己的通信网络设备相关的所适用的高层通信协议标准-。同时由于在工业控制领域的应用RS-485总线通信网络的现场中,经常是以分散性的工业网络控制单元的数量居多并且各个工业设备之间的分布较远为主,将会导致在现场总线通信网络中存在各种各样的干扰使得整个通信网络的通信效率可靠性不高,而在整个网络中数据传输的可靠性将会直接影响着整个现场总线通信系统的可靠性,因此研究RS-485总线通信系统的通信可靠性具有现实意义

二、三种电平

2.1取值范围

RS232电平,RS485电平和TTL电平的的逻辑值取值范围不同

电位取值
RS232逻辑0的取值在-15v到-3v,逻辑1的取值在3v到15v
RS485逻辑0的取值在-6v到-2v,逻辑1的取值在2v到6v
TTL逻辑0的取值为0v,逻辑1的取值为+5v

2.2 USB/TTL转232(CH340)

在串口通信的时候,单片机(下位机)上的电压是TTL电位,电脑(上位机)上的电压是USB电位的,因此有必要了解一下以上电位相互转换原理
这里介绍一种可以直接完成转换的芯片CH340。
CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
在串口方式下,CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。
在红外方式下,CH340 外加红外收发器即可构成USB 红外线适配器,实现SIR 红外线通讯。
引脚图如下:
在这里插入图片描述
接口电路图如下
在这里插入图片描述

三、实现串口通信

下面用以上介绍的CH340芯片和STM32的最小开发板完成一次串口通信的实例。

3.1实验器材

CH340
在这里插入图片描述
最小开发板
在这里插入图片描述
杜邦线
在这里插入图片描述

3.2连接方式

在这里插入图片描述

3.3软件实现

1.初始化
首先要初始化的是时钟,这里用到了USART1,在APB2总线下,同时还有TX,RX串口,分别对应A9,A10,所以还需要使能GPIOA时钟。
然后就是分别配置USART模块和GPIO模块
GPIO模块,根据要求需要输出模式配置为复用推挽输出,输出引脚为PA9,输出速率一般选择50MHZ
USART1模块,设置波特率为115200,起始位和停止位都是一位,无校验位,帧总长度位8位,选择模式位发送模式
具体代码如下
`void Serial_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_Init(USART1, &USART_InitStructure);

USART_Cmd(USART1, ENABLE);

}`

2.发送函数
在头文件stm32f10x.h中有发射一个比特的函数Serial_SendByte()
,如果我们想发射字符串,就需要在这上面继续写一个函数

void Serial_SendString(char *String)
{
uint8_t i;
for (i = 0; String[i] != ‘\0’; i ++)
{
Serial_SendByte(String[i]);
}
}

通过这个函数,我们就可以发送任意字符串了
在主函数上调用该函数发送 “hello Windows”
在这里插入图片描述

3.4烧录

stm32芯片烧录一般有两种方式,一种是该公式生产的STlink的虚拟调制器,还有一种是用USB转TTL接口,即CH340。我们采用后者。
烧录前,需要先了解stm32的三种启动模式
BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模式。
BOOT1=0 BOOT0=1 从系统存储器启动,这种模式启动的程序功能由厂家设置。
BOOT1=1 BOOT0=1 从内置SRAM启动,这种模式可以用于调试。
所以烧录的时候,BOOT0需要置一,烧录完后如果想打开串口助手查看程序运行需要把BOOT0置零,回归正常工作状态
编译代码前需要先勾选output选择中生成.hex文件的选项
在这里插入图片描述
在烧录软件中选择hex文件的目录
在这里插入图片描述
完成后开始编程即可,编程后需按压芯片复位键才可以完成烧录。

3.5结果显示

打开串口助手,调整波特率为115200,找到对应串口号(若无,则需要安装串口驱动),每按压一次复位键,串口会弹出“hello,windows”
在这里插入图片描述
实验完成

四、观察串口输出的波形

先配置调整选项
在这里插入图片描述
打开调整界面
在这里插入图片描述
选择串口USART1
在这里插入图片描述

打开波形分析仪

在这里插入图片描述
加入串口USART1_SR,类型选bit
在这里插入图片描述
开始调试
在这里插入图片描述
结果如下在这里插入图片描述

五、总结

本次学习理论与实践结合,细节较多,参考来源较广,需仔细甄选,认真识别。

六、参考

1.https://blog.csdn.net/lxm920714/article/details/123255457
2.https://blog.csdn.net/m0_52869979/article/details/120978967
3.https://blog.csdn.net/ydgd118/article/details/120114652
4.https://www.bilibili.com/video/BV1th411z7sn?p=26&vd_source=2ed968bffd4cf5758431b45852b18164

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-22 21:31:28  更:2022-10-22 21:34:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 2:48:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计