EFM32 系列LEUART运用攻略
简介: 本攻略意图在于阐明怎么运用EFM32微控制器的低能耗 UART (LEUART?) 模块。即便在器材处于深度休眠形式EM2的状况下,LEUART 也能进行全功用UART通讯。与智能中止功用及灵敏的DMA 相结合,可完结简略且节能的串行通讯。
* 在低功耗形式下可运用DMA进行数据传输;
* 9600波特率下接纳数据仅耗费150nA电流;
* 运用32.768kHz作为模块时钟源时具有完好UART功用;
* 可装备的接纳数据匹配功用;
* 可作业于EM0~EM2形式。
目录
1 LEUART 原理…………………………………………………………………………………………………………… 3
1.1 一般原理 …………………………………………………………………………………………………………. 3
2 LEUART 装备…………………………………………………………………………………………………………… 4
2.1 帧、传输和奇偶校验 ……………………………………………………………………………………….. 4
2.2 时钟源 …………………………………………………………………………………………………………….. 4
2.3 波特率 …………………………………………………………………………………………………………….. 5
2.4 DMA集成 ………………………………………………………………………………………………………… 5
2.5 脉冲发生器和扩展器 ……………………………………………………………………………………….. 5
2.6 中止 ……………………………………………………………………………………………………………….. 6
2.7 冻住形式和低频域同步 ……………………………………………………………………………………. 6
2.8 DMA集成 ………………………………………………………………………………………………………… 6
2.9 GPIO和引脚分配 ……………………………………………………………………………………………… 6
1 LEUART 原理
LEUART:Low Energy Universal Asynchronous Receiver/Transmitter,低功耗通用异步收发器,是EFM32片上低功耗外设,能够在满意极低功耗的一起供给串口通讯功用。
1.1 一般原理
EFM32的LEUART是一个共同的低功耗UART,能在极为严苛的功耗预算下供给双向通讯。仅需一个32.768 kHz 的时钟源即可完结波特率高达9600的UART通讯。这意味着EFM32的LEUART可在深度休眠形式EM2下作业,在耗费极低能量的状况下等候接纳到来的UART帧。当一个UART帧被LEUART彻底接纳时,CPU可被快速唤醒。还能够挑选用DMA将多个帧传送到存储器中,然后再唤醒CPU。LEUART还具有处理更高层通讯协议的才能。例如,能够挑选堵塞进入的帧,直到检测到一个可装备的开始帧;还能够挑选检测一个可装备的信号帧 (例如用于指示一次传输完毕)。 与接纳进程相同,在EM2形式,可直接从CPU逐帧发送数据,也能够经过DMA来发送较大的帧组。EFM32 LEUART包括支撑异步串行通讯所需求的一切硬件,因此需求最少的软件干涉,并且耗费极低的能量。 LEUART的优势在于能作业在EM2形式,此刻大多数其他模块都出于节能考虑而被关断。低能耗串行通讯选项与不需求CPU干涉即可读写存储器的DMA才能相结合,为体系规划人员在低能耗运用中运用EFM32供给了广泛的功用。
2 LEUART 装备
2.1 帧、传输和奇偶校验
LEUART运用帧来进行数据传输。一个 LEUART 帧由1个开始位、8或9个数据位、1个可选的奇偶校验位和1个或2个中止位组成 (见图2.1 )。一次传输由一个开始位发动,开始位将数据线从闲暇的高电平状况拉为低电平。尔后,数据位和奇偶校验位被依序发送,直到帧传输被中止位完毕,中止位将数据线保持在高电平。然后,数据线或许进入其高电平闲暇状况,或许发送一个新的开始位。当一个帧已准备好要被发送时,它被从发送寄存器传送到移位寄存器,数据位在移位寄存器中被逐位发送,最低有用位在先。可将整个帧格局反相,(例如)以答应运用低电平作为闲暇状况。 在数据位完毕后能够挑选增加奇偶校验位来完结简略的过错检测。有3种不同的奇偶校验形式:无校验、偶校验和奇校验。奇偶校验位的发生和校验都由硬件完结,有中止标志用于指示在帧中是否检测到奇偶校验过错。所希望的帧格局在所选LEUART的初始化期间设置。Emlib 供给一个初始化函数来界说运用LEUART进行串行通讯时所需求的悉数设置。通讯通道的一切运用方都有必要在通讯帧格局上彻底一致。有关LEUART寄存器和功用的详细信息,请拜见器材的参考手册。
2.2 时钟源
像EFM32微控制器中的其他低能耗外设相同,LEUART可由三个不同的时钟源驱动,即低频RC振荡器(LFRCO)、低频晶体振荡器(LFXO)和高频内核时钟2分频(HFCORECLK_LE/2)。HFCORECLK_LE自身可由高频RC振荡器(HFRCO)、高频晶体振荡器(HFXO)或上述任何一个低频振荡器驱动。这种时钟挑选的灵敏性为体系规划人员运用LEUART功用供给了更宽规模的或许性。这意味着除了在低能耗的EM2形式下运用一个低频时钟源作业外,LEUART还能够在需求更多UART通讯通道的状况下作为UART的弥补。不过,为使LEUART到达高于9600的波特率,所选时钟源有必要是HFCORECLK_LE/2,该选项不能在EM1-EM0形式下运用。
2.3 波特率
所选的LEUART时钟源界说了能经过LEUART取得的波特率。在标准低能耗作业形式,LEUART能根据32.768 kHz的时钟供给300 ~ 9600的波特率。有关支撑哪些波特率的详细信息,请拜见器材的参考手册。Emlib包括一些用于核算可用波特率、获取当时波特率以及设置波特率的办法。假如挑选HFCORECLK_LE/2作为LEUART的时钟源,则能够取得更高的波特率,但这也意味着LEUART将不能作业在EM1以下的形式,因此需求耗费更多的能量。此外,由于需求有一个高频时钟运转,所以UART和USART也都是可用的。
2.4 DMA集成
LEUART在EM2形式下具有全功用的DMA支撑。与LEUART结合运用时,DMA是一个十分强壮的东西,能够最小化CPU的干涉。 ? LEUART可被装备为在发送缓冲器为空或发送缓冲区和移位寄存器均为空时向DMA恳求数据。 ? LEUART 可被装备为在接纳缓冲器为满时恳求DMA读取数据。 ? 当在接纳寄存器中检测到一个有奇偶校验过错的帧时,LEUARTn_CTRL寄存器中ERRSDMA位可被置1,不向DMA宣布读恳求。 当MCU作业在EM2形式时,为了履行DMA传送,有必要将DMA控制器上电。关于读操作,假如LEUARTn_CTRL中的RXDMAWU被置位,则上电进程是主动完结的;关于写操作,假如LEUARTn_CTRL中的TXDMAWU被置位,该上电进程也是主动完结的。为保证DMA控制器在低能耗形式仍能与LEUART进行数据传送,有必要正确装备这些位。在EM2形式,DMA运用HFRCO运转,所以该高频振荡器也被主动唤醒和关断。在运用DMA处理LEUART之前,还有必要正确使能和装备DMA。有关怎么初始化一次LEUART和DMA之间的交互的详细信息,请拜见所供给的软件示例和器材的参考手册。
2.5 脉冲发生器和扩展器
LEUART在发射器输出端有一个可选的脉冲发生器,在接纳器输入还有一个可选的脉冲扩展器。脉冲发生器和扩展器能够将LEUART的输入和输出格局从NRZ变为RZI。来自脉冲发生器的脉冲的宽度可被装备为31.25 μs ~ 500 μs。在波特率为2400或更低的状况下,脉冲发生器还能发生与IrDA物理层标准兼容的RZI脉冲。
2.6 中止
在数据接纳和发送期间有很多的中止可用,以支撑中止驱动运用的低能耗优势。当接纳或发送寄存器为空,或在传输期间检测到任何过错时,都能够触发中止。LEUART还具有在检测到特定的可装备帧时触发中止的才能。这就答应在LEUART之上构建更高层的通讯协议。LEUART乃至还支撑一种特别的多处理器形式,能够进行独自寻址和仅触发所希望的MCU来接纳并对发送的数据做出反响。这在多个UART芯片运用同一通道进行通讯的体系中是一个十分有用的特性。有了这种功用,经过运用某些只能在所希望的接纳器中触发中止的帧来发动和完毕数据传输,即可寻址所希望的接纳器。在所供给的软件示例中,信号帧中止功用用于仅在检测到一个特定帧时唤醒CPU。一切其他帧都被DMA加载到存储器中,但CPU不发生任何呼应,直到预设的信号帧被LEUART检测到停止。
2.7 冻住形式和低频域同步
为了修正一些LEUART寄存器,有必要与低频(LF)域完结同步。在需求修正多个寄存器时,为了防止不必要的等候推迟,一切的寄存器写操作都应在同一个软件模块内部完结。该模块由void LEUART_FreezeEnable(LEUART_TypeDef *leuart, bool enable)发动,其间enable被设置为true;由相同的函数调用完毕,不过此处enable被设置为false。这样,一切的寄存器修正操作将会在一次同步中完结。有关拜访和修正异步寄存器的详细信息,请拜见器材的参考手册。
2.8 半双工操作
LEUART供给一个将发送数据本地环回到接纳引脚的选项。该功用对调试十分有用,由于LEUART能接纳它自己发送的数据。但该功用也用于答应LEUART读和写同一个引脚,这是某些半双工通讯形式所需求的。当进行全双工通讯时,LEUART供给两条数据链路,答应一起发送和接纳数据。在半双工形式,某一时间只能在一个方向发送数据。LEUART有多种或许的半双工设置:单数据链路、双数据链路或运用一个外部驱动器。在经过一个单数据链路通讯的状况下,发送器在不发送数据时有必要为三态。假如LEUARTn_CTRL寄存器中的AUTOTRI位被置位,则在发送器不处于活动状况时,LEUART能主动将发送引脚置为三态。
2.9 GPIO和引脚分配
LEUART模块具有将其TX和RX引线衔接到几个不同的预界说MCU引脚方位的才能。有必要经过设置LEUARTn_ROUTE寄存器来使能和衔接TX和RX引线到所希望的方位。
为使LEUART能与任何外部体系元件交互,例如RS232端口或另一外设%&&&&&%,有必要正确装备GPIO的I/O引脚。GPIO有多种不同的引脚形式。在官方所供给的代码样例中,TX引脚被装备为推挽输出,RX引脚被使能为带上拉的输入。在数据线未被其他部件驱动为一个确认值的状况下,上拉使输入有一个确认的状况。这种状况往往发生在TX模块被使能之前使能了RX模块。