EFM32外设反射系统中文应用笔记

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

...theworld'smostenergyfriendlymicrocontrollers外设反射系统AN0025–应用笔记简介本应用笔记描述外设发射系统的功能以及如何使用这些功能来改善您系统的功耗性能,减轻CPU的负荷和降低处理延迟。本文详细介绍和描述了几个应用示例。本应用笔记包括:•这篇PDF文档•源代码文件(zip)•样例C代码•多个IDE项目...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80512引言外设反射系统(PRS)是一个能让不同外设模块在没有CPU干预的情况下直接互相通信的网络。发送反射信号的外设模块称为生产者。PRS将这些反射信号连接到消费者外设,消费者外设根据接收到的反射信号执行相应的动作。反射信号的格式不是固定的,但PRS可以产生边沿触发信号及其他功能。1.2概述图1.1(p.2)给出了一个通道及4个不同外设被连接到PRS的概览。该PRS包含8个互连通道,每个通道都可以在生产者提供的所有输出反射信号中进行选择。消费者可以选择侦听哪个PRS通道,并根据通过该通道连接的反射信号执行相应的动作。反射信号既可以是脉冲信号,也可以是电平信号。同步PRS脉冲的宽度为一个HFPERCLK周期,可以由一个生产者发送(例如ADC转换结束),也可以由PRS通道中的边沿检测器产生。电平信号的波形可以是任意的,但会被同步到HFPERCLK。图1.1.PRS概览Channel0SIGSEL[2:0]SOURCESEL[5:0]EDSEL[1:0]APBbusSWPULSE[0]SWLEVEL[0]Signalsfromproducerperipherals...x8..RegSignalstoconsumerperipheralsProducerSideTIMER0OverflowPulseACMPOutputLevelPRSch0ch1ch2ch3ch4ch5ch6ch7ADC0Startsingleconv.TIMER1CC1InputConsumerSide在图1.1(p.2)所示的例子中,4个外设被连接到2个PRS通道。TIMER0和ADC0连接到一个通道,ACMP和TIMER1连接到第二个通道。TIMER0的溢出信号可启动一次ADC转换,ACMP的输出可用作TIMER1的一个捕获/比较通道的输入。...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80513内部的反射信号。每个通道都包含一个边沿检测器,以便从电平信号产生脉冲信号。还可以通过用软件写PRS_SWPULSE和PRS_SWLEVEL寄存器来产生输出反射信号。PRS_SWLEVEL用于为每个通道设置一个可编程的电平,并保持其编程值。如果向PRS_SWPULSE写1,它会给出一个周期的高电平脉冲,否则它会保持0电平。SWLEVEL和SWPULSE信号与来自生产者的所选信号进行异或,形成输出信号,发送给侦听该通道的消费者,如图1.1(p.2)所示。使用emlib函数voidPRS_SourceSignalSet(unsignedintch,uint32_tsource,uint32_tsignal,PRS_Edge_TypeDefedge)可很容易地配置PRS通道。通过指定PRS通道、生产者外设、来自外设的信号和脉冲产生边沿,该函数可相应地配置PRS。2.2生产者每个PRS通道都可以在来自多个生产者的信号中选择,这可通过PRS_CHx_CTRL寄存器中的SOURCESEL域配置。每个生产者都能输出一个或多个信号,这可通过设置PRS_CHx_CTRL寄存器中的SIGSEL域选择。将SOURCESEL的位设置为0(Off)会导致输入多路选择器的输出恒为0。表2.1(p.3)给出了可用生产者一览表。表2.1.反射生产者模块反射输出输出格式ACMP比较器输出电平ADC单次转换完成脉冲扫描转换完成脉冲DAC通道0转换完成脉冲通道0转换完成脉冲GPIOPin0输入电平Pin1输入电平Pin2输入电平Pin3输入电平Pin4输入电平Pin5输入电平Pin6输入电平Pin7输入电平Pin8输入电平Pin9输入电平Pin10输入电平Pin11输入电平Pin12输入电平...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80514新华龙电子有限公司联系电话:400-886-80514消费者消费者外设(列于表2.2(p.4))可被设置为侦听一个PRS通道,并根据在该通道接收的信号执行相应的动作。大多数消费者要求脉冲输入,有些可处理电平输入。表2.2.反射消费者模块反射输入输入格式ADC单次模式触发信号脉冲扫描模式触发信号脉冲DAC通道0触发信号脉冲通道1触发信号脉冲TIMERCC0输入脉冲/电平CC1输入脉冲/电平CC2输入脉冲/电平DTI故障源0(仅限TIMER0)脉冲DTI故障源1(仅限TIMER0)脉冲DTI输入(仅限TIMER0)脉冲/电平UARTTX/RX使能脉冲USARTTX/RX使能脉冲...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80515编码器输入(仅限USART0)电平...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80516个软件示例,以研究使用PRS的外设之间的可能交互:•用定时器触发ADC转换•使用模拟比较器和定时器测量脉冲宽度•用GPIO触发UART发送•用软件触发DAC转换3.1用定时器触发ADC转换本例(如图3.1(p.6)所示)展示如何设置ADC0,以便每当定时器0溢出时即启动单次转换。定时器0每次溢出时通过PRS发送持续一个HFPERCLK周期的高电平脉冲,ADC进行单次转换,转换结果在LCD上显示。图3.1.使用PRS实现用定时器0溢出启动ADC0单次转换图3.1(p.6)示出了在定时器0溢出时由定时器0发送给ADC0的一个HFPERCLK周期宽的脉冲。该信号触发一次ADC转换。ADC消费由定时器产生的同一信号。本例所示的情况不需要边沿检测,PRS...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80517保持输入信号不变。ADC被配置为8位分辨率,Vdd既作为参考电压,也作为输入信号。ADC在转换结束时产生单次转换结束中断。CPU随后读取转换结果并将其显示到LCD。显示的结果是ADC0_SINGLEDATA寄存器的直接读取值,该值总是为255,这是因为输入信号与参考电压相同。也可以使用DMA读取转换结果,该主题在“AN0021模/数转换器”中阐述。软件项目prs_timer_adc实现了这个例子,该项目可在STK和DK上使用。3.2使用模拟比较器和定时器测量脉冲宽度本例(如图3.2(p.7)所示)展示如何测量一个任意波形的脉冲宽度或周期。模拟比较器用于通过PRS发送一个电平信号。定时器0既消费脉冲信号,也消费电平信号,因此PRS保持输入信号不变。对于定时器0,PRS信号被用作CC0通道的输入。定时器0在发生一个上升沿时开始计数,在发生一个下降沿时捕获计数器值。图3.2.模拟比较器的电平输出用作定时器0的CC0通道输入的PRS信号...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80518(p.7)示出了模拟比较器的电平输出,该信号被通过PRS发送给定时器,定时器使用捕获功能测量该信号的脉冲宽度。软件项目prs_pulse_width实现了这个例子,该项目可在STK和DK上使用。为了实现触发脉冲宽度测量,PC4(DK原型板上的P4.7)必须连接到VMCU,以产生一个高电平来触发模拟比较器和定时器。当该连接被释放时,模拟比较器的输出会重新变为低电平,此时定时器捕获计数器值并将其显示在LCD上。3.3用GPIO触发USART发送本例(如图3.3(p.8)所示)展示如何使用一个来自GPIO的外部信号来使能USART发送器。图3.3.使用PRS通过GPIO信号使能USART发送器图3.3(p.8)示出了来自一个GPIO引脚的上升沿,该信号被发送到生产者一侧并通过PRS边沿检测器,以在消费者一侧产生宽度为一个HFPERCLK周期的脉冲。GPIO产生的电平信号不能被UART使用,因此必须使用边沿检测器在GPIO的上升沿产生一个脉冲信号。该时钟脉冲使能UART发送器,将保存在发送缓冲器中的数据发送出去。为了使GPIO产生PRS信号,GPIO_INSENSE寄存器中的PRS感测使能位必须被置1。...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-80519实现了这个例子,该项目只能在DK板上使用。为了使能USARTTX引脚,必须将PD0连接到VMCU,以产生一个上升沿。然后,EFM32将通过SERIALA发送字符'X',使用的波特率为57600,无奇偶校验,一个停止位。3.4用软件产生PRS脉冲来触发DAC转换本例(如图3.4(p.9)所示)展示如何用软件产生一个PRS脉冲。PRS脉冲会触发一次DAC转换,在PB11(DK原型板的P3.14)输出一个0.5V的信号。用软件可以产生脉冲和电平信号。在本例的情况下,所产生的是一个脉冲信号,因为这是DAC使用的信号类型。DAC转换也可以由软件在DAC自身内部启动。本例只是展示如何通过PRS来启动转换。图3.4.软件触发的PRS信号图3.4(p.9)示出了由软件触发的宽度为一个HFPERCLK周期的脉冲。可以通过直接写寄存器PRS_SWPULSE和PRS_SWLEVEL来分别产生脉冲和电平信号。也可以使用emlib中的函数来产生这些信号:•voidPRS_PulseTrigger(uint32_tchannels)产生脉冲信号•voidPRS_LevelSet(uint32_tlevel,uint32_tmask)产生电平信号...世界上最节能的微控制器新华龙电子有限公司联系电话:400-886-805110实现了这个例子,该项目可在STK和DK板上运行。3.5监视PRS信号可使用消费PRS信号的外设来监视PRS通道。使用定时器在其所连接的PRS通道有活动时执行捕获就是这样的一个例子。软件项目main_prs_channel_scan以实例说明如何实现这一功能,该项目可在STK和DK板上运行。main_prs_channel_scan项目中的函数PRS_ScanChannel(TIMER_TypeDef*timer,TIMER_PRSSEL_TypeDefprsCh,TIMER_Edge_TypeDefedgeType)可用于监视一个特定PRS通道的活动。该函数将所选定时器的CC0通道设置为捕获一个所选择的信号边沿。该项目可在STK和DK板上运行,所用参数如下:•timer:指向定时器外设寄存器c\block的指针•prsCh:要被监视的PRS通道•edgeType:要被监视/捕获的信号边沿该函数将停止在一个while循环中,等待在PRS通道发生活动。当发生这样的活动时,该函数在LCD上写PRS及通道号。为了在该线产生活动,用户必须将PC4(

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功