文章目录

  • 前言
  • 一、串口协议和RS-232、485标准
    • 1.串口通信协议的概念
    • 2.常用协议
      • 2.1 RS-232
      • 2.2 RS-485
    • 3.RS232、485电平与TTL电平的区别
  • 二、STM32的USART串口通讯程序
    • 1.USART介绍
    • 2.操作连线
    • 3. STM32CubeMX配置环境
    • 4.串口代码
    • 5.烧录
    • 6.串口通讯
  • 三、串口发送波形分析

前言

实验环境及仪器

1、stm32核心板103f一块
2、usb转串口一块
3、面包板一块,导线若干
4、Keil5
5、STM32CubeMx
6.野火多功能调试助手
7.mcuisp

一、串口协议和RS-232、485标准

1.串口通信协议的概念

  • 串口在嵌入式系统当中是一类重要的数据通信接口,其本质功能是作为 CPU 和串行设备间的编码转换器。
  • 当数据从 CPU 经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。
  • 应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。典型地,串口用于 ASCII 码字符的传输。
  • 通信使用3根线完成:(1)地线,(2)发送数据线,(3)接收数据线。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
  • 对于两个进行通行的端口,这些参数必须匹配:波特率是一个衡量通信速度的参数,它表示每秒钟传送的 bit 的个数;数据位是衡量通信中实际数据位的参数,当计算机发送一个信息包,标准的值是 5,7 和 8 位。
  • 奇偶校验位是串口通信中一种简单的检错方式,有四种检错方式——偶、奇、高和低,也可以没有校验位。

2.常用协议

2.1 RS-232

RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。


从计算机串口截面图。RS-232针脚的功能:
数据:

  • TXD(pin 3):串口数据输出(Transmit Data)
  • RXD(pin 2):串口数据输入(Receive Data)
    握手:
  • RTS(pin 7):发送数据请求(Request to Send)
  • CTS(pin 8):清除发送(Clear to Send)
  • DSR(pin 6):数据发送就绪(Data Send Ready)
  • DCD(pin 1):数据载波检测(Data Carrier Detect)
  • DTR(pin 4):数据终端就绪(Data Terminal Ready)
    地线:
  • GND(pin 5):地线
    其它
  • RI(pin 9):铃声指示

2.2 RS-485

RS-485(EIA-485标准)是RS-422的改进,因为它增加了设备的个数,从10个增加到32个,同时定义了在最大设备个数情况下的电气特性,以保证足够的信号电压。有了多个设备的能力,你可以使用一个单个RS-485口建立设备网络。出色抗噪和多设备能力,在工业应用中建立连向PC机的分布式设备网络、其他数据收集控制器、HMI或者其他操作时,串行连接会选择RS-485。RS-485是RS-422的超集,因此所有的RS-422设备可以被RS-485控制。RS-485可以用超过4000英尺的线进行串行通行。

DB-9 引脚连接

\ 1 2 3 4 5 /
\ 6 7 8 9 /

从计算机连出的线的截面。
RS-485的引脚的功能
数据:1(DATA-)2(DATA+)
地线:5

3.RS232、485电平与TTL电平的区别

通讯标准 5v TTL RS232 RS485
电平标准发送端 逻辑1:2.4v~5v
逻辑0:0~0.5v
逻辑1:-15v~-3v
逻辑0:+3v~+15v
逻辑1:-6v~-2v
逻辑0:+2v~+6v
传输方式 计算机处理器控制的设备内部各部分之间通信的标准技术。 采用不平衡传输方式,即所谓单端通讯 采用平衡传输,即差分传输方式(使用两根线的电压差表示数据)
传输距离 适合本地设备之间的通信,传输距离一般不超过20m。 传输距离为几十米到上千米。
传输速度 传输速率较低,最高波特率为19200bps。 数据最高传输速率为10Mbps。
实用性 接口电路只允许一对一通信,信号电平较高,容易损坏接口电路的芯片;与TTL电路的电平也不兼容,影响其通用性;使用三线。 接口接口电平低,不易损坏器件,且该平与TTL电平兼容,可方便与TTL电平兼容; RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好;RS-485接口在总线上是允许连接名达128个收发器使用两线

二、STM32的USART串口通讯程序

1.USART介绍

用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(Universal Asynchronous Receiver and Transmitter),它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。串行通信一般是以帧格式传输数据,即是一帧一帧的传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。USART 就是对这些传输参数有具体规定,当然也不是只有唯一一个参数值,很多参数值都可以自定义设置,只是增强它的兼容性。

USART功能框图

2.操作连线

USB转串口原理图:

选取接口为GND、RXD、TXD、3V3
STM32核心板选取端口
G、3.3、A9、A10

TXD:发送数据输出引脚
RXD:接收数据输出引脚

对应连线:

RXD-A9
TXD-A10
3V3-3.3v
GND-GND

3. STM32CubeMX配置环境

双击选择使用STM32F103C8芯片

选择USART1

Mode选择异步通信(Asynchronous) 波特率为115200,1位停止位,无校验位

中断设置

创建项目

生成独立的.c和.h文件

右上角GENERATE CODE创建工程文件

4.串口代码

在main函数中添加函数

int main(void)
{int i=0;uint8_t hello[20]="hello windows\n";/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (i<2){HAL_UART_Transmit(&huart1,hello,20,100000);i++;//发两遍hello windows/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

我们要使用的是查询方式来进行串口通讯,我们需要使用HAL库中HAL_UART_Transmit()函数

5.烧录

注意烧录时芯片BOOTO置于1

6.串口通讯

打开串口调试助手,调试时芯片BOOTO要置0,也需要按RESET键

将参数配置好后,查看结果

三、串口发送波形分析

(1)Debug配置

(2)设置晶振频率

(3)选择查看的寄存器

(4)开始调试
点击run或者直接点击F5执行代码观察波形

STM32的USART串口通信小程序相关推荐

  1. mysql与串口通信_虚拟机串口与主机串口通信·小程序(下)

    上次说到的,不能做到实时通信.那么开两个进程就可以了,一个用来监听是否有消息传来,一个用来等待用户输入.那么,先来复习一下进程的相关概念. 进程结构 linux中进程包含PCB(进程控制块).程序以及 ...

  2. STM32的USART串口通信

    1.简介 (1)串口协议 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯 ...

  3. STM32的USART串口通讯程序(查询方式)

    STM32的USART串口通讯程序(查询方式) 文章目录 STM32的USART串口通讯程序(查询方式) 一.USART介绍 1.异步通信: 2.同步通信: 二.CubeMX创建项目 1.点击ACCE ...

  4. 在 stm32CubeMX下生成程序完成流水灯以及完成STM32的USART串口通讯程序实现STM32系统给上位机(win10)连续发送“hello windows”

    目录 一.STM32CubeMX简介及安装 二.利用STM32CubeMX生成代码 1.创建项目 2.配置芯片 3.导出项目 ​ 三.Keil中补充代码完善功能 四.在Keil中观察实验波形 五.US ...

  5. 了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形

    文章目录 前言 一.串口协议 1.RS-232 2.485标准 二.RS-232.485和TTL电平 1.RS-232电平 2.485 3.TTL电平 4.区别 三.USB/TTL转232 1.CH3 ...

  6. STM32平台的USART串口通信

    本文目的是编写stm32串口通信程序,实现stm32上电自动循环发送hello LYJ!!!,并可通过上位机控制stm32串口发送与否.通过亲自做一下USART串口通信实验,学习如何使用stm32平台 ...

  7. STM32的USART串口通讯程序

    文章目录 一.STM32 USART串口通信 1.串口通信简介 1.1.物理层 1.2.协议层 2.STM32 的 USART 简介 二.STM32的USART串口通讯程序 1.创建项目 2.添加.s ...

  8. 【嵌入式系统开发11】串口通讯“小试牛刀”——完成一个STM32的USART串口通讯程序

    本文目的是主要介绍通过STM32F103C8T6完成一个STM32的USART串口通讯程序,在没有示波器条件下,使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形. 文章目录 前言 (一)需求分析 ...

  9. windows通信端口初始化失败_STM32实例——USART串口通信实验(二)

    USART 串口通信配置步骤 在上面的介绍中,可能有的朋友很不理解,不过没有关系,下面我们讲解如何使用库函数对 USART 进行配置.这个也是在编写程序中必须要了解的.具体步骤如下:(USART 相关 ...

最新文章

  1. IANA定义的常见服务的端口号列表
  2. ACMNO.33 C语言-最大值3 分别用函数和带参的宏,从三个数中找出最大的数。
  3. UA MATH524 复变函数2 指数、对数与三角函数
  4. uva 11269——Setting Problems
  5. AngularJs ngIf、ngSwitch、ngHide/ngShow
  6. mysql 正无穷字符_mysql 字符串函数收集比较全
  7. 原来国家的名字可以如此的浪漫~~!
  8. sap 导出系统所有的单位_导出SAP系统表结构及数据供HANA使用
  9. 编程实战:如何管理代码里的常量
  10. mysql使用已有的数据库_使用SQL操作MySQL数据库
  11. 微软欲打造开发者联盟!
  12. window10 无法访问 Toshiba e-studio355 扫描打印一体机的机器扫描文件夹
  13. C语言libiconv编程,libIconv.lib编码库的生成和使用
  14. mysql的auto_increment报错1467
  15. Unity 制作伪全息
  16. 【Scala笔记——道】Scala 隐式Implicit
  17. 和导师的微信聊天翻车现场,你一定经历过
  18. 元器件采购系统的主要功能,数字化采购助力元器件企业飞速发展
  19. 还在抠图?百万张PNG透明图片免费下载!
  20. 知名IT企业待遇一览表

热门文章

  1. 官网下载java并安装
  2. HTML5 之 定位总结
  3. 示波器的基本使用 USBee逻辑分析仪的使用 USBee AX-Pro示波器的使用
  4. 中职计算机应用基础教学进度,[形成性评价在中职《计算机应用基础》教学中的应用]计算机应用基础 2018...
  5. python隐函数画图以及匿名函数lambda使用.md
  6. 计算机有关的职业英语,职业有哪些英语单词
  7. 三极管开关电路限流电阻的选取
  8. 学习笔记|latency 和 delay 的使用区别
  9. 如何写出漂亮的 数字字体
  10. 叮咚买菜自建MongoDB上云实践