ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

初步串口通信学习

2021-10-30 21:02:54  阅读:202  来源: 互联网

标签:HAL PIN TTL 通信 电平 初步 串口 GPIO


目录

(一)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串口通信

标签:HAL,PIN,TTL,通信,电平,初步,串口,GPIO
来源: https://blog.csdn.net/x1359640470/article/details/120956345

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有