本文主要介绍流水灯实验和串口通信的实验过程,对串口协议和RS-232标准,RS232电平与TTL电平的区别,以及"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理这些知识也有了一定的涉及。
目录
一、了解串口协议以及"USB/TTL转232"模块的工作原理
二、基于stm32CubeMX,配合Keil,重做流水灯程序并且实现串口通信
2、完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式)
一、了解串口协议以及"USB/TTL转232"模块的工作原理
1、串口协议
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。
按照数据的传输方向,串口通信分为:
- 单工:数据传输只支持数据在一个方向上传输;
- 半双工:允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口;
- 全双工:允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。
按照通信方式,分为
- 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口。
- 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线。
在同步通信中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通信中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。
在异步通信中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通信中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。
总结:在同步通信中,数据信号所传输的内容绝大部分是有效数据,而异步通信中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。
2、RS-232标准
RS-232标准接口(又称EIA RS-232)是常用的串行通信接口标准之一,它是由美国电子工业协会(EIA)联合贝尔系统公司、调制解调器厂家及计算机终端生产厂家于1970年共同制定,其全名是“数据终端设备( DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准”。RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。RS-232只限于PC串口和设备间点对点的通信。RS-232串口通信最远距离是50英尺。
3、RS232电平与 TTL电平的区别
一、主体不同
1、TTL232:晶体管-晶体管逻辑集成电路。
2、RS232:数据终端设备( DTE)和数据通信设备(DCE)之间串行二进制数据交换接口技术标准。
二、数字含义不同
1、TTL232:TTL232的0是用0v表示。1是用5V表示。
2、RS232:0是用+3V–+15V表示,1是用-3V—15V表示。
三、传输不同
1、TTL232:是以某个固定的速率去传输的,但是可以传输多个bit
2、RS232:以固定的某个速率(1200bps,9600bps,115200bps等),一次只能只传输一个bit
4、“USB/TTL转232”模块的工作原理
1、模块特点
CH340C USB转TTL模块以CH340C芯片为核心,内部自带晶振,最高波特率可达2Mbps,软件兼容CH341驱动,过流保护,引出相应的通讯接口与电源接口,通讯接口带有指示灯指示工作状态,通讯稳定,体积小。
- 全速USB驱动,兼容USB2.0
- 硬件全双工串口,内置收发缓冲区
- 支持波特率50bps~2Mbps
- 输出TTL电平3.3V,兼容5V的IO电平
2、模块接口引脚
3、模块用途
电脑USB端是USB电平,单片机的信号是TTL电平,两者的电平不同是无法进行通讯的,需要通过转换才能实现相互通讯。CH340C USB 转TTL模块就是实现USB电平与TTL电平相互转换的模块。USB:采用VCC、GND、D+、D-传输,电脑上的插口就是USB接口。
TTL:一般指单片机的逻辑电平,不同单片的供电的系统TTL的电平不一样,3.3V单片的TTL电平就是高电平3.3V(逻辑1),低电平0V(逻辑0)。
在调试单片机程序的时候,想了解程序的执行情况或相关信息,一般简单的做法就是用串口把信息发送给电脑,电脑接收到再通过上位机(串口调试助手)显示出来。但是单片机串口发送的信号是TTL电平,电脑能接收到的信号是USB电平,两者无法直接通讯。USB转TTL模块可以把串口发送的TTL信号转换成USB信号再发送给电脑,电脑就可以接收到单片机发送过来的信号并在上位机(串口调试助手)上显示出来。
4、硬件介绍