版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安文理学院自动化教研室
USART原理及应用本讲主要内容 1.通信的基本概念 2.STM32F1的USART介绍 3.串口通信配置步骤 4.硬件电路 5.编写串口通信控制程序
1.通信的基本概念
通信的方式可以分为多种,按照数据传送方式可分为串行通信和并行通信。按照通信的数据同步方式,可分为异同通信和同步通信。按照数据的传输方向又可分为单工、半双工和全双工通信。下面我们就来简单介绍这几种通信方式。
1.1串行通信与并行通信(1)串行通信 串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。(2)并行通信 并行通信通常是将数据字节的各位用多条数据线同时进行传送,通常是8位、16位、32位等数据一起传输。 并行通信的特点:控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难,抗干扰能力差。1.2异步通信与同步通信(1)异步通信 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。(2)同步通信 同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种方法实现。
1.3单工、半双工与全双工通信(1)单工通信 单工是指数据传输仅能沿一个方向,不能实现反向传输。
(2)半双工通信 半双工是指数据传输可以沿两个方向,但需要分时进行。(3)全双工通信 全双工是指数据可以同时进行双向传输。
1.4通信速率
衡量通信性能的一个非常重要的参数就是通信速率,通常以比特率(Bitrate)来表示。比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:10位×240个/秒=2400bps
2.STM32F1的USART介绍2.1串口通信简介
串口通信(SerialCommunication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通信方式,属于串行通信方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。(1)接口标准 串口通信的接口标准有很多,有RS-232C、RS-232、RS-422A、RS-485等。常用的就是RS-232和RS-485。RS-232其实是RS-232C的改进,原理是一样的。这里我们就以RS-232C接口进行讲解,RS-485在后面章节中会介绍。 RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。 RS-232C接口规定使用25针连接器,简称DB25,连接器的尺寸及每个插针的排列位置都有明确的定义。
公头和母头的管脚定义顺序是不一样,这一点需要特别注意。常用管脚的功能如下:
RS-232C对逻辑电平也做了规定,如下在TXD和RXD数据线上:1.逻辑1为-3~-15V的电压2.逻辑0为3~15V的电压在RTS、CTS、DSR、DTR和DCD等控制线上:1.信号有效(ON状态)为3~15V的电压2.信号无效(OFF状态)为-3~-15V的电压
由此可见,RS-232C是用正负电压来表示逻辑状态,与晶体管-晶体管逻辑集成电路(TTL)以高低电平表示逻辑状态的规定正好相反
串口通信中还需要注意的是,串口数据收发线要交叉连接,计算机的TXD要对应单片机的RXD,计算机的RXD要对应单片机的TXD,并且共GND,如下图:
(2)通信协议 RS232的通信协议比较简单,通常遵循96-N-8-1格式。
2.2USART简介
USART即通用同步异步收发器,它能够灵活地与外部设备进行全双工数据交换,满足外部设备对工业标准NRZ异步串行数据格式的要求。UART即通用异步收发器,它是在USART基础上裁剪掉了同步通信功能,同步和异步主要看其时钟是否需要对外提供,这个前面也介绍了。我们开发板上使用的STM32F103ZET6芯片含有3个USART,2个UART外设。它们都具有串口通信功能,USART它支持同步单向通信和半双工单线通信;还支持LIN(域互连网络)、智能卡协议与IrDA(红外线数据协会)SIRENDEC规范,以及调制解调器操作(CTS/RTS)。而且,它还支持多处理器通信和DMA功能,使用DMA可实现高速数据通信。USART通过小数波特率发生器提供了多种波特率。
USART在STM32中应用最多的是printf输出调试信息,当我们需要了解程序内的一些变量数据信息时,可以通过printf输出函数将这些信息打印到串口助手上显示,这样一来就给我们调试程序带来了极大的方便。2.3USART结构框图参考《STM32F10x中文参考手册》25章内容
3.串口通信配置步骤
在上面的介绍中,可能有的朋友很不理解,不过没有关系,下面我们讲解如何使用库函数对USART进行配置。这个也是在编写程序中必须要了解的。具体步骤如下:(USART相关库函数在stm32f10x_usart.c和stm32f10x_usart.h文件中)。(1)使能串口时钟及GPIO端口时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1时钟(2)GPIO端口模式设置,设置串口对应的引脚为复用功能GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;(3)初始化串口参数,包含波特率、字长、奇偶校验等参数voidUSART_Init(USART_TypeDef*USARTx,USART_InitTypeDef*USART_InitStruct);typedefstruct{uint32_tUSART_BaudRate;//波特率uint16_tUSART_WordLength;//字长uint16_tUSART_StopBits;//停止位uint16_tUSART_Parity;//校验位uint16_tUSART_Mode;//USART模式uint16_tUSART_HardwareFlowControl;//硬件流控制}USART_InitTypeDef;例如:USART_InitTypeDefUSART_InitStructure;USART_InitStructure.USART_BaudRate=9600;//波特率设置USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字长为8位数据格式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);//初始化串口1(4)使能串口voidUSART_Cmd(USART_TypeDef*USARTx,FunctionalStateNewState);USART_Cmd(USART1,ENABLE);//使能串口1(5)设置串口中断类型并使能voidUSART_ITConfig(USART_TypeDef*USARTx,uint16_tUSART_IT,FunctionalStateNewState);USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启接收中断USART_ITConfig(USART1,USART_IT_TC,ENABLE);对应的串口中断类型可在stm32f10x_usart.h中查找到(6)设置串口中断优先级,使能串口中断通道NVIC初始化库函数是NVIC_Init()(7)编写串口中断服务函数USART1_IRQHandlerITStatusUSART_GetITStatus(USART_TypeDef*USARTx,uint16_tUSART_IT);if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){ ...//执行USART1接收中断内控制}voidUSART_ClearFlag(USART_TypeDef*USARTx,uint16_tUSART_FLAG);第二个参数为状态标志选项,可选参数可在stm32f10x_usart.h中查找到例如:voidUSART1_IRQHandler(void) //串口1中断服务程序{ u8r; if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)//接收中断 { r=USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据 USART_SendData(USART1,r); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET); } USART_ClearFlag(USART1,USART_FLAG_TC);}4.硬件电路参考开发板原理图
串口通信实验硬件原理图5.编写串口通信控制程序本章所要实现的功能是:STM32F1通过USART1实现与PC机对话,STM32F1的USART1收到PC机发来的数据后原封不动的返回给PC机显示。同时使用D1指示灯不断闪烁提示系统正常运行。STM32F103单片机的USART1与PC串口之间的通信速率和通信协议规定如下:数据传输波特率为115200bps,数据格式为8位数据位,无奇偶检验位,1位停止位,无数据流控制。程序框架如下:(1)初始化USART1,并使能串口接收中断等(2)编写USART1中断函数(3)编写主函数
(1)初始化USART1,并使能串口接收中断等voidUSART1_Init(u32bound){//GPIO端口设置 GPIO_InitTypeDefGPIO_InitStructure; USART_InitTypeDefUSART_InitStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); /*配置GPIO的模式和IO口*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX,串口输出PA9 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
/*复用推挽输出*/ GPIO_Init(GPIOA,&GPIO_InitStructure);/*初始化串口输出*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RX,串口输入PA10 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStructure);/*初始化串口输入*/
//USART1初始化设置USART_InitStructure.USART_BaudRate=bound;//波特率设置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);//初始化串口1USART_Cmd(USART1,ENABLE);//使能串口
USART_ClearFlag(USART1,USART_FLAG_TC); USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启相关中断//Usart1NVIC配置NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//串口1中断通道NVIC_InitS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年标准劳动合同范本
- fidic工程合同案例
- 2025泳池设备购销及安装合同
- 牙科正畸治疗的临床评估
- 2024事业单位员工终止聘用合同及离职手续及工作交接协议3篇
- 2025食堂转让合同模板范文
- 商丘医学高等专科学校《PYTHON编程基础与实践》2023-2024学年第一学期期末试卷
- 2024年版房地产买卖合同(含土地使用权)
- 木工压刨转让合同范例
- 门面合伙合作合同范例
- 2024年发供电分公司安全规程考试多选题库及答案(共200题)
- 2024年青海省检察机关聘用制书记员招聘笔试参考题库附带答案详解
- MOOC 电磁场与电磁波-北京交通大学 中国大学慕课答案
- 2024年员工思想动态分析报告5篇
- 2024年三高共管基层慢病健康管理能力提升考试试题
- 2023年人教版初一数学上册期末测试题及答案
- 夜市一条街建设方案
- 2024年新版消防设施操作员初级考试题库(含答案)
- 安全教育培训需求识别汇总及分析
- 2023中考语文名著《西游记》梳理+练习(学生版+解析版)
- 重庆红色旅游资源开发利用研究以红岩联线为例
评论
0/150
提交评论