版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1
在ARM嵌入式市场上,ARM处理器的广泛应用不仅仅是因为ARM在系统内核方面的优势,更重要是ARM微处理器生产厂商在取得ARM公司的内核授权之后,根据各自产品市场的特点为ARM处理器添加了丰富的功能模块,即系统外设。常见的外设有ADC/DAC、USART通讯接口、CAN通讯接口和协处理器等。
在本章内容中,以STM32F103XX系列ARM处理器为例,主要介绍芯片中常用的一些功能模块及其使用方法。通过本章的学习,用户可以掌握ARM处理器内部所支持的通用功能模块,并能利用这些功能模块完成相应的系统设计。第5章STM32F103XX功能模块〔1〕本章节重难点2【本章重点】1STM32F103XX中的功能模块:GPIO接口模块、ADC转换模块、外部中断模块、高级定时器TIMI、通用定时器TIMx;2STM32F103XX功能模块的控制存放器;3STM32F103XX功能模块的使用〔实验局部〕;【本章难点】1STM32F103XX中的功能模块与作用;2STM32F103XX中功能模块的使用〔实验局部〕;3在ARM处理器市场中,凭借自身在内核和硬件资源等突出优点,正得到越来越广泛的应用。通常而言,ARM处理器有多种内核结构,不同厂商生产的ARM处理器还分别支持不同的功能模块。因此,用户在进行ARM嵌入式系统设计的过程中,选择一款适宜的ARM处理器芯片是非常重要的。其中,ARM处理器的功能模块是芯片选择过程中的一个重要指标。第5章STM32F103XX功能模块5.1ARM处理器的选型与功能模块45.1ARM处理器的选型与功能模块5.1.1ARM处理器的性能参数1、ARM内核的版本对于ARM内核版本而言,如果用户希望WinCE或者Linux等嵌入式操作系统,那么可以在一定程度上减少嵌入式系统软件开发的周期时间。但这种情况下,用户就必须选择带有MMU〔MemoryManagementUnit〕功能的ARM芯片。除此之外,ARM内核的工作性能也是评价嵌入式系统的重要指标。如果需要开发一些实时性要求比较高的嵌入式系统,如车载通讯网络系统、发动机实时控制系统等,应该选择一些高性能的ARM内核,因为这些嵌入式系统对处理器的运行性能有比较高的要求。55.1ARM处理器的选型与功能模块2、内存存储器的容量在绝大局部的ARM处理器中,系统都集成了片上FLASH存储器。用户在设计ARM嵌入式开发系统的过程中,如果应用系统不需要大容量存储空间,那么用户可以选择带有内置FLASH存储器的ARM处理器。除此之外,不同ARM处理器内置的RAM存储器空间的大小也各自不同,用户也需要根据当前所设计的ARM嵌入式系统的需求进行选择。65.1ARM处理器的选型与功能模块3、电源控制与系统功耗 鉴于ARM嵌入式系统的市场需求,一些应用系统对电源功耗比较敏感,特别是一些消费多媒体、手持终端设备等。例如,智能系统的耗电量直接影响到待机时间的长短。在STM32F103XX系列ARM处理器中,芯片内部已经集成了专门的电源管理模块,且具有低功耗模式、休眠模式,以及待机模式等。通过这些节电模式,用户可以通过一系列的电源管理手段以防止ARM嵌入式系统中不必要的电源消耗,降低系统功耗。
75.1ARM处理器的选型与功能模块4、DSP协处理器从ARM处理器的特性来看,嵌入式系统的结构体系比较适合应用在系统控制领域。在一些对实时性要求比较高的嵌入式系统,例如车载CAN网络通讯、无线数据传输等,对数字信号的处理具有较高的要求。因此,在这类嵌入式系统设计的过程中,用户需要使用DSP处理实现嵌入式系统中的控制复杂度,以及快速出去数字信号运算的能力。在这种情况下,用户可以采用带DSP处理器的ARM芯片,常见的带DSP处理器ARM芯片有TI公司的Davinci。
85.1ARM处理器的选型与功能模块5.1.2ARM处理器的外部接口1、GPIO端口对于ARM处理器而言,GPIO端口的数量是系统资源的重要指标之一,也是处理器重要的外设接口。在最早的单片机模型中,GPIO端口与外部设备之间数据交换,是单片机系统最主要甚至唯一的功能。在ARM嵌入式系统设计的过程中,处理器GPIO端口的数量必须能够满足外围接口电路的要求。如果用户选择的ARM处理器GPIO端口缺乏,那么需要对端口进行扩展。GPIO端口的外部扩展显然会降低系统数据传输的速度,不适合对GPIO工作速度要求比较高的场合。除此之外,较多的GPIO端口过多势必又会增加ARM芯片引脚的数量,增加电路板设计的复杂度。95.1ARM处理器的选型与功能模块2、通讯端口通信接口是当前ARM嵌入式系统中必须具备的、使用最为广泛的接口。在所有的ARM嵌入式系统中,根本都具备了通信端口。常用的通讯接口主要包括USART通讯端口、CAN〔控制局域网络〕通讯端口、USB通讯端口、SPI通讯端口、I2C通讯端口等。如果用户在设计ARM嵌入式系统的过程中,所选的ARM处理器没有集成相应的通讯接口,那么用户需要在外部接口电路中重新设计相应的硬件电路和控制程序代码。105.1ARM处理器的选型与功能模块3、其他外部设备除了上述提到影响ARM嵌入式系统性能的外部设备外,用户还需要考虑其他因素对嵌入式系统的影响,包括PWM〔脉冲宽度调制〕输出、ADC和DAC模块、总线扩展模块、LCD控制器、看门狗watchdog等。虽然上述这些外部设备在ARM嵌入式系统中并不是缺一不可的,但如果用户在系统设计的过程中,在不增加本钱的前提条件下选用带有这些特定功能模块的ARM芯片,能给系统的硬件和软件开发工作提供方便。DIP封装不同的芯片封装在散热性能、信号完整性特性、PCB体积等各个方面都各不相同。在上述这些芯片封装中,DIP封装是早期处理器芯片的主要封装形式,如右图所示。而目前,绝大局部芯片由于GPIO端口引脚增多而没有延续采用DIP封装,只在一些结构功能比较简单的集成芯片中保存使用。DIP封装主要的特点是焊接相比照较容易,且更换芯片比较方便。11DIP〔双列直插式〕封装5.1ARM处理器的选型与功能模块5.1.3ARM处理器的芯片封装12QFP封装〔方型扁平式封装技术〕在ARM处理器中,一些低端的芯片主要采用QFP〔QuadFlatPackage〕封装,即在芯片四周都布有管脚的方形封装形式,如右图所示。对于QFP封装而言,最多能支持的芯片管脚数量在100~200之间。例如,STM32F101T4就是采用的QFN36封装。一般而言,封装符号后的数字即表示芯片的引脚数。5.1ARM处理器的选型与功能模块QFP〔QuadFlatPackage〕封装13QFP封装在ARM处理器中,一些低端的芯片主要采用QFP〔QuadFlatPackage〕封装,即在芯片四周都布有管脚的方形封装形式,如右图所示。对于QFP封装而言,最多能支持的芯片管脚数量在100~200之间。例如,STM32F101T4就是采用的QFN36封装。一般而言,封装符号后的数字即表示芯片的引脚数。5.1ARM处理器的选型与功能模块QFP〔QuadFlatPackage〕封装14BGA封装〔球栅阵列结构〕随着集成电路技术的开展,ARM嵌入式芯片对集成电路的封装具有越来越高的要求。因此,芯片生产厂商除了使用QFP封装方式外,大多数管脚数量比较多的ARM芯片都使用了BGA封装技术。BGA封装技术使得高密度、高性能、以及多引脚芯片封装技术成为芯片生产厂商的最正确选择。BGA封装技术如图5-3所示,在芯片封装的反面具有球状管脚5.1ARM处理器的选型与功能模块BGA〔BallGridArrayPackage〕封装内核:ARM32位CortexTM-M3CPU〔1〕最高可支持72MHz的处理器工作频率,在存储器的0等待周期访问时,可到达1.25DMips/MHz〔2〕支持单周期乘法和硬件除法存储器〔1〕支持从64K到128K字节的闪存程序存储器〔2〕支持高达20K字节的SRAM155.1ARM处理器的选型与功能模块5.1.4STM32F103XX系列ARM处理器16时钟、复位和电源管理〔1〕支持2.0~3.6V电源供电以及IO引脚电平信号〔2〕支持上电复位POR、断电复位PDR、以及可编程电压检测器PVD〔3〕支持外部4~16MHz的晶体振荡器〔4〕内部集成了经由出厂调试的8MHz的RC振荡器〔5〕内部集成了带校准的40KHz的RC振荡器〔6〕支持产生CPU时钟的PLL〔7〕集成带校准功能的32KHz的RTC振荡器系统低功耗〔1〕支持睡眠模式、停机模式和待机模式〔2〕支持VBAT为RTC和后备存放器供电5.1ARM处理器的选型与功能模块1712bit模数转换器〔1〕支持0~3.6V电压的转换范围;〔2〕支持2个12bit的模数转换器,最多支持16个输入通道,转换时间为1us;〔3〕支持双路采样和保持功能;〔4〕集成温度传感器;直接内存存取DMA〔DirectMemoryAccess〕〔1〕支持7通道DMA控制器;〔2〕支持定时器Timer、模数转换器ADC、通讯SPI、I2C以及USART等外部设备的DMA操作;5.1ARM处理器的选型与功能模块18GPIO快速端口〔1〕不同型号的处理器芯片分别支持26/37/51/80个通用快速数字IO端口;〔2〕所有GPIO快速端口均可分别映像为16个外部中断;〔3〕绝大局部GPIO端口均可容忍5V电压的输入;处理器调试模式〔1〕支持串行胆单线调试方式SWD;〔2〕支持JTAG调试接口;5.1ARM处理器的选型与功能模块19内部集成7个定时器〔1〕内部集成了3个16bit的定时器,没个定时器支持4个用于输入捕获/输出比较/PWM或者脉冲计数的通道和增量编码器输入;〔2〕内部集成1个16bit带死去控制何紧急刹车,适用于电机控制的PWM高级控制定时器;〔3〕支持2个看门狗定时器,分别为独立定时器和窗口型定时器;〔4〕支持系统时间定时器,即一个24bit的自减型计数器;5.1ARM处理器的选型与功能模块20内部集成9个通信接口〔1〕支持2个I2C接口,支持SMBus/PMBus;〔2〕支持3个USART接口,并且支持ISO7816接口,LIN,IrDA接口和调制解调控制;〔3〕支持2个SPI接口,通讯速率为18MB/s;〔4〕支持CAN通讯接口;〔5〕支持USB2.0通讯接口;5.1ARM处理器的选型与功能模块21在STM32F103XX系列处理器中,芯片中的绝大局部GPIO管脚除了能够作为通用数字信号输入/输出端口外,还可以具有第2功能,甚至第3功能,即GPIO端口的复用功能。注意:使用ARM芯片的任意功能模块之前,都必须对功能模块的引脚进行连接配置,否那么芯片将使用默认连接。第五章STM32F103XX功能模块5.2GPIO接口模块225.1ARM处理器的选型与功能模块5.2.1GPIO引脚描述处理器上电后,所有的GPIO端口都默认为通用数字输入/输出端口〔GeneralPurposeInputOutput
〕。
STM32F103VB共有80个多功能复用输入输出口〔I/O口〕,分为5组PA~PE,每组16个端口。注意:每个引脚的功能必须在启动主程序之前进行定义。STM32F103VB引脚最大输入容忍电压为5V。235.2GPIO接口模块STM32F103VB封装STM32F103VB处理器引脚分布对于STM32F103VB处理器而言,不同的封装形式具有不同的引脚,分别支持了LQFP100和BGA100的封装形式。由于BGA的封装形式对焊接的要求比较高,因此,更多的ARM嵌入式工程师倾向于使用LQFP100的封装形式,其引脚分布如右图所示。
245.1ARM处理器的选型与功能模块5.2.2GPIO功能描述GPIO端口模式:GPIO端口的每个位可以通过编程分别配置成多种模式:
1.
浮空输入GPIO_Mode_IN_FLOATING
2.
带上拉输入GPIO_Mode_IPU
3.
带下拉输入GPIO_Mode_IPD
4.
模拟输入
GPIO_Mode_AIN
5.
开漏输出GPIO_Mode_Out_OD
6.
推挽输出
GPIO_Mode_Out_PP
7.
复用功能的推挽输出GPIO_Mode_AF_PP
8.
复用功能的开漏输出GPIO_Mode_AF_OD其中,模式7和模式8需根据具体的复用功能决定。255.1ARM处理器的选型与功能模块5.2.2GPIO功能描述I/O口输出速度I/O口在输出模式下,有3种输出速度可选:2MHz、10MHz和50MHz;优点:有利于噪声控制。注意:这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关。265.1ARM处理器的选型与功能模块5.2.2GPIO功能描述GPIO配置举例操作步骤:
1.
使能GPIO对应的外设时钟
例如:使能GPIOA、GPIOB、GPIOC对应的外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
|
RCC_APB2Periph_GPIOB|
RCC_APB2Periph_GPIOC
,
ENABLE);
2.
声明一个GPIO_InitStructure结构体
例如:GPIO_InitTypeDef
GPIO_InitStructure;
275.1ARM处理器的选型与功能模块5.2.2GPIO功能描述GPIO配置举例操作步骤:
3、选择待设置的GPIO管脚例如:/*选择待设置的GPIO第7、8、9管脚位,中间加“|”符号*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
4.设置选中GPIO管脚的速率例如:/*设置选中GPIO管脚的速率为最高速率2MHz*/
GPIO_InitStructure.GPIO_Speed
=GPIO_Speed_2MHz; //最高速率2MHz285.1ARM处理器的选型与功能模块5.2.2GPIO功能描述GPIO配置举例操作步骤:
5、
设置选中GPIO管脚的模式例如:/*设置选中GPIO管脚的模式为开漏输出模式*/
GPIO_InitStructure.GPIO_Mode=
GPIO_Mode_Out_OD;//开漏输出模式6、根据GPIO_InitStructure中指定的参数初始化外设GPIOX例如:/*根据GPIO_InitStructure中指定的参数初始化外设GPIOC*/
GPIO_Init(GPIOC,&GPIO_InitStructure);295.1ARM处理器的选型与功能模块5.2.2GPIO功能描述GPIO配置举例操作步骤:
7、
其他应用 例:将端口GPIOA的第10、15脚置1〔高电平〕GPIO_SetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);例:将端口GPIOA的第10、15脚置0〔低电平〕GPIO_ResetBits(GPIOA,GPIO_Pin_10|GPIO_Pin_15);305.1ARM处理器的选型与功能模块5.2.3GPIO存放器描述每个GPIO端口有:两个32位配置存放器(端口配置低存放器GPIOx_CRL,端口配置高存放器GPIOx_CRH),两个32位数据存放器(端口输入数据存放器GPIOx_IDR和端口输出数据存放器GPIOx_ODR),一个32位置位/复位存放器(端口位设置/复位存放器GPIOx_BSRR),一个16位复位存放器(端口位复位存放器GPIOx_BRR)一个32位锁定存放器(端口配置锁定存放GPIOx_LCKR〕其他: 事件控制存放器EVCR、复用重映射和调试MAPR、配置存放器I/O、外部中断线路0-15配置存放器EXTICR
315.2GPIO接口模块5.2.4GPIO管脚库函数在嵌入式开发系统中,用户对STM32F103VB处理器GPIO端口的操作,既可以通过对芯片底层的存放器进行直接操作,也可以使用ST公司提供的标准函数库。STM32标准函数库中关于GPIO端口函数覆盖了几乎所有对处理器引脚操作的功能:管脚设置,单位设置/重置,锁定机制,从端口管脚读入或者向端口管脚写入数据。325.2GPIO接口模块5.2.4GPIO管脚库函数335.2GPIO接口模块5.2.3GPIO管脚库函数函数GPIO_DeInit用户可以通过下面的代码对函数GPIO_DeInit的具体使用方法进行了解。该代码的主要功能是将GPIO引脚中的端口A进行初始化操作。//ResetGPIOAperipheralregisterstothedefaultresetvaluesGPIO_DeInit(GPIOA)函数GPIO_Init在函数GPIO_Init的第2个参数中,涉及到了新的函数类型GPIO_InitTypeDef,该结构体中包含了有关GPIO端口的根本参数,如引脚名称、引脚传输速度、引脚工作模式等,其根本的语法结构如下所示:typedefstruct{ u16GPIO_Pin; GPIOSpeed_TypyDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode;}GPIO_InitTypeDef345.2GPIO接口模块函数GPIO_ReadInputDataBit该函数的主要功能是从ARM处理器GPIO端口引脚的状态,即1bit。用户可以通过下面的代码对函数GPIO_ReadInputDataBit的具体使用方法进行了解。该代码的主要功能是读取GPIO引脚中的端口B中第7个管脚的输入状态。第1行://Readthe7thpinofGPIOBandstoreitinReadValuevariable第2行:u8ReadValue;第3行:ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7);355.2GPIO接口模块函数GPIO_ReadInputData在上述函数GPIO_ReadInputDataBit中,从功能角度上而言,只能对ARM处理器GPIO端口中的某一个引脚。在STM32标准函数库中,用户可以使用GPIO_ReadInputData来实现对ARM处理器引脚状态的批量读取操作。用户可以通过下面的代码对函数GPIO_ReadInputData的具体使用方法进行了解。该代码的主要功能是读取GPIO引脚中的端口C中所有管脚的输入状态。第1行://ReadallpinsofGPIOBandstoretheresultinReadValuevariable第2行:u16ReadValue;第3行:ReadValue=GPIO_ReadInputData(GPIOC);365.2GPIO接口模块函数GPIO_WriteBit在STM32标准函数库中,用户可以使用函数GPIO_WriteBit来实现对ARM处理器引脚状态的写数据操作。用户可以通过下面的代码对函数GPIO_WriteBit的具体使用方法进行了解。该代码的主要功能是将GPIOA端口中的第15引脚设置为高电平,即写1操作。第1行://SettheGPIOAportpin15第2行:GPIO_WriteBit(GPIOA,GPIO_Pin_15,Bit_Set);375.2GPIO接口模块函数GPIO_Write在STM32标准函数库中,用户可以使用函数GPIO_Write来实现对ARM处理器GPIO端口多引脚的写数据操作。用户可以通过下面的代码对函数GPIO_Write的具体使用方法进行了解。该代码的主要功能是将GPIOA端口中的引脚设置为0x1101,即写数据0x1101操作。第1行://WritedatatoGPIOAport第2行:GPIO_Write(GPIOA,0x1101);385.2GPIO接口模块函数GPIO_PinRemapConfig在STM32标准函数库中,用户可以使用函数GPIO_PinRemapConfig来实现对ARM处理器GPIO端口的复用功能进行设置。用户可以通过下面的代码对GPIO_PinRemapConfig的具体使用方法进行了解。该代码的主要功能是将GPIOB端口中的第8引脚复用为I2C1_SCL功能,同时将GPIOB端口中的第9引脚复用为I2C1_SDA。第1行://RemapI2C1_SCLonPB.08,I2C1_SDAonPB.09第2行:GPIO_PinRemapConfig(GPIO_Remap_I2C1,ENABLE);395.2GPIO接口模块
405.2GPIO接口模块GPIO参考资料STM32中文参考手册8通用和复用功能I/O(GPIO和AFIO)STM32固件库使用手册的中文翻译版10通用输入/输出〔GPIO〕在ARM嵌入式系统中,用户可以使用两种不同的方式实现对GPIO端口引脚的操作。对于不同的管脚类型,特别是不同的ARM处理器类型,应该当根据GPIO端口引脚的内部结构选择适宜的硬件电路。415.2GPIO接口模块5.2.4GPIO的硬件电路无需上拉电阻的GPIO驱动STM32F103XX系列ARM处理器使用灌电流的方式驱动LED发光二极管。从电路原理图中可以看出,GPIO端口在驱动LED发光二极管时,必须将PA.0管脚设置为数据输出模式,如右图。GPIO驱动LED〔灌电流〕425.2GPIO接口模块除此之外,用户还可以使用推电流的方式来驱动外部LED发光二极管,其根本的工作原理与灌电流驱动类似,具体硬件电路如右图。GPIO驱动LED〔推电流〕435.2GPIO接口模块需要上拉电阻的GPIO驱动当GPIO端口引脚作为信号输入端口时,由于内部结构没有集成上拉电阻,所以在外部硬件电路设计过程中,需要加上一个10K的上拉电阻,将GPIO端口引脚拉到高电平。GPIO键盘输入
445.2GPIO接口模块GPIO参考资料STM32中文参考手册STM32固件库使用手册的中文翻译版455.2GPIO接口模块5.2.5根底实验一:汽车平安带报警指示灯与蜂鸣器实验在汽车行驶过程中,平安带对驾驶员及其乘客起到重要的保护作用。但局部乘客,特别是非驾驶员乘客,在乘坐汽车的过程中都容易疏忽平安带的使用。因此,在车辆起步前,检查平安带的工作状态并及时作出报警指示具有重要的意义。实验内容分析硬件电路设计软件代码设计:教材P176,软件代码补充实验及扩展46AD模数模块〔Analog-to-DigitalConverter〕,模拟/数字转换器,主要功能是将连续变量的模拟信号转换为离散的数字信号。由于ARM只能处理数字信号,因此,在对外部的模拟信号进行分析、处理的过程中,必须使用ADC模块将外部的模拟信号转换成ARM所能处理的数字信号。第五章STM32F103XX功能模块5.3ADC模数转换模块475.3ADC模数转换模块5.3.1ADC概述
在ARM处理器STM32F103VB中,系统内部集成了2个内部12bit的模拟数字转换器ADC,每一个ADC共用16个外部通道,可实现单次模数转换或扫描模数转换。对于处理器STM32F103VB中的模数转换器,其ADC接口上的主要逻辑功能包括:同步采样和保持功能;交叉采样和保持功能;单次采样功能;
485.3ADC模数转换模块5.3.1ADC概述ADC主要特征●12位分辨率●各通道的A/D转换可以单次、连续、扫描或间断模式执行●自校准●带内嵌数据一致性的数据对齐,ADC的结果可以左对齐或右对齐方式存储在16位数据存放器中。●采样间隔可以按通道分别编程●规那么转换和注入转换均有外部触发选项●双重模式(带2个或以上ADC的器件)495.3ADC模数转换模块5.3.1ADC概述ADC主要特征●ADC转换时间:─STM32F103xx增强型产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)●ADC供电要求:2.4V到3.6V,不建议直接使用电源电压●ADC输入范围:VREF-≤VIN≤VREF+●规那么通道转换期间有DMA请求产生。为了到达更快的传输速率,STM32F103VB处理器ADC支持DMA〔直接内存存取操作〕,由于数据在系统内部存储地址之间直接进行传输,因此可以在很大程度上提高数据转换速度。505.3ADC模数转换模块5.3.2ADC管脚描述在STM32F103VB中,除了基准电压输入引脚〔VREF+和VREF-〕外,不存在特定的直接用于AD转化的管脚,都是采用管脚复用功能实现对模拟信号的处理。注意:当用户将模拟输入信号连接到ADC模块引脚上时,需要将模块对应的引脚设置为“模拟信号输入模式”515.3ADC模数转换模块5.3.3ADC存放器
525.2ADC模数转换模块5.3.4ADC库函数在嵌入式开发系统中,用户对STM32F103VB处理器ADC的操作,需要使用ST公司提供的标准函数库。535.3ADC模数转换模块5.3.4ADC库函数在AD转换器硬件电路设计过程中,输入电压原那么上不可以超过芯片供电电压。在前面的内容中也向读者介绍过在条件允许的情况下,尽量防止直接将电源电压直接连接到AD转换器的参考电压输入端,以防止电源信号的带来的干扰。因此,用户需要设计更为精准的参考电压电路为芯片的AD转换提供稳定的基准电压。545.3ADC模数转换模块5.3.4ADC硬件电路TL431基准电压〔1〕可编程基准电压输出,最高可达36V;〔2〕电压参考源输出误差典型值为±0.4%〔25℃〕;〔3〕较低的动态输出阻抗,典型值为0.22Ω;〔4〕具有1mA~100mA的灌电流能力;〔5〕典型值为50ppm/℃的等效全范围温度系统;〔6〕在整个额定工作温度范围内可进行输出电压温度补偿;〔7〕较低的输出噪声电压;555.3ADC模数转换模块模拟数字信号隔离电路
如果在高速模数转换器(ADC)和混合信号电路及系统中采用了不正确的接地方法,当数字回流(地电流)进入模拟电路局部时,就会引起过多噪声,降低ADC转换的精度。信号隔离的目的在于从电路上把干扰源和易受干扰的局部隔离开来,使测控装置与现场仅保持信号联系,而不直接发生信号之间的联系。隔离的实质是把引进的干扰通道切断,从而到达隔离现场干扰的目的。565.3ADC模数转换模块575.3ADC模数转换模块5.3.5根底实验二:汽车发动机水温测量系统实验随着汽车行业的不断开展,汽车上电器设备数据日益增多,使得发动机的功率也逐步增大,发动机产生的热量也不断升高。如果不能处理好发动机的冷却降温问题,将影响到汽车的动力性能,所以对发动机水温的监测是非常重要的。温度的测量实验内容分析硬件电路设计软件代码设计,P201程序代码补充实验及扩展
585.3ADC模数转换模块GPIO参考资料STM32中文参考手册
11模拟/数字转换(ADC)STM32固件库使用手册的中文翻译版
4.模拟/数字转换器59在STM32F103XX系列处理器中,系统内置嵌套的向量式中断控制器NVIC,能够处理多达43个可屏蔽中断通道〔不包含15个Cortex-M3的中断线〕和16个优先级,具体参数特性如下所示:〔1〕支持43个可屏蔽的中断通道〔2〕支持16个可编程的中断优先级〔采用4位中断优先级〕〔3〕具有极低的延时异常和中断处理功能〔4〕支持对系统电源的中断管理控制〔5〕支持中断尾部链接功能〔6〕自动保存当前处理器的状态〔7〕中断返回时自动回复系统中断初始状态,无需任何额外指令开销第五章STM32F103XX功能模块5.4EXTI中断模块605.4EXTI中断模块5.4.1外部中断/事件的分类在STM32F103XX系列处理器中,系统支持了各种不同类型的中断形式,且不同中断的各个特征参数,如优先级、中断地址等,也各不相同。教材P208,表5.41来查看系统所支持的中断类型。外部中断/事件控制器包含了19个边沿检测器,且STM32F103XX处理器中多达80个通用IO端口可以被直接映射到这19个外部中断线,每一个中断线都可以独立的配置触发事件,并且能够单独的被系统屏蔽。其中,系统还提供了一个挂起存放器维持所有中断请求的状态。615.4EXTI中断模块5.4.2外部中断/事件的结构外部中断/事件控制器EXTI的主要特性如下所示:〔1〕每根外部中断/事件输入线上均可独立触发和屏蔽〔2〕每根外部中断/事件输入线都具有专门的状态标志位〔3〕最多可产生19个软件事件/中断请求〔4〕可捕获脉宽低于APB时钟的外部信号625.4EXTI中断模块外部中断/事件控制器结构STM32处理器中某一条外部中断线或外部事件线的信号结构图:图中虚线标出了外部中断信号的传输路径。外部中断/事件信号从芯片管脚1输入,经过边沿检测电路2后,通过或门3进入中断“挂起请求存放器”,最后经过与门4将外部信号输出到NVIC中断控制器。635.4EXTI中断模块5.4.3外部中断/事件的执行顺序与嵌套通常情况下,外部中断/事件的处理可以分为以下4个过程,具体如下所示:中断请求和优先级中断的响应中断的处理中断的返回645.4EXTI中断模块5.4.4外部中断/事件的选择在STM32F103VB处理器中,系统能够处理外部时间或者内部事件以唤醒内核WFE,通过配置外部线路,任意的IO端口、RTC闹钟以及USB唤醒等事件都可以用来唤醒休眠状态的CPU,即从WFE退出。655.4EXTI中断模块5.4.3外部中断/事件的执行顺序与嵌套中断的产生:要产生中断,必须先配置好并使能中断线。根据需要的边沿检测设置2个触发存放器,同时在中断屏蔽存放器的相应位写’1’允许中断请求。当外部中断线上发生了期待的边沿时,将产生一个中断请求,对应的挂起位也随之被置’1’。在挂起存放器的对应位写’1’,将去除该中断请求。665.4EXTI中断模块5.4.3外部中断/事件的执行顺序与嵌套硬件中断的选择配置中断线的屏蔽位(EXTI_IMR)配置所选中断线的触发选择位(EXTI_RTSR和EXTI_FTSR);配置对应到外部中断控制器(EXTI)的NVIC中断通道的使能和屏蔽位,使中断线中的请求可以被正确地响应。
675.4EXTI中断模块5.4.3外部中断/事件的执行顺序与嵌套硬件事件的选择配置事件线的屏蔽位(EXTI_EMR)配置事件线的触发选择位(EXTI_RTSR和EXTI_FTSR)软件中断/事件的选择配置中断/事件线屏蔽位(EXTI_IMR,EXTI_EMR)设置软件中断存放器的请求位(EXTI_SWIER)685.4EXTI中断模块5.4.3外部中断/事件的执行顺序与嵌套外部中断/事件线路映像80通用I/O端口连接到19个外部中断/事件线上:。。。另外三种其他的外部中断/事件控制器的连接如下:
EXTI线16连接到PVD输出
EXTI线17连接到RTC闹钟事件
EXTI线18连接到USB唤醒事件695.4EXTI中断模块5.4.5外部中断/事件存放器EXTI存放器的参数是通过结构体的方式来描述的。EXTI_TypeDef,在文件“stm32f10x_map.h”中定义如下:Typedefstruct{vu32IMR;vu32EMR;vu32RTSR;vu32FTSR;vu32SWIER;vu32PR;}EXTI_TypeDef;705.4EXTI中断模块存放器功能及描述在下面的内容中,选择上述函数库中局部常用的函数进行简单的介绍,使得用户对这些函数的具体使用方法有一定的了解。
函数EXTI_DeInit函数EXTI_Init函数EXTI_GenerateSWInterrupt函数EXTI_GetFlagStatus函数EXTI_ClearFlag函数EXTI_GetITStatus函数EXTI_ClearITPendingBit715.4EXTI中断模块725.4EXTI中断模块5.4.6外部中断/事件硬件电路外部中断/事件都可以通过GPIO端口中的引脚进行输入,可以分为2种触发类型:电平触发所谓边沿触发,是指电平从高到低跳变(负跳变)或从低到高跳变(正跳变)时才发生触发;边沿触发电平触发是指只有高电平〔或者低电平〕的时候才产生。触发电路为了确保外部中断/事件能够产生严格的触发波形,一般使用按键的方式产生相应的外部中断。触发电路主要有低电平(下降沿)触发与高电平(上升沿)触发两种,如右图所示。735.4EXTI中断模块上升沿触发与下降沿触发电路在汽车行驶的过程中,经常会遇到紧急制动的情况。对于汽车制动而言,需要具有严格的实时性要求。因此,在汽车紧急制动过程中,可以使用中断的方式来模拟汽车的紧急制动信号,如右图所示。745.4EXTI中断模块5.4.6根底实验三:汽车紧急制动实验汽车制动系统原理755.4EXTI中断模块试验主要有以下几个流程:实验内容分析硬件电路设计软件代码设计,P224-228程序代码补充实验及扩展
765.4EXTI中断模块EXIT参考资料STM32中文参考手册STM32固件库使用手册的中文翻译版77在STM32F103XX增强型系列产品中,芯片包含了:1个高级控制定时器TIM13个通用定时器TIM2、TIM3、TIM4、2个看门狗定时器:独立看门狗、窗口看门狗1个系统时基定时器第五章STM32F103XX功能模块5.5高级控制定时器TIM178第五章STM32F103XX功能模块定时器计数器分辨率计数器类型预分频系数产生DMA请求捕获/比较通道互补输出TIM116位向上,向下,向上/向下1-65536之间的任意数可以4有TIM2TIM3TIM416位向上,向下,向上/向下1-65536之间的任意数可以4没有系统定时器功能比较对于一个定时器而言要做到精确定时需要关注2个内容:1.预分频器2.定时计数器的值795.5高级控制定时器TIM15.5.1TIM1的结构特性16位向上、向下、向上/下自动装载计数器16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值多达4个独立通道:─输入捕获─输出比较─PWM生成(边缘或中间对齐模式)─单脉冲模式输出死区时间可编程的互补输出使用外部信号控制定时器和定时器互联的同步电路允许在指定数目的计数器周期之后更新定时器存放器的重复计数器刹车输入信号可以将定时器输出信号置于复位状态或者一个状态805.5高级控制定时器TIM15.5.1TIM1的结构特性如下事件发生时产生中断/DMA:─更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)─触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)─输入捕获,输出比较,刹车信号输入支持针对定位的增量(正交)编码器和霍尔传感器电路触发输入作为外部时钟或者按周期的电流管理815.5高级控制定时器TIM1
高级控制定时器TIM1框图825.5高级控制定时器TIM15.5.2TIM1的功能除了具有通用定时器TIMx具有的定时功能外,还具备一些高级控制定时的功能:时基单元:计数器存放器(TIM1_CNT)预分频器存放器(TIM1_PSC)自动装载存放器(TIM1_ARR)重复计数存放器(TIM1_RCR)835.5高级控制定时器TIM15.5.2TIM1的功能计数器模式:向上计数模式,计数器从0计数到自动加载值(TIMx_ARR计数器内容),然后重新从0开始计数并且产生一个计数器溢出事件。向下计数模式,计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。中央对齐模式〔向上/向下计数〕,计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。845.5高级控制定时器TIM15.5.2TIM1的功能计数器模式:重复计数器〔循环向下计数模式〕:重复计数器在下述任一条件成立时递减:●向上计数模式下每次计数器溢出时,●向下计数模式下每次计数器下溢时,●中央对齐模式下每次上溢和每次下溢时855.5高级控制定时器TIM15.5.2TIM1的功能时钟来源:内部时钟(CK_INT)外部时钟模式1:外部输入脚(TIx)外部时钟模式2:外部触发输入(ETR)内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器865.5高级控制定时器TIM15.5.3TIM1的控制存放器高级控制定时器TIM1存放器的根本结构和用法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江苏省扬中市高三生物下册期末考试模拟测试卷带答案
- 2026年四川省西昌市高三物理下册期末考试模拟考试卷及参考答案
- 基于极限学习机的织物折皱等级精准分类模型构建与应用研究
- 基于机器学习的液压泵装配质量检测技术的深度剖析与实践
- 基于本体的科学数据集成与共享:方法、挑战与实践
- 基于服务设计理念的微信社交电商服务产品创新设计与实现路径探究
- 基于有限元方法探究含缺陷碳纳米管力学性能的深度剖析
- 基于有向无环图的货币政策对我国居民消费影响机制及效应探究
- 基于智能算法的炼钢 - 连铸批量计划优化策略与实践研究
- 基于智能感知与数据分析的武汉游泳馆屋顶网架结构安全预警系统设计研究
- 2026-2027学年人教版四年级上册数学月考试卷(第一、二单元)(含答案)
- 2025-2026学年人教版PEP三年级英语上册全册单词表(带音标)
- 市政道路工程监理实施细则
- 2026 年妇科宫腔镜手术围手术期护理课件
- 2026年北京市中考英语试卷真题及答案详解(精校打印版)
- 2026年家禽屠宰加工工协同作业考核试卷及答案
- 2026年秋人美版(新教材)小学美术四年级上册(全册)教学设计(附目录p153)
- 2026年全科医生转岗培训考试(理论考核)题库及答案(辽宁省)
- 2026年中级消防设施操作员(监控方向)考试题库(附答案)
- 2026年平安岗前培训测试题及答案
- 电梯使用维护安全管理培训课件
评论
0/150
提交评论