图1:调光器框图

该GreenPAK设计由4个主要功能块组成。第一个是UART接收器,它从蓝牙模块接收数据,提取命令,并将它们发送到控制单元。第二个功能块是一个控制单元,它接收来自UART接收器或外部按钮的命令。控制单元决定所需的操作(打开/关闭、调亮、调暗、启用睡眠模式)。该单元使用LUT实现。

第三个功能块是时钟(CLK)发生器。在此项目中,采用了一个FSM计数器来控制PWM。FSM的值将根据3个频率(高、中和低)给出的命令而变化(升高、降低)。在这个部分中,将生成三个频率,所需的时钟信号根据要求的顺序传输给FSM;在打开/关闭操作时,高频信号传输到FSM来进行软启动/停止。在调光期间,中频信号通过。低频信号在睡眠模式通过,从而更慢速地降低FSM值。然后,灯光亮度也会缓慢下降。第四个功能块是PWM单元,它向外部LED生成脉冲。

GreenPAK设计

使用GreenPAK创建调光器设计的最佳方法是使用8 bit FSM和一个PWM。在SLG46620中,FSM1包含8 bits,可与PWM1和PWM2一起使用。必须连接蓝牙模块,这意味着必须使用SPI并行输出。SPI并行输出bits 0到7连接与DCMP1、DMCP2和LF OSC CLK、OUT1、OUT0 OSC输出复用。PWM0从FSM0(16 bits)获得其输出。FSM0不会停在255;它可以增加到16383。为了将计数器值限制在8 bits,增加了另一个FSM;FSM1用来指示计数器何时达到0或255。FSM0用于生成PWM脉冲。由于必须同时更改两个FSM的值来确保它们具有相同的值,因此设计变得有点复杂,两个FSM都具有预定义的、有限的、可选CLK。使用CNT1和CNT3作为介体将时钟信号传送到两个FSM。

设计包含以下部分:

1.UART接收器

首先,我们需要设置HC06蓝牙模块。HC06使用UART协议进行通信。UART代表通用异步接收器/发射器。UART可以在并行和串行格式之间来回转换数据。它包括一个串行到并行接收器和一个并行到串行转换器,它们的时钟是分开的。HC06中接收到的数据将传输到我们的GreenPAK器件。引脚10的空闲状态为HIGH。发送的每串数据都以逻辑低启动位,随后是可配置数量的数据位,以及一个或多个逻辑高停止位。

HC06发送1个起始位、8个数据位和一个停止位。它的默认波特率是9600。我们将从HC06发送数据字节到GreenPAK SLG46620V的SPI模块。

由于Silego SPI模块没有起始位或停止位控制,因此这些位用于使能和禁用SPI时钟信号(SCLK)。当引脚10变为LOW时,IC已经接收到一个起始位,所以我们使用PDLY下降沿检测器来识别通信的开始。该下降沿检测器为DFF0提供时钟,使SCLK信号能够为SPI模块提供时钟。

我们的波特率为每秒9600位,所以我们的SCLK周期是1/9600 = 104 µs。因此,我们将OSC频率设置为2 MHz,并使用CNT0作为分频器。