基于STM32F103C8的USART串口通讯程序

一、串口协议和RS-232标准,RS232电平与TTL电平的区别,"USB/TTL转232"模块的工作原理

1.串口协议

串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

2.RS-232标准

介绍
RS-232-C是美国电子工业协会EIA(Electronic Industry Association)制定的一种串行物理接口标准。RS(Recommended Standard)是英文“推荐标准”的缩写,232为标识号,C表示修改次数。RS-232-C总线标准设有25条信号线,包括一个主通道和一个辅助通道。
RS-232-C标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制。例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。
电气特性
在TxD和RxD上:
逻辑“1”:-3V~-15V
逻辑“0”:+3~+15V
信号和管脚定义
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
设置

串行通信在软件设置里需要做多项设置,最常见的设置包括波特率(Baud Rate)、奇偶校验(Parity Check)和停止位(Stop Bit)。
1)波特率(Baud Rate):
是指从一设备发到另一设备的波特率,即每秒钟多少比特bits per second (bit/s)。典型的波特率是300, 1200, 2400, 9600, 19200, 115200 等bit/s。一般通信两端设备都要设为相同的波特率,但有些设备也可以设置为自动检测波特率。
2)奇偶校验(Parity Check):
是用来验证数据正确性的。奇偶校验一般不使用,如果使用,那么既可以做奇校验(Odd Parity)也可以做偶校验(Even Parity)。
3)停止位(Stop Bit):
是在每个字节数据传输之后发送的,它用来帮助接收信号方硬件重同步。

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

RS232电平
RS232是美国电子工业协会于1962年发布的串行通信接口标准,其中RS为英文“Recomend Standard”的缩写,中文翻译为“推荐标准”,232为标示号。该标准对串行通信的物理接口及逻辑电平都做了规定。

最简单的RS232通信由三条数据线组成,即TxD、RxD和GND。RS232采用负逻辑电平,即-15V-3V代表逻辑"1",+3V+15V代表逻辑"0"。这里的电平,是TxD线(或者RxD线)相对于GND的电压。(关于物理接口,请参考文章:工业串口通信之掀起串口的盖头)

可见,TTL电平和RS232电平,无论是在电压范围还是在极性上(RS232是负逻辑)都有很大的不同。显然,这两种电平是不能直接相连的。

为了把单片机的TTL电平转换成RS232电平,通常我们需要一个专用的转换芯片,比如TI公司的MAX3232或者ST公司的ST3232。

下面这张图,是MAX3232的外观与引脚图:
加粗样式
MAX3232一端与单片机的引脚相连,另一端与RS232的串口相连,完成了TTL电平到RS232电平的转换。其原理图如下:
在这里插入图片描述
TTL电平
TTL电平是TTL电路输出的电平,其中“TTL”是英文“Transistor-Transistor Logic”的缩写,中文翻译为“晶体管-晶体管逻辑”,因此TTL电路就是“晶体管-晶体管逻辑电路”。
在数字电子技术中,使用晶体管(三极管)可以构成不同的逻辑电路,常见的有“TTL与非门电路”、“TTL或非门电路”、“集电极开路与非门电路”等等。下面这张图,是TTL与非门电路的电路图:
在这里插入图片描述
在该电路中,当输入端全是高电平(Ua=Ub=Uc=3.6V)时,T2和T5导通,T3微导通,T4截止,输出电压Uy=0.3V;

当输入端有低电平(例如:Ua=0.3V ,Ub=Uc=3.6V)时,T2和T5截止,T3和T4导通,三极管BE结导通压降为0.7v,则Uy=5V-0.7V-0.7V=3.6V。

我们看到,TTL电路的工作电压是5V,它的输出可以是高电平(3.6V)或者低电平(0.3V)。

由于电平是一个连续变化的电压范围,为了用这种模拟量的电压来表示数字量的逻辑1和逻辑0,TTL电平规定:

对于输出电路:电压大于等于(≥)2.4V为逻辑1;电压小于等于(≤)0.4V为逻辑0;
对于输入电路:电压大于等于(≥)2.0V为逻辑1;电压小于等于(≤)0.8V为逻辑0;

4."USB/TTL转232"模块的工作原理(以CH340芯片为例)

CH340G模块原理图在这里插入图片描述
CH340G_VCC:模块供电点
VCC+5V:从USB取出来的5V电源
VCC+3V3:模块稳压出来的3V3电源(3.0V-3.6V)
(短路VCC+5V到CH340G_VCC:CH340G供电为5V,TTL电平为5V)
(短路VCC+3V3到CH340G_VCC:CH340G供电为3V3,TTL电平为3V3)
CH340G_TXD:串行数据输出
CH340G_RXD:串行数据输入
GND:模块接地(与目标系统地相连)

usb转串口ch340下载电路
在这里插入图片描述
我们通过RTS#和DTR#两个输出信号来控制STM32IC的BOOT0和BOOT1两引脚来选择启动模式,如下表:

BOOT0 BOOT1 启动模式 说明
0 X 用户闪存存储器 用户闪存存储器,也就是FLASH启动
1 0 系统存储器 系统存储器启动,用于串口下载
1 1 SRAM启动 SRAM启动,用于在SRAM中调试代码

当烧写程序时,我们希望BOOT0=1,BOOT1=0。当烧写完成后我们希望BOOT0=0,BOOT1=0(这个模式BOOT1可以是0可以是1,这里我们让BOOT1拉低,即整个过程BOOT1都为L接地,简化电路设计)。
这里我们只需考虑BOOT0的高低。

二、USART介绍

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

USART功能框图
在这里插入图片描述

1.仪器选择

  • STM32核心板103F031C8T6一块
  • usb转串口一块
  • 导线若干,面包板一块

2.操作连线

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

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

在这里插入图片描述

3.软件选取

  • keil 5
  • 野火多功能调试助手
  • CH34_Install_Windows_v3_4
  • mcuisp

(1)安装CH34_Install_Windows_v3_4(驱动)

在这里插入图片描述

(2)查看是否存在端口

将USB转串口连接到电脑上,右击我的电脑,点击管理
在这里插入图片描述
在这里插入图片描述

三、寄存器方式编写hello windows!

1.keil创建项目

具体见ARM汇编程序调试:基于MDK创建纯汇编语言的STM32工程
不同之处:
1)芯片选择STM32F103C8
2)当出现下图时,直接叉掉,不做选择
在这里插入图片描述在文件夹下新建hello.s文件:
在这里插入图片描述

2.编写hello.s文件

;RCC寄存器地址映像             
RCC_BASE            EQU    0x40021000 
RCC_CR              EQU    (RCC_BASE + 0x00) 
RCC_CFGR            EQU    (RCC_BASE + 0x04) 
RCC_CIR             EQU    (RCC_BASE + 0x08) 
RCC_APB2RSTR        EQU    (RCC_BASE + 0x0C) 
RCC_APB1RSTR        EQU    (RCC_BASE + 0x10) 
RCC_AHBENR          EQU    (RCC_BASE + 0x14) 
RCC_APB2ENR         EQU    (RCC_BASE + 0x18) 
RCC_APB1ENR         EQU    (RCC_BASE + 0x1C) 
RCC_BDCR            EQU    (RCC_BASE + 0x20
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值