STM32的三种串口通信协议介绍

发布时间:2023-05-05  

  STM32串口硬件电路

STM32的三种串口通信协议介绍

  开发板串口硬件电路

  STM32串口编程

  1、整体流程

  ① 开启GPIO时钟和USARTX时钟

  ② 配置TX和RX引脚

  ③ 初始化USART控制器

  2、细节实现

  ① 开启GPIO时钟和USARTX时钟

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

  ② 配置TX和RX引脚

  /* Configure USART1 Tx (PA.09) as alternate function push-pull */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Configure USART1 Rx (PA.10) as input floating */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

  GPIO_Init(GPIOA, &GPIO_InitStructure);

  ③ 初始化USART控制器

  /* USART1 mode config */

  USART_InitStructure.USART_BaudRate = 115200;

  USART_InitStructure.USART_WordLength = USART_WordLength_8b;

  USART_InitStructure.USART_StopBits = USART_StopBits_1;

  USART_InitStructure.USART_Parity = USART_Parity_No ;

  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  USART_Init(USART1, &USART_InitStructure);

  USART_Cmd(USART1, ENABLE);

  STM32F的三种串口通信协议

  1、USART

  通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。

  USART支持同步单向通信和半双工单线通信,也支持LIN(局部互联网)、智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。

  USART双向通信至少需要两个引脚:接收数据输入(RX)和发送数据输出(TX)。

  同步模式下需要引脚:发送器时钟输出(CK)

  IrDA模式需要引脚:数据输入(IrDA_RDI)、数据输出(IrDA_RDO)

  USART特点:

  1. 全双工操作(相互独立的接收数据和发送数据);

  2. 同步操作时,可主机时钟同步,也可从机时钟同步;

  3. 独立的高精度波特率发生器,不占用定时/计数器;

  4. 支持5、6、7、8和9位数据位,1或2位停止位的串行数据桢结构;

  5. 由硬件支持的奇偶校验位发生和检验;

  6. 数据溢出检测;

  7. 帧错误检测;

  8. 包括错误起始位的检测噪声滤波器和数字低通滤波器;

  9. 三个完全独立的中断,TX发送完成、TX发送数据寄存器空、RX接收完成;

  10.支持多机通信模式;

  11.支持倍速异步通信模式。

  2、SPI

  串口外围设备接口SPI是一种低成本,易使用的接口,主要用于微控制器与外围设备芯片之间的连接。SPI接口可以用来连接存储器、A/D转换器、D/A转换器、实时时钟日历、LCD驱动、传感器、音频芯片等。

  SPI是一个四线接口:主机输出/从机输入(MOSI)、主机输入/从机输出(MISO)、串行SCLK或SCK、外设芯片(CS/)。

  SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,这个时钟信号由主机产生。SPI允许芯片与外部设备以半/全双工、同步、串行方式通信。

  根据时钟极性和时钟相位的不同,SPI有4种工作模式,如图。

STM32的几种串口通信协议

  3、I2C

  I2C总线是同步通信的一种特殊形式,具有接口少,控制简单,器件封装形式小、通信速率较高等优点。

  I2C总线由数据线SDA和时钟线SCL两条线构成通信线路,既可以发送数据,也可以接收数据。

  I2C总线的操作模式:主发送模式、从接收模式、从发送模式、从接收模式。

  I2C总线的模拟时序如下图:

STM32的几种串口通信协议

  STM32串口通信程序设计要点

  1、要是能串口时钟同时要是能复用总线时钟和对应的IO时钟,如:

  //使能串口1,PA,AFIO总线

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |

  RCC_APB2Periph_AFIO |

  RCC_APB2Periph_USART1 ,

  ENABLE);

  2、stm32f10x_conf.h 中使能

  #include “stm32f10x_usart.h”

  #include “misc.h”

  3、使能中断的话要配置NVIC,在中断函数中加入相应的程序。

  简单的配置例程:

  /**************************************************************

  文件名:USART.c

  功能:串口初始化配置以及相关函数

  串口配置注意事项:

  1、 stm32f10x_conf.h 中使能

  #include “stm32f10x_usart.h”

  #include “misc.h”

  2、 本文件中定义的串口相关函数需要在头文件中做外部函数声明

  ***************************************************************/

  #include “STM32Lib//stm32f10x.h”

  void USART_Configuration(void)

  {

  GPIO_InitTypeDef GPIO_InitStructure;

  USART_InitTypeDef USART_InitStructure;

  USART_ClockInitTypeDef USART_ClockInitStructure;

  //使能串口1,PA,AFIO总线

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |

  RCC_APB2Periph_AFIO |

  RCC_APB2Periph_USART1 ,

  ENABLE);

  /* A9 USART1_Tx */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //推挽输出-TX

  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* A10 USART1_Rx */

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入-RX

  GPIO_Init(GPIOA, &GPIO_InitStructure);

  USART_InitStructure.USART_BaudRate = 9600;

  USART_InitStructure.USART_WordLength = USART_WordLength_8b;

  USART_InitStructure.USART_StopBits = USART_StopBits_1;

  USART_InitStructure.USART_Parity = USART_Parity_No;

  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;

  USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;

  USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;

  USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;

  USART_ClockInit(USART1, &USART_ClockInitStructure);

  USART_Init(USART1, &USART_InitStructure);

  /* Enable the USARTx */

  USART_Cmd(USART1, ENABLE);

  }

  void USART1_Putc(unsigned char c)

  {

  USART_SendData(USART1, c);

  while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET );

  }

  void USART1_Puts(char * str)

  {

  while(*str)

  {

  USART_SendData(USART1, *str++);

  /* Loop until the end of transmission */

  while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

  }

  }


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    CP2102等,目前国内厂家的替代芯片也做得很成熟了,有需要可以联系我们提供资料。这些芯片集成了USB和串口通信所需的电路和协议,可以通过USB接口与计算机连接,并提供串口通信的功能。 USB转RS232转换......
    芯片起到的就是中间人的作用,它把 UART 电平转换成 RS232 电平,也把 RS232 电平转换成 UART 电平。 USB 转串口芯CH340T:实现 USB通信协议和标准UART 串行通信协议的转换。 3、通信......
    一文搞懂RS-485通信协议(2024-12-05 10:48:58)
    芯片间的通讯或芯片和电脑的通讯。 4.2 RS232 标准 只用三根线,和串口通信......
    (使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与全双工RS-422。 所以我们今天介绍的485通信是一种通信接口,而其软件的通信协议和一般usart通信无二。 串口通信 串口通信是一种通信......
    芯片起到的就是中间人的作用,它把 UART 电平转换成 RS232 电平,也把 RS232 电平转换成 UART 电平。 USB 转串口芯CH340T:实现 USB通信协议和标准UART 串行通信协议的转换。 3......
    =104.1666...us。约0.1ms。既然是9600等份,即每1bit紧接着下一个比特,不存在额外的间隔。两台设备要想实现串口通讯,这收发端设置的波特率必须相同,否则是没办法实现通讯的:动图演示常用通信协议......
    》   //------------------串口通信协议-----------------//   /*   客户端数据包格式解释(长度恒为15):   例如:A01_fmq_01Off___......
    PLC串口通讯和通讯接口知识汇总;在使用PLC的时候会接触到很多的通讯协议以及通讯接口,最基本的PLC串口通讯和基本的通讯接口你都了解吗? 一、什么是串口通讯? 串口是一种接口标准,是计算机上一种非常通用设备通信的协议......
    .Instance->SR&(1<<5))//如果接收到了数据   {     buf=huart1.Instance->DR; /接收选择的格子串口通信协议......
    所示。RS232串口引脚为9脚,只使用了5个脚,触摸屏电源供给由PS/2接口4脚提供。 表1 触摸屏器接口引脚与RS232串口引脚功能关系表 4.通信协议的确定及软件设计 4.1触摸屏串口控制器的通信协议......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>