串口通信作业

本文介绍了串口通信协议与RS-232标准,探讨了RS232与TTL电平的区别,并讲解了CH340芯片在USB/TTL转232中的作用。同时,通过使用STM32CubeMX与Keil,分别展示了如何配置GPIO实现LED闪烁和USART串口通讯,以及如何在无示波器情况下使用Keil的逻辑分析仪进行时序状态分析。
摘要由CSDN通过智能技术生成

一. 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别;了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理。

1.1串口协议和RS-232标准
串口协议:串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。
串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232RS-422RS-485

RS-232:RS-232是现在主流的串行通信接口之一。由于RS232接口标准出现较早,难免有不足之处,主要有以下四点:
(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英尺,实际上也只能用在15米左右。
1.2RS-232电平和TTL电平

根据通讯使用的电平标准不同,串口通讯可分为TTL标准及RS-232标准:在这里插入图片描述
它们的具体区别:
1.电平的上限和下限定义不一样,CMOS具有更大的抗噪区域。 同是5伏供电的话,ttl一般是1.7V和3.5V的样子,CMOS一般是2.2V,2.9V的样子,不准确,仅供参考。

2.电流驱动能力不一样,ttl一般提供25毫安的驱动能力,而CMOS一般在10毫安左右。

3.需要的电流输入大小也不一样,一般ttl需要2.5毫安左右,CMOS几乎不需要电流输入。

4.很多器件都是兼容TTL和CMOS的,datasheet会有说明。如果不考虑速度和性能,一般器件可以互换。但是需要注意有时候负载效应可能引起电路工作不正常,因为有些ttl电路需要下一级的输入阻抗作为负载才能正常工作。

TTL电路和CMOS电路的逻辑电平
VOH: 逻辑电平 1 的输出电压
VOL: 逻辑电平 0 的输出电压
VIH : 逻辑电平 1 的输入电压
VIH : 逻辑电平 0 的输入电压
6.TTL和CMOS的逻辑电平转换
CMOS电平能驱动TTL电平
TTL电平不能驱动CMOS电平,需加上拉电阻。
1.3USB/TTL转232模块(以CH340芯片模块为例)的工作原理。
CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。为了增加串口通讯的远距离传输及抗干扰能力,RS-232标准使用-15V 表示逻辑 1, +15V 表示逻辑 0。常常会使用 MH340芯片对 USB/TTL与RS-232电平的信号进行转换。

二. 安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:

2.1重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
(1)安装stm32CubeMX
在网上查找软件官网,直接解压安装

下载链接: STM32CubeMX.
(2)新建项目
打开软件选择file新建项目在这里插入图片描述
点击Part Number选择芯片,然后点击Start Project
在这里插入图片描述
选择System Core下的SYS,将Debug设置为Serial Wire
在这里插入图片描述
配置时钟,将RCC下的HSE设置为Crystal/Ceramic Resonator
在这里插入图片描述
点击CLOCK Configuration,在图中将PLLCLK选上
在这里插入图片描述
返回上个界面,选定GPIO,依次将右侧芯片B0、C15、A0单击设置为GPIO_Output在这里插入图片描述
点击相应的引脚,选择GPIO_Output,将三个引脚的输出默认改为High,即高电平
在这里插入图片描述
在这里插入图片描述
在Project Manager下的Project中设置工程名称和工程路径,并选择编译软件在这里插入图片描述
在Code Generate中选择第一个,然后点击右上角Generate Code,就可以生成代码在这里插入图片描述
在这里插入图片描述

选择open project,软件就会自动打开keil5,然后打开项目中的main.c文件
在这里插入图片描述
在while循环的/* USER CODE BEGIN 3 // USER CODE END 3 */之间插入以下代码:

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);//PA4亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);//PA4熄灯
	HAL_Delay(500);//延时0.5s		
	  
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET);//PB10亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET);//PB10熄灯
	HAL_Delay(500);//延时0.5s
		
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);//PC14亮灯
	HAL_Delay(500);//延时0.5s
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);//PC14熄灯
	HAL_Delay(500);//延时0.5s

编译运行程序无报错且生成相应的.hex文件在这里插入图片描述
然后像上次一样将电路连接,然后把程序烧录进去,最终结果

在这里插入图片描述

2.2完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
1)设置波特率为115200,1位停止位,无校验位;
2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

打开keil5建立新工程,选择芯片
在这里插入图片描述
代码:
main.s

;RCC寄存器地址映像             
RCC_BASE            EQU    0x40021000 
RCC_CR              EQU    (RCC_BASE + 0x00) 
RCC_CFGR            EQU    (RCC_BASE + 0x04) 
RCC_CIR             EQU    (RCC_BASE 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值