你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32的串口(UART)及串口通信原理(内附代码)

[复制链接]
STMCU小助手 发布时间:2022-5-17 22:00
一、通信接口介绍

    1、处理器与外部设备通信的两种方式:      

        并行通信

    -            传输原理:数据各个位同时传输。

                -优点:速度快

                -缺点:占用引脚资源多

        串行通信

   -            传输原理:数据按位顺序传输(一位一位传输)。

                -优点:占用引脚资源少

                -缺点:速度相对较慢

    2、串行通信三种传送方式:

        单工:

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

        半双工:

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

        全双工:

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

@6@17M2T%0HF${CRM(1@Q3P.png

    3、串行通信的通信方式及举例

        同步通信:带时钟同步信号传输。         -SPI,IIC通信接口

        异步通信:不带时钟同步信号。            -UART(通用异步收发器),单总线

{IYE1VNHID04V`~7M]1PB2P.png

二、什么是串口:

    串口是我们的大多数微控制单元(MCU)都具有的基本的外部接口,一般串口最基本的功能就是调试,又能做数据通信的接口(数据量要小一些)。

    数据从A到B只能通过1根线,数据就像是羊肉块一样被串在线上

        UART:通用异步收发器

        USART:通用同步异步收发器

三、串口电平标准及引脚连接方法:

    1、电平标准

     TTL是常见的模块的通讯电平标准:串口wifi、串口蓝牙(4针接口:VCC、GND、TXD、RXD)

     232一般是数据通讯接口:台式电脑的主机背后的九针接口

{5J}[(WI131SYPS8K6PSLK0.png

    2、连接方法

        RXD:数据输入引脚。数据接受。

        TXD:数据发送引脚。数据发送。

GD4A`A[72@7O58BQVT`DOV0.png
O]WMUM6W`B2B@OT4]XYF00Y.png

四、STM32串口通信过程

数据接收过程:

322LHZ3](4T8GYOK@_B_SYV.png

数据发送过程:

I]ZS_SM]I}ZH3I7@N~8X4[M.png

五、STM32串口异步通信需要定义的参数

        ①起始位

        ②数据位(8位或者9位)   9位是带奇偶校验位

        ③奇偶校验位(第9位)   

                奇检验就是保证8位数据位中1的个数为基数个,如果1是基数个则检验位就为0,反之为1;

                偶检验就是保证8位数据位中1的个数为偶数个,如果1是偶数个则检验位就为0,反之为1;

        ④停止位(1,15,2位)

        ⑤波特率设置

6KRL6DUA5[@T31X[98ROG8I.png

六、UART配置过程  

  1. //1、串口时钟和GPIO时钟使能

  2.         ①串口时钟使能: RCC_APBxPeriphClockCmd();

  3.         ②GPIO时钟使能:RCC_AHB1PeriphClockCmd();

  4. //2、设置引脚复用器映射:

  5.         GPIO_PinAFConfig();

  6. //3、串口参数初始化(GPIO配置)(五大参数)

  7.         GPIO_Init();//初始化

  8. //4、串口参数初始化(六大参数)

  9.         USART_Init(); //初始化串口

  10. //5.使能串口

  11.         USART_Cmd();

  12. //6.开启中断(如果需要开启中断才需要这个步骤)

  13. //  设置中断进入的条件:接收数据缓冲区有数据的时候就会进入中断

  14.         USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);

  15. //7.配置NVIC中断(四大参数)

  16.         NVIC_Init(&NVIC_InitStructure);

  17. //8、编写中断处理函数:USARTx_IRQHandler();
复制代码
  1. //串口数据收发:

  2.     void USART_SendData();//发送数据到串口,DR

  3.     uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据

  4. //串口传输状态获取:

  5.     FlagStatusUSART_GetFlagStatus();

  6.     void USART_ClearITPendingBit();

复制代码


收藏 评论0 发布时间:2022-5-17 22:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版