0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

stm32异步串口通讯配置过程

汽车玩家 来源:记录知识点滴 作者:记录知识点滴 2020-04-16 16:56 次阅读

| 串口是一种全双工通讯方式

单工

stm32异步串口通讯配置过程

数据传输只支持数据在一个方向上传输

半双工

stm32异步串口通讯配置过程

允许数据在两个方向上传输,在同一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信

全双工

stm32异步串口通讯配置过程

允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力

异步串口常见连接方式

stm32异步串口通讯配置过程

相同端口数据传输

stm32异步串口通讯配置过程

不同端口数据传输

这里必须保证通讯两端数据共地,此外还需注意不同端口间的电平转换,如TTL、232.

| 异步通讯时序图

这里以8位字长为例,进行数据传输时,接收方首先捕捉数据起始位- -由高电平到低电平的数据跳变,低电平会保持一个数据周期(空闲时,数据线保持高电平)

stm32异步串口通讯配置过程

1-8-1

紧接着起始位的是8位有效数据(低地址数据LSB在前),这里特别注意,若设置了奇偶校验,奇偶校验位会占据一位有效数据,即写进数据寄存器数据的MSB位被校验位替换后发送出去,如下表所示:

stm32异步串口通讯配置过程

最后为1位停止位,停止位为有效高电平

| 奇偶校验

使能校验功能后,写进数据寄存器的数据的MSB位被校验位替换后发送出去(如果选择偶校验偶数个’1’,如果选择奇校验奇数个’1’)。

偶校验:校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为偶数。

例如:数据=00110101,有4个’1’,如果选择偶校验,校验位是’0’。

奇校验:此校验位使得一帧中的7或8个LSB数据以及校验位中’1’的个数为奇数。

例如:数据=00110101,有4个’1’,如果选择奇校验,校验位是’1’。

| 波特率的产生

RX/TX 波特率=FCK/(16*USARTDIV )

这里的FCK为串口模块的输入时钟频率,通常首先确定想得到的波特率,而后通过上述公式,解得USARTDIV ,进而将USARTDIV的小数和整数部分分别填入波特率寄存器(USART_BRR)的整数DIV_Mantissa和小数DIV_Fraction部分中。

例如: 求得 USARTDIV = 25.62时,就有:DIV_Fraction = 16*0.62 = 9.92 最接近的整数是: 10 = 0x0A DIV_Mantissa = mantissa (25.620) = 25 = 0x19于是, USART_BRR = 0x19A

| 异步串口通讯的基本配置过程

1. 使能串口及对应引脚时钟

2. 配置引脚,根据需要决定是否重映射

TX输出引脚 -- 传输速率50M_hz,复用推挽输出

RX输入引脚 -- 浮空输入

3.串口参数初始化

设置字长、停止位个数、是否开启校验位及选择校验方式(CR1、CR2寄存器),波特率设置

4. 配置中断优先级

抢占优先级、子优先级,使能中断通道

5. 根据需要,开启串口部分中断(CR1)

6. 使能串口(CR1)

stm32串口有独立的收发能力,可根据需要单独开启/关闭接收、发送单元

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2265

    文章

    10858

    浏览量

    354442
  • 串口
    +关注

    关注

    14

    文章

    1540

    浏览量

    76101
收藏 人收藏

    评论

    相关推荐

    6轴控制程序,带串口通讯

    6轴控制程序,带串口通讯
    发表于 11-09 14:08 0次下载

    飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口硬件原理

    通用异步收发器(通常称为串口)是嵌入式设备中常用的通讯接口。它具有连接线少,通讯简单的特点,得以广泛使用。串口将数据通过串列
    发表于 10-22 10:46

    stm32串口烧录怎么设置

    准备工作 确保您拥有STM32开发板和相应的硬件设备,如USB转串口模块。 安装STM32CubeMX和STM32CubeProgrammer软件,这些是ST官方提供的工具,用于
    的头像 发表于 08-22 09:33 1105次阅读

    LABVIEW串口通讯

    labview实现串口通讯
    发表于 08-19 14:37 5次下载

    EU104:一款支持1扩4的通用异步串口扩展芯片,满足绝大部分串口设备的通讯要求

    EU104:一款支持1扩4的通用异步串口扩展芯片,满足绝大部分串口设备的通讯要求 EU104是一款支持1扩4的通用异步
    的头像 发表于 08-08 10:21 277次阅读

    求助,关于STM32 USB转串口与其他单片机通讯问题求解

    想实现stm32f103在usb转串口后,跟其他的单片机 通讯,可以实现吗? 如果用stm32f407也USB转串口,跟
    发表于 04-23 07:10

    深度解析STM32串口通信基本原理

    在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允
    发表于 04-18 09:50 1715次阅读
    深度解析<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通信基本原理

    STM32 USB HS转串口过程中拔插数据线出现设备无法识别的问题怎么解决?

    STM32F429 USB HS虚拟串口与PC通讯过程中频繁拔插数据线偶尔导致设备无法识别,出现这种情况的时候有时重新拔插会好,有时重新拔插数据线也无济于事只能复位MCU,有人遇到过吗
    发表于 04-15 07:44

    串口通讯时的数据帧格式和通讯协议有什么区别?

    串口通讯时的数据帧格式和通讯协议是两个不同的概念,它们在串口通讯中起着不同的作用,但都是为了实现可靠的、有效的数据传输。
    的头像 发表于 01-30 09:21 1825次阅读

    stm32怎么读取串口发来的指令

    读取串口发来的指令是嵌入式系统中一项常见的任务,特别是在与外部设备进行通信时。在STM32系列微控制器中,提供了多个串口接口(USART、UART等),可以用于读取和处理串口接收到的数
    的头像 发表于 01-07 17:08 2582次阅读

    stm32虚拟串口接收的数据处理

    ,我们需要了解虚拟串口的工作原理。虚拟串口是通过软件模拟的串口,数据通过USB端口传输。在STM32中,我们可以使用USB CDC(Communication Device Class
    的头像 发表于 12-20 11:22 2147次阅读

    STM32WB55开发(4)----配置串口打印Debug调试信息

    STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上
    的头像 发表于 12-01 15:48 1167次阅读
    <b class='flag-5'>STM32</b>WB55开发(4)----<b class='flag-5'>配置</b><b class='flag-5'>串口</b>打印Debug调试信息

    STM32H5开发(5)----串口打印配置

    在使用STM32CUBEIDE开发STM32H5项目时,串口打印被证明是一项极其有益的调试工具,能够在开发过程中实时输出信息和调试数据,起到了至关重要的作用。通过充分利用
    的头像 发表于 12-01 15:04 914次阅读
    <b class='flag-5'>STM32</b>H5开发(5)----<b class='flag-5'>串口</b>打印<b class='flag-5'>配置</b>

    ROS如何配置固定串口设备

    配置固定串口设备 在linux中设备接到哪个串口号上是随机的,为解决这个问题,可以先将N100 设备的串口号设置成固定的名称,避免后期需要重复的修改
    的头像 发表于 11-22 17:58 965次阅读
    ROS如何<b class='flag-5'>配置</b>固定<b class='flag-5'>串口</b>设备

    ROS与STM32串口通信代码

    Stm32_Serial; // 声明串口对象 并且在类的定义中,声明两个结构体,用来存储接收和要发送的数据 RECEIVE_DATA Receive_Data ; //The serial port
    的头像 发表于 11-17 18:10 1024次阅读