初步串口通信学习

目录

(一)RS-232与TTL区别和USB/TTL转232"的工作原理

串口通讯
串口通讯 (Serial Communication)是一种设备间非常常用的串行通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。 通讯协议,我们以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。

1.RS-232与TTL电平区别

RS-232

是现在主流的串行通信接口之一。具有信号线少、灵活的波特率选择、采用负逻辑传送等特点。
同时不足之处主要有以下四点:
1.接口的信号电平值较高,易损坏接口电路的芯片。RS232接口任何一条信号线的电压均为负逻辑关系。即:逻辑“1”为-3— -15V;逻辑“0”:+3— +15V ,噪声容限为2V。即要求接收器能识别高于+3V的信号作为逻辑“0”,低于-3V的信号作为逻辑“1”,TTL电平为5V为逻辑正,0为逻辑负 。与TTL电平不兼容故需使用电平转换电路方能与TTL电路连接。
2.传输速率较低,在异步传输时,比特率为20Kbps;因此在51CPLD开发板中,综合程序波特率只能采用19200,也是这个原因。
3.接口使用一根信号线和一根信号返回线与地线构成共地的传输形式,这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
4.传输距离有限,最大传输距离标准值为50英尺。
初步串口通信学习
1 载波检测 DCD
2 接收数据 RXD
3 发送数据 TXD
4 数据终端准备好 DTR
5 信号地 SG
6 数据准备好 DSR
7 请求发送 RTS
8 清除发送 CTS
9 振铃提示

具体区别

1.TTL电平标准
输出 L: 《0.8V ; H:》2.4V。
输入 L: 《1.2V ; H:》2.0V
RS232标准
逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V

-TTL电平信号之所以被广泛使用,原因是因为:通常我们采用二进制来表示数据。而且规定,+5V等价于逻辑“1”,0V等价于逻辑“0”。这样的数据通信及电平规定方式,被称做TTL(晶体管-晶体管逻辑电平)信号系统。这是计算机处理器控制的设备内部各部分之间通信的标准技术。
RS232是个人计算机上的通讯接口之一,通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25)的形态出现,一般个人计算机上会有两组 RS-232 接口,分别称为 COM1 和
COM2。RS232的电平标准为+12V为逻辑负,-12为逻辑正,TTL电平为5V为逻辑正,0为逻辑负。

2.USB转串口原理

USB主机检测到USB转串口设备插入后,首先会对设备复位,然后开始USB枚举过程。USB枚举时过程会获取设备描述符、配置描述符、接口描述符等。描述符中会包含USB设备的厂商ID,设备ID和Class类别等信息。操作系统会根据该信息为设备匹配相应的USB设备驱动。
USB虚拟串口的实现在系统上依赖于USB转串口驱动,一般由厂家直接提供,也可以使用操作系统自带的CDC类串口驱动等。驱动主要分为2个功能,其一注册USB设备驱动,完成对USB设备的控制与数据通讯,其二注册串口驱动,为串口应用层提供相应的实现方法。

(二)LED点灯实验

1.cubeMX项目设置

在part name里选择自己的芯片start project:

我的为STM32F103ZE

初步串口通信学习
点击system core,SYS,在debug下选择serial wire:
初步串口通信学习

时钟设置

接下来观察时钟架构,APB2总线的时钟由hse控制,同时在这个界面得把PLLCLK右边选上:
初步串口通信学习
点击相应的引脚设置输出三个,是PA4,PB9,PA0:
初步串口通信学习

初步串口通信学习

项目完成创建

配置好自己的路径和项目名,IDE那项改为MDK-ARM:
初步串口通信学习

2.keil中编译项目

CubeMX中code generate选择生成初始化.c/.h文件后点击generate code,选择open project
初步串口通信学习
系统自动打开keil
初步串口通信学习

main函数 代码逻辑

SystemClock_Config();//系统时钟初始化
  MX_GPIO_Init();//gpio初始化
  while (1)
  {		
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4亮灯
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);//PA0熄灯
		HAL_Delay(1000);//延时1s
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_RESET);//PB9亮灯
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET);//PCA0熄灯
		HAL_Delay(1000);//延时1s		
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
		HAL_GPIO_WritePin(GPIOB,GPIO_PIN_9,GPIO_PIN_SET);//PB9熄灯
		HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET);//PA0亮灯
		HAL_Delay(1000);//延时1s
	}

build debug
初步串口通信学习

运行效果如下

初步串口通信学习

初步串口通信学习

(三)USART串口通讯实验

USART 满足外部设备对工业标准 NRZ 异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。USART支持同步单向通信和半双工单线通信;还支持局域互连网络 LIN、智能卡(SmartCard)协议与 lrDA(红外线数据协会) SIR ENDEC规范。
USART支持使用 DMA,可实现高速数据通信。

1.CubeMX中创建新项目

初步串口通信学习
选择自己的型号
初步串口通信学习

RCC和USART1配置

RCC:
初步串口通信学习
USART1:
初步串口通信学习

项目设置

项目名、项目存放路径、使用编辑器等
初步串口通信学习
Code Generate配置并生成项目:
初步串口通信学习
初步串口通信学习

2.keil完善代码

main函数while循环前添加

char data[] = "\nHello windows!\n";

while循环中:

HAL_UART_Transmit(&huart1, (uint8_t *)data, 15, 0xFFFF);
HAL_Delay(1000);


初步串口通信学习

烧录到板中并开启串口

初步串口通信学习
初步串口通信学习

结果

使用野火多功能调试助手
初步串口通信学习

补充:(二)-2 观察LED使用GPIO端口的输出波形

打开LED_1实验项目

1.debug设置-使用软件仿真
初步串口通信学习
2.debug
选择逻辑分析
初步串口通信学习
输入自己的接口 我的为A0 A4 B9

在Signal Display中修改为Bit

初步串口通信学习

运行显示波形

初步串口通信学习

小结

初步了解了嵌入式系统中对串口的利用和串口通信的原理,提高了对嵌入式以及STM32的学习兴趣。

链接

RS232电平与TTL电平转换
STM32串口通信

上一篇:16 TTL电路系列(1)


下一篇:ACL标准访问控制列表