《嵌入式技术应用》课件-第15周-串口_第1页
《嵌入式技术应用》课件-第15周-串口_第2页
《嵌入式技术应用》课件-第15周-串口_第3页
《嵌入式技术应用》课件-第15周-串口_第4页
《嵌入式技术应用》课件-第15周-串口_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目六串行通信设计与实现STM32的串行通信异步通信在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。字符帧也称为数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成,如下图所示。STM32的串行通信同步通信同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。信息帧和异步通信的字符帧不同,通常有若干个数据字符,如右下图所示。单同步字符帧格式:双同步字符帧格式:STM32的串行通信串行通信的方式串行通信依数据传输的方向及时间关系可分为:单工、半双工和全双工。单工通信:通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送。半双工通信:系统的每个通信设备都由一个发送器和一个接收器组成,数据传送可以沿两个方向,但需要分时进行。全双工通信:系统的每端都有发送器和接收器,可以同时发送和接收,即数据可以在两个方向上同时传送。认识STM32的USART串口STM32拥有3路USART串口,串口资源丰富、功能强劲,其与传统的51单片机(或PC)的串口(UART)还有所区别。USART串口USART(通用同步/异步串行收发器)是一种能够把二进制数据按位(bit)传送的通信方式。STM32的USART串口采用了一种灵活的方法,使用异步串行数据格式进行外部设备之间的全双工数据交换。利用分数波特率发生器提供宽范围的波特率选择,并支持局部互连网LIN、智能卡协议和IrDASIRENDEC规范,还具有用于多缓冲器配置的DMA方式,可以实现高速数据通信。认识STM32的USART串口USART串口硬件连接USART串口是通过RX(接收数据串行输入)、TX(发送数据输出)和地3个引脚与其他设备连接在一起的。USART1串口的TX和RX引脚使用的是PA9和PA10;USART2串口的TX和RX引脚使用的是PA2和PA3;USART3串口的TX和RX引脚使用的是PB10和PB11;这些引脚默认的功能都是GPIO,在作为串口使用时,就要用到这些引脚的复用功能,在使用其的复用功能前,必须对复用的端口进行设置。STM32串口的相关寄存器分数波特率发生寄存器USART_BRRSTM32的USART串口是通过USART_BRR来选择波特率的。只用了低16位(12位整数和4位小数)。位15:4定义了USART分频器除法因子(USARTDIV)的小数部分;位3:0定义了USART分频器除法因子(USARTDIV)的小数部分。USART波特率与USART_BRR寄存器中的值USARTDIV关系如下: Tx/Rx波特率

=其中:fPCLKx是给串口的时钟(PCLK1用于USART2、3、4、5,PCLK2用于USART1),USARTDIV是一个无符号的定点数。

STM32串口的相关寄存器控制寄存器USART_CR1,只用了低14位,高18位保留位13(UE)USART使能。0:USART分频器和输出被禁止;1:USART模块使能。位12(M)定义了数据字的长度。0:一个起始位、8个数据位、n个停止位;1:一个起始位、9个数据位、n个停止位。位6(TCIE)发送完成中断使能。0:禁止产生中断;1:当USART_SR中的TC为’1’时,产生USART中断。位5(RXNEIE)接收缓冲区非空中断使能。0:禁止产生中断;1:当USART_SR中的ORE或者RXNE为“1”时,产生USART中断。位3(TE)发送使能发送器。0:禁止发送;1:使能发送。位2(RE)接收使能。0:禁止接收;1:使能接收,并开始搜寻RX引脚上的起始位。STM32串口的相关寄存器数据寄存器USART_DR,只用了低9位位8:0(DR)是数据值,这9位包含了发送或接收的数据。USART_DR是由两个寄存器组成的,一个是用发送(TDR),一个是用接收(RDR),该寄存器兼具读和写的功能。TDR寄存器提供了内部总线和输出移位寄存器之间的并行接口;RDR寄存器提供了输入移位寄存器和内部总线之间的并行接口。当使能校验位(USART_CR1中PCE位被置位)进行发送时,写到MSB的值会被后来的校验位该取代。

当使能校验位进行接收时,读到的MSB位是接收到的校验位。STM32串口的相关寄存器状态寄存器USART_SR,只用了低10位位6(TC)是发送完成。0:发送还未完成;1:发送完成。位5(RXNE)是读数据寄存器非空。0:数据没有收到;1:收到数据,可以读出。位0(PE)是校验错误。0:没有奇偶校验错误;1:奇偶校验错误。在接收模式下,如果出现奇偶校验错误,硬件对该位置位,由软件序列对其清零(依次读USART_SR和USART_DR)。如果USART_CR1中的PEIE为“1”,则产生中断。任务13USART串口通信设计目标使用STM32的USART寄存器和库函数,通过USART串口发送数据和接收数据,实现串行通信的设计、运行与调试。任务要求利用STM32的USART1串口,计算机通过串口助手发送数据给STM32,STM32接收到数据后,通过接收数据串口中断来读取接收到的数据,然后将接收到的数据再通过串口发回计算机,LED闪烁表示系统正在运行。STM32串口的相关函数通常串口设置步骤可以有以下几个步骤:串口时钟使能,GPIO时钟使能;串口复位;GPIO端口模式设置;串口参数初始化;开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤);使能串口;编写中断处理函数。STM32串口的相关函数使能USART串口的时钟(前面已经介绍)USART1串口是挂载在APB2(高速外设)的外设,USART2和USART3串口是挂载在APB1(低速外设)的外设。设置GPIO复用端口(前面已经介绍)使能GPIOx的时钟;TX用来发送数据,设置成复用功能的推挽输出(AF_PP);RX用来接收数据,设置成浮空输入(IN_FLOATING)。USART1串口的TX和RX引脚使用的是PA9和PA10,USART2串口的TX和RX引脚使用的是PA2和PA3,USART3串口的TX和RX引脚使用的是PB10和PB11,这些引脚默认的功能都是GPIO。STM32串口的相关函数串口复位串口复位是在USART_DeInit()函数中完成,例如复位USART2串口的代码如下:

USART_DeInit(USART2);

//复位串口2初始化和使能串口初始化主要是配置串口的波特率、校验位、停止位和时钟等基本功能,是通过USART_Init()函数来实现的;串口使能是通过函数USART_Cmd()来实现的。例如USART2串口使能代码如下:

USART_Cmd(USART2,ENABLE);STM32串口的相关函数数据发送和接收USART串口发送数据是通过USART_SendData()函数,来操作USART_DR寄存器发送数据的;例如向串口2发送数据代码如下:USART_SendData(USART2,USART_TX_BUF[t]);USART串口接收数据是通过USART_ReceiveData()函数,来操作USART_DR寄存器读取串口接收到的数据。例如读取串口2接收到的数据代码如下:Res=USART_ReceiveData(USART2);STM32串口的相关函数完成发送和接收数据的状态位通过读取串口的USART_SR状态寄存器,然后根据USART_SR的第5位(RXNE)和第6位(TC)的状态来判断。判断读寄存器是否非空(RXNE)。当RXNE位被置1时,说明串口已有数据接收到了,并可以读出来。代码如下:USART_GetFlagStatus(USART1,USART_FLAG_RXNE);判断发送是否完成(TC)。当该位被置1时,说明USART_DR内的数据已经发送完成了。代码如下:USART_GetFlagStatus(USART1,USART_FLAG_TC);STM32串口的相关函数开启串口响应中断串口接收到数据时(RXNE读数据寄存器非空),产生中断。例如开启USART1串口接收到数据中断的代码是://开启中断,接收到数据中断USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);串口在发送数据结束时(TC发送完成),产生中断。例如开启USART1串口发送完数据中断的代码如下:USART_ITConfig(USART1,USART_IT_TC,ENABLE);STM32串口的相关函数获取相应中断状态在使能了某个中断时,当该中断发生,就会设置状态寄存器中的某个标志位。在中断处理函数中,要判断该中断是哪种中断。例如,使能了USART1串口发送完成中断,当中断发生,便可以在中断处理函数中调用这个函数,来判断到底是否是串口发送完成中断,代码如下:USART_GetITStatus(USART1,USART_IT_TC);其返回值是SET,说明是发生了串口发送完成中断。STM32的USART1串口通信设计根据任务要求,

STM32的USART1串口通信过程如下:计算机通过串口助手发送数据给STM32;STM32接收到数据,就会进入接收数据串口中断,读取DR寄存器中接收到的数据;然后将接收到的数据,再通过串口发回计算机;最后还要LED闪烁,表示系统正在运行。编写usart.h头文件和usart.c文件usart.c文件主要包括支持printf函数代码、串口初始化函数和串口中断服务函数等。STM32的USART1串口通信代码,见源程序任务14STM32串口无线传输设计与实现目标使用WiFi通信模块、ZigBee通信模块,实现串行通信与WiFi、ZigBee无线通信相互转换。任务要求完成嵌入式智能车STM32的USART1串口通过WiFi通信模块,与智能移动终端进行无线数据传输;完成嵌入式智能车STM32的USART2串口通过ZigBee通信模块,与运输车和道闸等设备进行无线数据传输。基于WiFi的STM32串口无线传输电路设计认识WiFi通信模块嵌入式智能车核心板的WiFi通信模块采用的是RM04模块,是一个低成本高性能嵌入式UART-ETH-WIFI(串口-以太网-无线网)模块,RM04模块如下图所示。使用RM04模块,传统的串口设备在不需要更改任何配置的情况下,就能通过Internet网络传输自己的数据。基于WiFi的STM32串口无线传输电路设计WiFi通信模块电路设计WiFi通信模块与嵌入式智能车核心板通信,是通过串口方式连接,其接线方法是WiFi模块的RXD接到核心板STM32的TXD(PA9),WiFi模块的TXD接到核心板STM32的RXD(PA10),

见WiFi通信模块电路图。ES/RST为退出透传/恢复出厂设置按键,WPS/RST为WPS模式/恢复出厂设置按键。SW为WiFi模块电源开关。核心板与WiFi模块的连接如下图所示。基于WiFi的STM32串口无线传输电路基于ZigBee的STM32串口无线传输电路设计认识ZigBee通信模块Zigbee通信模块采用TI公司的2.4G射频芯片,使用Zigbee协议。Zigbee通信模块通过串口方式与核心板上的ARM处理器通信波特率为115200

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论