在嵌入式系统中,通常外设之间不能直接通信,对于一些需要外设联动的操作,需要CPU介入,比如定时到了,启动串口的发送/接收,则需要为定时器写一个中断服务程序,在其中启动串口动作。在有一些MCU中,提供了PRS功能,可以让外设之间直接通信。借助PRS,上述例子中,定时器的溢出,可以直接启动串口,而不再需要中断服务程序的介入。这可以进一步解放CPU,也提高了外设处理的实时性。
PRS硬件结构
PRS是Peripheral Reflex System(外设反射系统)的略称,提供了若干可配置的外设互联通道。外设互联通道是一个类似于GPIO的信号连接通道,将一个信号产生外设和一个信号接收外设相连,同时可以指定信号的触发方式:上升沿、下降沿或上升/下降沿。PRS还具有可配置的信号转化功能,因此输出信号可以是脉冲信号、也可以是电平信号。对于每一个MCU,PRS可以配置的信号产生外设和信号接收外设是不同的,需要具体参照相关的数据手册。图 1‑4是EFM32G的PRS电路原理。
图 1 PRS硬件框图
PRS通道将PRS信号生产者(信号源)连接到PRS信号消费者(信号目的)。在使用PRS时,首先需要选择一个PRS通道,然后确定信号的生产者(如硬件定时器)和消费者(如ADC),以及生成PRS的生产者的信号类型(定时器超时)。然后据此设定PRS控制器的寄存器,剩下的交给硬件即可。
PRS的使用
PRS的一个简单的设定流程如图 1‑5所示,但具体的设置与所用的芯片有关,需要参考芯片的数据手册。PRS的使用主要就是一个寄存器的设定过程。首先需要选择一个PRS通道,然后设定该通道的寄存器,将它与信号生产者和消费者相连。同时根据信号消费者的要求,设定输出信号的类型。最后在信号消费者外设侧,使能PRS,并设定信道,让它从该信道接收信号。
图2 PRS设定流程
有的PRS也提供了软件指定输入的寄存器,用于由软件生成相应通道的输出,可以使PRS通道的输入在软件/硬件之间切换,使用更灵活。