bob线上安装

CASE SHOW

bob线上安装

STM32系统学习——USART(串口通信)

发布时间:2024-03-01 11:42:35 来源:bob线上安装  

  串口通信是一种设备间非常常用的串行通行方式,其简单便捷,大部分电子设备都支持。

  常用RS-232标准,主要规定了信号的用途、通信接口以及信号的电平标准。

  “DB9接口”之间通过串口信号线建立起连接,串口信号线标准“传输数据信号,这些信号通过记过电平转换芯片转换成控制器能识别的TLL标准的电平信号,才能实现通信。

  常见的电子电路中常见TTL的电平标准,理想状态使用5V表示二进制逻辑1,0V表示逻辑0;而为增加串口通信的远距离传输以及抗干扰能力,RS-232使用-15V表示逻辑1,+15V表示逻辑0。

  因为控制器通常用TTL电平标准,所以常常使用MA3232芯片将TTL以及RS-232电平的信号进行互相转换。

  2.RS-232信号线串口标准常用于计算机、路由与调制调节器(“猫”)之间通信,设备被分为数据终端设备DTE(计算机、路由)和数据通信设施DCE(调制调节器)。旧台式计算机,一般都有RS-232标准的COM口,也称DB9接口。

  协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通信双方的数据包格式要约定一致才能正常收发数据 。

  异步通信中由于没时钟信号,所以2个通信设施需约定好波特率,常见的有4800、9600、115200等。

  串口通信的一个数据包从起始信号开始,知道停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。

  在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效

  在有效数据之后,有一个可选的数据校验位。由于数据通信相对容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这一个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)。 奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位。

  偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。

  通用同步异步收发器是一个串行通信设施,可以灵活的与外部设备进行全双工数据交换。有别与USART,还有一个UART,它在USART基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。

  串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。

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

  nRTS:请求以发送,n表示低电平有效。如果使能 RTS 流控制,当USART接收器准备好接收新数据时就会将nRTS变成低电平;当接收寄存器已满时,nRTS将被设置为高电平。该引脚只适用于硬件流控制。

  nCTS:清除以发送(Clear To Send),n表示低电平有效。如果使能 CTS流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。

  USART说数据寄存器(USART_DR)只有低 9 位有效,并且第 9 位数据是不是有效要取决于USART 控制寄存器 1(USART_CR1)的 M 位设置,当 M 位为 0 时表示 8 位数据字长,当 M位为 1 表示 9 位数据字长,我们通常用 8位数据字长。

  USART_DR包含了已发送的数据或者接收到的数据。USART_DR实际是包含了两个寄存器,一个专门用于发送的可写 TDR,一个专门用于接收的可读 RDR。当进行发送操作时,往 USART_DR写入数据会自动存储在 TDR内;当进行读取操作时,向 USART_DR读取数据会自动提取 RDR 数据。

  TDR和RDR都是介于系统总线和移位寄存器之间。串行通信是一个位一个位传输的,发送时把 TDR 内容转移到发送移位寄存器,然后把移位寄存器数据每一位发送出去,接时把接收到的每一位顺序保存在接收移位寄存器内然后才转移到 RDR。

  USART有专门控制发送的发送器、控制接收的接收器,还有唤醒单元、中断控制等。

  使用USART之前需要向USART_CR1寄存器的UE位置1使能USART,UE位用于开启供给串口的时钟。发送或者接收数据字长可选8或9位,由USARTT_CR1的M位控制。

  当USART_CR1寄存器的发送使能位TE置1时,启动数据发送,发送移位寄存器的数据会在TX引脚输出,低位在前,高位在后。如果是同步模式SCLK也输出时钟信号。

  一个字符帧发送需要3部分:起始位、数据帧、停止位。起始位是一个位周期的低电平,位周期就是每一位占用的时间 ;数据帧就是我们要发送的8或9位数据,数据是最低位开始传输的;停止位是一段时间周期的高电平。

  停止位的时间长短能够最终靠USART控制寄存器2(USART_CR2)的STOP[1:0]位控制,可选0.5个、1个、1.5个、2个停止位。默认使用1个停止位。2个停止位适用于正常USART模式、单线模式和调制解调器模式。0.5和1.5个停止位用于智能卡模式。

  当发使能位TE置1之后,发送器开始会发送一个空闲帧(一个数据帧长度的高电平),接下来就可以往USART_DR寄存器写入要发送的数据。在写入最后一个数据后,需等待USART状态寄存器(USART_SR)的TC位为1,表示数据传输完成。USART_CR1寄存器的TCIE位置1,则产生中断。

  将CR1寄存器的RE位置1,使能USART接收,使得接收器在RX线开始搜索起始位。在确定起始位后,就根据RX线电平状态把数据存放在接收移位寄存器内。接收完成后就把接收移位寄存器的数据移到PDR内,并把USART_SR寄存器的RXNE位置。如果USART_CR2寄存器的RXNEIE置1可以产生中断。

  其中,f PLCK 为 USART 时钟, USARTDIV 是一个存放在波特率寄存器(USART_BRR)的一个无符号定点数。其中 DIV_Mantissa[11:0]位定义 USARTDIV 的整数部分,DIV_Fraction[3:0]位定义 USARTDIV 的小数部分。

  波特率的常用值有 2400、9600、19200、115200。下面以实例讲解如何设定寄存器值得到波特率的值。

  STM32F103系列控制器USART支持奇偶校验。使用校验位时,串口传输的长度将在8位数据帧上加上1位的校验位,总共9位,此时USART_CR1寄存器的M位需要设置位1,即9数据位。将USART_CR1寄存器的PCE位置1就可以启动奇偶校验控制,奇偶校验由硬件自动完成。启动了奇偶校验控制之后,发送数据帧时会自动添加校验位,接收数据自动验证校验位。接收数据时假如慢慢的出现奇偶校验位验证失败,会将USART_SR寄存器的PE置1,并可以产生奇偶校验中断。

  使用了奇偶校验控制位后,每个字符帧的格式变成了:起始位+数据帧+校验位+停止位。

  1)USART_BaudRate:波特率设置。标准库函数会根据设定值计算得到USARTDIV值,从而设置USART_BRR的寄存器值。

  2)USART_WordLength:.数据帧字长,它设定USART_CR1寄存器M位的值。如果没有使能奇偶位校验控制,通常用8数据位。

  6)USART_HardwareFlowControl:硬件流控制选择,只有在硬件流控制模式下才有效,可选有,使能RTS、使能CTS、同时使能RTS和CTS、不使用硬件流。

  当使用同步模式,需配置SCLK引脚输出脉冲的属性,标准库使用一个时钟初始化结构体USART_ClockInitTypeDef来设置,该结构体内容只有在同步模式下才设置。

  3)USART_CPHA:同步模式下 SCLK 引脚上输出时钟相位设置,可设置在时钟第一个变化沿捕获数据(USART_CPHA_1Edge)或在时钟第二个变化沿捕获数据。它设定 USART_CR2寄存器的 CPHA位的值。USART_CPHA与 USART_CPOL配合使用能够得到多种模式时钟关系。

  USART 只需两根信号线就可以完成双向通信,对硬件要求低,使得很多模块都预留USART 接口来实现与其他模块或者控制器进行数据传输,比如 GSM 模块,WIFI 模块、蓝牙模块等等。在硬件设计时,注意还需要一根“共地线”。

  来编写一个程序实现开发板与电脑通信,在开发板上电时通过USART发送一串字符串给电脑,然后开发板进入中断接收等待状态,如果电脑有发送数据过来,开发板就会产生中断,我们在中断服务函数接收数据,并马上把数据返回发送给电脑。

  * 串口宏定义,不同的串口挂载的总线和 IO 不一样,移植时需要修改这几个宏

  使用宏定义方便程序移植和升级 。开发板中的 CH340G 的收发引脚默认通过跳帽连接到 USART1,如果想使用其他串口,可以把 CH340G 跟 USART1 直接的连接跳帽拔掉,然后再把其他串口的 IO用杜邦线G的收发引脚即可。

  使用GPIO之前需要初始化配置它,并且还要添加特殊设置,因为个人会使用它作为外设引脚,一般都有特殊功能,模式设置为复用功能,把串口的Tx引脚配置为复用推挽输出,Rx引脚为浮空输入,数据完全由外部输入决定。

  配置USAT1通信参数为:波特率115200,字长8,1个停止位,没有校验位,不使用硬件流控制,收发一体工作模式,然后调用USART初始化函数完成配置。

  最后 调用USART_Cmd函数使能USART,最终配置的是USART_CR1的UE位,具体作用是开启USART工作时钟,没有时钟那USART这个外设就工作不了。

  Usart_SendByte用来指定USART发送一个ASCLL码字符,它有2个形参:第一个USART第二个待发送的字符,它通过调用库函数USART_SendData来实现等待,并且增加了等待发送完成功能,它接收两个参数:一个是USART,一个是事件标志。这里循环检测发送数据寄存器这一个标志,当跳出while循环时,说明发送数据寄存器为空。

  Usart_SendString函数用来发送一个字符串,实际调用Usar_SendByte函数发送每个字符,直到遇到空字符才停止发送。最后使用循环检测发送完成的事件标志TC,保证数据完成后才退出函数。

  该代码在stm32f10x_it.c文件中的,用来集中存放中断服务函数。当使能了中断并中断发生时,就会执行这里的中断服务函数。

  fputc函数是printf函数内部的一个函数,功能是将字符ch写入文件指针f所指向文件的当前写指针位置,个人会使用USART函数重新修改fputc函数内容,达到类似写入的功能。

  还有一点必须要格外注意的,使用 fput和 fgetc函数达到重定向 C语言标准库输入输出函数必须在 MDK的工程选项把“Use MicroLIB”勾选上,MicoroLIB 是缺省 C库的备选库,它对标准 C库进行了高度优化使代码更少,占用更少资源。

  getchar函数用于等待获取一个字符,并返回字符。个人会使用 ch变量保持返回的字符,接下

  Stm32的启动模式由 BOOT0和BOOT1进行配置,在下载模式下我们应该讲BOOT0配置成0电平,但往往忽略了BOOT1。 一般开发板厂家都会把BOOT0和BOOT0都做成可配置的。 我遇到的问题是在下载程序的时候只在BOOT0上接了跳线帽讲其接地,但是BOOT1确由其悬空着,因此每次下载都必须重新上电才能被下载器认可,后来将BOOT1用跳线帽接到高电平后,问题成功解决,每次下载前只需要按下复位按键就可以了。

  开发板每次下程序必须重新上电问题 /

  一、实验原理 简单串口通信实例 1、串口设置的一般步骤可以总结为如下几个步骤: 1) 串口时钟使能,GPIO时钟使能 2) 串口复位 3) GPIO端口模式设置 4) 串口参数初始化 5) 开启中断并且初始化NVIC(若需要开启中断才需要这个步骤) 6) 使能串口 7) 编写中断处理函数 2、具体函数实现 1)串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd(); //①串口时钟使能,GPIO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIOA时钟使能 RCC_APB2PeriphC

  ) /

  蝴蝶效应理论想必大家都很清楚,而就在十年前的六月,意法半导体(以下简称ST)在北京首发了全球首款采用ARM Cortex-M3 内核的处理器STM32 F3,与此同时,选择了一只蝴蝶作为产品的Logo,正是这只蝴蝶,搅乱了整个MCU市场。 图:尽管公司的平面设计从美女变成了运动员,但那只蝴蝶还在 正如STM32之父、意法半导体微控制器事业部市场总监Daniel Colonna表示,“十年前我们最终选择了蝴蝶作为STM32的代表Logo,说明我们要利用STM32,为工程师、开发者们释放更多创造力。”这是Daniel在意法半导体十周年纪念仪式上回忆的。除Daniel之外,意法半导体亚太区MMS及物联网副总裁Arn

  诞生十周年纪念 /

  函数如下: /************************************************************************** * 函数名 : RccInitialisation * 函数描述 : 设置系统各部分时钟 * 输入参数 : 无 * 输出结果 : 无 * 返回值 : 无 **************************************************************************/ void RccInitialisation(void) { /* 定义枚举类型变量 HSEStartUpStatus */ ErrorStatus H

  随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题慢慢的受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再次生产的能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要方法。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检验测试环境光以控制路灯的工作状态,上限功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户可设定LED上班时间等功能。 系统结

  单片机的太阳能LED街灯解决方案 /

  一、环境与硬件介绍 开发环境:keil5 代码风格: 寄存器风格,没有采用库函数,底层代码全部寄存器方式编写,运行效率高,注释清楚。 MCU型号: STM32F103ZET6 开发板: 正常的一块STM32开发板,带LCD插槽,带4颗独立按键。 游戏模拟器: NES游戏模拟器 LCD : ALIENTEK的3.5寸屏幕。(屏幕型号不重要,随便一款都可以的,把屏幕底层驱动代码写好,适配即可) 声音输出设备 : 采用VS1053 (SPI接口,操作便捷) 游戏手柄: 支持FC游戏手柄 完成这个掌上游戏机需要用的硬件设备不复杂,如果想要体验游戏,需要的必备硬件: 1. (必要)STM32F103系列

  设计的掌上游戏机(运行NES游戏模拟器)详细开发过程 /

  一、TTL电平:全双工(逻辑1: 2.4V--5V 逻辑0: 0V--0.5V) 1、硬件框图如下,TTL用于两个MCU间通信 2、‘0’和‘1’表示 二、RS-232电平:全双工(逻辑1:-15V--5V 逻辑0:+3V--+15V) 1、硬件框图如下,TTL用于MCU与PC机之间通信 2、‘0’和‘1’表示 三、RS-485:半双工、(逻辑1:+2V--+6V 逻辑0: -6V---2V)这里的电平指AB 两线’表示 四、CAN总线V)这里的电平指CAN_High、CAN_Low 两线

  常见通信方式(TTL、RS232、RS485、CAN)总结 /

  下面是一个单片机STM32RCT6的PA8,PA9,PA10引脚输出PWM波形的仿真步骤,此外还展示了软件运行过程,如何查看全局变量的实时数据。每一步我都做了截图,大家照着一步步来,请大家放心参考! 1.点target图标,如下: 2.选择好单片机芯片的型号:我选的STM32RCT6型号,你们可以根据自己手上stm32开发板的型号来选择 3.外部晶振频率的选择:8Mhz(因为大部分单片机的外部晶振是8Mhz),为了使仿真更贴近实际,通常情况下都是选8Mhz 4.进入Debug页面进行设计,特别要注意第四点parameter,注意选正确好芯片的型号,我的是RC系列,所以写了RC,如果是RB系列,要后面改为RB 5

  软件运行过程,如何查看全局变量的实时数据 /

  F10XXX用户参考手册_(ST)

  MP157+MPU+的评估板

  WB+系列新产品开发+Zigbee智能能源(SE)应用

  WB+系列上开始使用+Zigbee

  MPS电机研究院 让电机更听话的秘密! 第一站:电机应用知识大考!第三期考题上线,跟帖赢好礼~

  学习赢京东卡 从12V电池及供电网络优化的角度分析电动汽车E/E架构的趋势

  有奖直播 同质化严重,缺乏创新,ST60毫米波非接触连接器,赋予你独特的产品设计,重拾市场话语权

  【下载】LAT1362 利用STM32 TIMER触发ADC实现分组转换

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【下载】LAT1347 基于STM32CubeIDE移植ClassB 4.0

  【下载】LAT1340 STM32H5读取温度传感器校准值时进HardFault的原因分析

  【生态】使用STM32CubeMX在STM32U5上配置LPBAM应用程序

  【MPU】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【新品】降本增效这事儿,就看STM32C0,低至0.24美元” ,开机即可物联世界

  【GUI开发】TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!

  【边缘AI】突破边缘AI应用的次元壁:首届意法半导体边缘人工智能峰会举行

  【生态系统】STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【无线携手创新微MinewSemi共创低功耗模块,引领中国智能连接未来

  凝聚ST超低功耗微控制器技术精华的STM32U5于2021年问世,是一款堪称可改变游戏规则的低功耗MCU。作为STM32高性能低功耗系列旗舰产品,STM32 ...

  前言程控三相交流功率源的应用十分广泛,它被大量应用于冶金、通信、化工、电力及军工等诸多行业。用于交流调压、调功、调光及电机软启动等 ...

  音频模拟信号电路常需要在很大范围内调节电平,而高精度电路的调节范同达100 dB以上.相当于二进制线位,同时也要求具有较高的调 ...

  以C8051F020单片机为系统控制器件的实时检测和记录车辆散热系统动态参数电路设计

  1 引言车辆的系统散热性是衡量其先进性的一个重要标志,因为车辆的各个部件和系统都存在一个最佳的工作时候的温度区间,在此温度范围内零部件的 ...

  通过利用C8051F020单片机实现立体声信号相位差电平差测试仪的设计

  将LR立体声信号经频谱分析、整形及占空比检测电路做处理,采用过零鉴相法,通过测矩形波占空比,实现相位差的测试。将LR信号用AD736专用 ...

  基于C8051F系列单片机和CAN总线技术实现电动汽车数字控制管理系统的设计

  51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云:

备案证号:bob线上安装

电话/传真:027-59880013

电子邮箱:gallop_wu@126.com

公司地址:武汉江汉区泛海国际SOHO城8栋1305室

技术支持:bob线上安装-bob怎么下载-bob综合体育app入口