参考文献
对于相关的文件和软件,请访问:
https://www.dialog-semicondoduments.c亚博电竞菠菜om/products/greenpak.
下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。
yabo国际娱乐Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。
- GreenPak Designer软件,软件下载和用户指南,Dialog Semiconductoryabo国际娱乐
- AN-1118 8输出8位PCM LED调光,GreenPak设计文件,对话半导体yabo国际娱乐
- GreenPak开发工具, GreenPAK开发工具网页,Dialog半导体yabo国际娱乐
- GreenPAK应用笔记,GreenPak应用笔记网页,对话框半导体yabo国际娱乐
- SLG46531对话框数据表,半导体yabo国际娱乐
作者:玉涵太阳
介绍
本应用笔记将解释如何创建一个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. |
立式3. |
State4. |
State5. |
State6. |
State7. |
|
位 |
bit0 (LSB) |
bit1 |
bit2 |
第3位 |
相加 |
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表示最低有效位,位,而状态7表示最高有效位Bit7。有关该位的比特,部分和占空比的表1是指每个状态所代表的。
状态暂时性信号以严格的间隔发生,以确保每个州只持续指定的时间。
这一数额是计算期间的一小部分分别为州0到7。请参阅图4.每个OSC分部连接到顺序转换信号。由于每个后续状态是左侧的二进制位置,因此每个后续状态持续两倍。IE。状态0具有T / 256的持续时间,状态1具有T / 128的时段。
GreenPAK设计,ASM输入
ASM状态暂时性输入必须是CLK的二进制划分,如前一节所述。在这种设计中,分区使用DFFS完成。有几种方法可以实现这一目标,我们将看出蛮力方法以及更优雅的解决方案。
第一种方法是将一个DFF串接在另一个DFF之后,得到8个被分割的时钟。第二种方法是使用PGEN来产生所有必要的过渡信号。下面将对此进行讨论。
注1:重要的是要记住,ASM转换输入很高,并且在生成ASM输入信号时将考虑到这一点。
方法1 - 8个DFFs
第一种方法使用总共8个DFF,一个用于每个ASM输入。这里,管道延迟用作DFF,但具有额外的反转输出。每个DFF切换到时钟下一个DFF,使每个DFF是其前述DFF的频率的一半,产生必要的输入信号。
每个DFF输出被反向,以防止所有信号在同一时间高,这将导致ASM环路在一个圆。最后,周期通过上升边缘检测器(PDLY)在每个周期结束时重置,这将改变周期宽度从256到255,其影响将在“分辨率”一节中讨论。
注意DFF6采用CLK / 128击中,使得当CLK / 128变高时,CLK / 1被强制为时序图中所示的零。这也是为了防止CLK / 1和CLK / 128相同的高导致从状态7到状态0的不需要转换的时间。
方法#2 - PGEN和时钟复用
第二种方法使用一个PGEN和一个时钟复用电路来产生时间脉冲。PGEN配置为1和0的模式,如图6中的配置所示。选择模式的1和0,使上升和下降边与的时间相对应EDGE_DET0检测上升边,EDGE_DET1检测下降边。当组件检测到边缘时,这些块的输出脉冲高。
我们使用两个边缘探测器而不是一个边缘探测器,使得每个其他ASM输入具有相同的源。
PGEN被限制为只有16位模式,这仅够四个连续的边。为了将PGEN延伸到接下来的4条边,PGEN时钟的输入在快速的2MHz/8时钟和缓慢的2MHz/8/16时钟之间复用。多路复用器的选择位来自DFF5,当检测到两个红色脉冲时从高到低切换。DFF5还启用/16管道延迟分频器。
|
|
比较
方法1使用17个组件,而方法2只使用7个,最多留下12个组合功能组件,其中7个可以配置为计数器。虽然第一种设计易于理解并易于移植到另一个项目中,但第二种方法中的多路复用节省了更多的资源。在这篇应用笔记中,我们将继续分析pgen和时钟复用解决方案。
方法1 - 8个DFFs |
方法#2 - PGEN和时钟复用 |
|
使用宏单元 |
16 + 1 |
7 |
剩下的宏单元 |
3. |
12 |
段 |
255 |
255 |
GreenPAK设计,ASM输出
ASM输出是连接到GPIOS 20到13的PCM代码。
图7中的输出表被配置为每个ASM输出代表一个ASM状态。这将显示每个状态的相对时间,如时序图3所示。OUT0是第一个也是最短的,因为它表示stat0 -bit0。OUT7是最后的也是最长的,因为它代表stat7 -bit7。每个输出都没有与其相邻输出的重叠,每个输出的长度都是前一个的两倍。
决议
唯一的PCM码总数为256,取值范围为0 ~ 255。本设计将周期分为255个部分。通常,GreenPAK的PWM块输出一个带有256段的周期。
最后一段被强制高或低,这样输出占空比范围从0-99.6%或0.4-100%。
为了实现第256个段,我们需要第九州。然而,GreenPak5的ASM只有八个州。
为避免重置,我们强迫段落到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
MCU可以利用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 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 |
0 x70 |
D7 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 xe8 |
小数 |
190 |
234 |
255 |
84 |
128 |
42 |
3. |
2 |
波形的功能
D0 -引脚#20 (out0)
D1 -引脚#19 (out1)
D2 -引脚#18 (out2)
D3 -引脚#17 (out3)
D4 -引脚#16 (out4)
D5 -引脚#15 (out5)
D6 -引脚#14 (out6)
D7 -引脚#13 (out7)
D8 -(红色)
D9 -(美联储)
D10 - (PGEN out)
D11 -引脚#8 (scl)
D12 -引脚9号(sda)
结论
SLG46531V ASM可以配置为实现八个通道的PCM输出,每个通道的分辨率为8位。所有输出同步到ASM周期,输出代码可以用I2C重写。这使得GreenPAK5可以独立于MCU运行,MCU可以偶尔唤醒来更新PCM代码,节省功耗和gpio。
使用多路复用时钟和图案生成器,使用7个组件来制作ASM输入,留下12个其他部件来备用。
在计数器/延迟模式下配置组合宏单元允许多达6个PWM输出信号,总共14个脉冲调制输出。在一个20引脚的GreenPAK5中,我们可以有效地驱动14个输出,接收来自2个I2C输入的信息,并且仍然有2个gpio,可以用来在MCU和GreenPAK之间使能或中断。从这篇应用笔记中,您应该能够使用GreenPAK5和ASM制作自己的基本资源高效PCM输出。