参考文献
有关文件及软件,请浏览:
//www.wsdof.com/雷电竞官网登录products/greenpak
下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。
雷竞技电竞平台Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。
- GreenPAK设计软件,软件下载和用户指南,Dialog Semiconductor雷竞技电竞平台
- AN-1118 8输出8位PCM LED调光,绿派克设计文件,Dialog半导体雷竞技电竞平台
- GreenPAK开发工具, GreenPAK开发工具网页,Dialog半导体雷竞技电竞平台
- GreenPAK应用笔记,绿派克应用笔记网页,对话半导体雷竞技电竞平台
- SLG46531.对话框数据表,半导体雷竞技电竞平台
作者:余汉太阳
介绍
本应用笔记将解释如何创建一个8输出LED控制器,每个通道8位分辨率PCM(脉冲编码调制),使用GreenPAK中的ASM块。此外,I2C接口可以从MCU中卸载LED驱动功能,如图1所示。在实施过程中只需要GreenPAK IC的一部分资源;许多块可用来实现其他用户功能。
背景
GreenPAK5中的ASM块具有内置的能力,可以同时驱动8个输出,每个输出具有独立的8位代码,可以由I2C任意设置。代表模拟信号的8位串行码被称为脉冲码调制(PCM)。
在这个应用中,我们通过对每个输出位的串行时序进行二进制加权,将PCM码转换为模拟调光电平,这样时间平均电压与码的二进制值成比例。
其结果与PWM(脉冲宽度调制)非常相似,其中数字信号可以简单地通过滤波转换为模拟信号。
PCM方案和PWM方案的区别如图2所示。PCM和PWM波形的平均值相同,均为700mV。然而,PWM每个周期需要更少的转换,因此更适合于需要最小化开关能量损失的应用。雷竞技安卓下载然而,在LED应用中,周期速率相雷竞技安卓下载对较慢,所以PCM调光方案的额外过渡没有问题。
优点是,从二进制代码到PCM的自然转换对于在GreenPAK中实现来说更节省资源。
ASM表示GreenPAK设计
该设计从ASM开始,八态异步状态机。每个状态代表代码中的二进制比特。
State0 |
State1 |
State2 |
State3 |
State4 |
State5 |
State6 |
State7 |
|
少量 |
bit0 (LSB) |
Bit1. |
Bit2. |
Bit3. |
Bit4. |
Bit5. |
Bit6. |
Bit7(MSB) |
时间(T) |
T / 256 |
T / 128. |
T / 64 |
T / 32 |
T / 16 |
T / 8. |
T / 4. |
T / 2. |
责任% |
0.390625% |
0.78125% |
1.5625% |
3.125% |
6.25% |
12.5% |
25% |
50% |
转换 |
CLK / 2 |
CLK / 4 |
CLK / 8 |
CLK / 16. |
CLK / 32 |
CLK / 64 |
CLK / 128. |
重新启动信号 |
状态机循环所有状态,确保每个状态持续指定的时间。通过ASM的一个完整循环对应一个周期。请参见图3中的状态图。状态图描述了状态转换的方向,从初始状态0开始,顺时针移动到状态7。状态7然后循环回到状态0,开始一个新的周期。
状态0表示最低有效位bit0,状态7表示最高有效位bit7。每个状态所代表的位、占空比和占空比请参见表1。
状态过渡信号以严格的间隔出现,以确保每个状态只持续指定的时间量。
这一数额是计算期间的一小部分0至7个国家。参见图4。每个OSC部门都连接到顺序过渡信号。每个后续状态持续的时间是前一个状态的两倍,因为每个后续状态都是在左边的二进制位。即状态0的持续时间为T/256,状态1的持续时间为T/128。
GreenPAK设计,ASM输入
ASM状态临时输入必须是CLK的二进制划分,如上一节所述。在这个设计中,划分是用dff来完成的。有几种方法可以实现这一点,我们将着眼于蛮力方法以及更优雅的解决方案。
第一种方法是将一个DFF串接在另一个DFF之后,得到8个被分割的时钟。第二种方法是使用PGEN来产生所有必要的过渡信号。下面将对此进行讨论。
注1:重要的是要记住,ASM过渡输入是高主动的,这将在生成ASM输入信号时考虑。
方法1 - 8个DFFs
第一种方法总共使用8个DFF,每个ASM输入一个DFF。在这里,管道延迟被用作DFF,但带有额外的反向输出。每个DFF切换到时钟下一个DFF,这样每个DFF的频率是前一个DFF的一半,产生所需的DFF输入信号。
每个DFF输出都反转以防止所有信号同时高,这将导致ASM以圆圈循环。最后,循环在每个周期结束时通过上升沿检测器(Pdly)重置,这将改变256至255的周期宽度,其效果在“分辨率”部分中讨论。
注意DFF6是NORed带有CLK/128,当CLK/128上升时,CLK/1被强制为零,如图1所示。这也是为了防止CLK/1和CLK/128同时过高,从而导致从状态7到状态0的不必要转变。
方法#2 - PGEN和时钟复用
第二种方法使用一个PGEN和时钟复用电路来产生定时脉冲。PGEN配置有1S和0的图案,如图6所示。选择图案的1和0,使得上升和下降沿对应于时序EDGE_DET0检测上升沿和边缘_DET1检测下降沿。当组件检测到边缘时,这些块的输出脉冲高。
我们使用两个边缘检测器而不是一个,这样每个其他ASM输入都有相同的源。
PGEN仅限于16位模式,这仅是四个连续边缘的足够位。为了将PGEN拉伸到下一个边缘,在快速2MHz / 8时钟和慢速2MHz / 8/16时钟之间复用到PGEN时钟的输入。多路复用器的选择位来自DFF5,当检测到两个红色脉冲时,从高到低电平降低。DFF5还支持/ 16管延迟分频器。
|
|
比较
方法#1使用17个组件,而Method#2仅使用7,最多留下12个组合功能组件,其中7个可以配置为计数器。虽然第一个设计易于理解和进入另一个项目,但第二种方法中的多路复用节省了更多的资源。在此应用笔记中,我们将继续分析PGEN和时钟复用解决方案。
方法1 - 8个DFFs |
方法#2 - PGEN和时钟复用 |
|
使用宏单元 |
16 + 1 |
7 |
剩下的宏单元 |
3. |
12 |
段 |
255 |
255 |
GreenPAK设计,ASM输出
ASM output是连接到GPIOs 20到13的PCM代码。
图7中的输出表被配置为使得每个ASM输出表示一个ASM状态。这是为了示出时序图3中所示的每个状态的相对定时。OUT0是第一且最短的,因为它代表了STAME0-BIT0。Out7是最后一个和最长的,因为它代表了State7-Bit7。每个输出与其相邻输出没有重叠,每个输出都是前一个输出的两倍。
决议
唯一PCM代码的总数为256,从0到255.对于这种设计,该期间分为255个段。通常,GreenPak的PWM块输出具有256个段的段。
最后一段强制强迫高或低,使得输出占空比范围为0-99.6%或0.4-100%。
为了实现第256段,我们需要第9个状态。然而,GreenPAK5的ASM只有8个州。
为了避免重置,我们将周期强制为255段。这导致占空比范围从0到100%,分辨率是0.39215%(1/255)而不是0.390625%(1/256)。这种逻辑已经集成到具有15位模式的PGEN中。PGEN将通过15个快时钟和15个慢时钟进行计时。每个慢钟比快钟慢16倍。因此,段的总数为:16*15 + 15 = 255。
14总调制输出
除了从ASM的八个输出,我们可以利用剩余的计数器作为更多的调制输出。请参见图8。
由于PCM和PWM可互换用于时间平均电压应用,因此剩余计数器可用于创建PWM输出。雷竞技安卓下载一个计数器创造了这个时期,其余部分比周期短。8 ASM输出+ 6个CNT输出使14个PWM / PCM输出。
I2C
单片机可以利用I2C来改变PCM值,只在需要时进行更新。
ASM输出配置位于字地址(0x0h) D0, D1, D2, D3, D4, D5, D6和D7。表2视图。
为了改变一个ASM输出,我们必须重写所有8个寄存器。例如,在表2中,OUT2被更改为0x42。这需要我们写入8字节的数据,从D0到D7,其中第三个最低有效位在下面的'红色'被改变。命令如下:
[0xSA, 0xD0, 0x22, 0xE7, 0xB0, 0xE4, 0xB0, 0xE4, 0x70, 0xE8]
其中SA为从地址。
在400kHz时,不包括启动位和停止位,单片机可以改变输出代码的最大速度为225µs (4.4kHz)。
这给了我们足够的空间,因为肉眼无法识别超过24Hz的变化。
在I2C写入期间,输出不会在更新数据时缩小。这是因为始终锁存ASM状态输出,直到状态转换为止。
但是,也可能存在一个周期,这个周期既不是一个PCM代码也不是另一个,而是由于在周期中间的数据变化而将两者混合在一起。
其他示例命令有:
[0xSA,0xD0,0xAA 0xcc 0xF0 0x00 0x00 0x00 0x00 0x00]输出7,6,5,4,3,2,1,0
[0xSA, 0xD0, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80]输出图6中的单位矩阵
字地址 |
7 |
6 |
5 |
4 |
3. |
2 |
1 |
0 |
数据字节 |
D0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0将 |
D1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 xe7 |
D2 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 xb0 |
D3 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 xe4 |
D4 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 xb0 |
D5 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 xe4 |
D6 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0x70. |
D7 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 xe8 |
小数 |
190 |
234 |
255 |
84. |
128 |
42 |
3. |
2 |
波形的功能
D0 -引脚#20 (out0)
D1 - PIN#19(OUT1)
D2 - PIN#18(OUT2)
D3 - PIN#17(OUT3)
D4 - PIN#16(OUT4)
D5 - PIN#15(OUT5)
D6 -引脚#14 (out6)
D7 -引脚#13 (out7)
D8 -(红色)
D9 -(美联储)
D10 - (PGEN OUT)
D11 - PIN#8(SCL)
D12 -引脚9号(sda)
结论
SLG46531V ASM可以配置为实现八个PCM输出通道,每个PCM输出具有8位分辨率。所有输出都会同步到ASM周期,输出代码可以用I2C重写。这允许GreenPak5独立于MCU运行,这可能会在一段时间内唤醒以更新PCM代码,节省电量和GPIO。
使用多路复用时钟和图案发生器,7个组件被用来做ASM输入,留下12个其他组件备用。
在计数器/延迟模式下配置组合宏单元允许最多6个PWM输出信号,总共14个脉冲调制输出。在20针格林纳克5中,我们可以有效地驱动14个输出,从2个I2C输入接收信息,仍然有2个GPIO,可用于MCU和GreenPak之间的启用或中断。在此应用笔记中,您应该能够使用GreenPak5和ASM制作自己的基本资源高效的PCM输出。