跳过主要内容

AN-1118八输出8位PCM使用ASM的LED调光

内容

参考文献

对于相关的文件和软件,请访问:

https://www.dialog-semicondoduments.c亚博电竞菠菜om/products/greenpak.

下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。

yabo国际娱乐Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。

  1. GreenPak Designer软件,软件下载和用户指南,Dialog Semiconductoryabo国际娱乐
  2. AN-1118 8输出8位PCM LED调光,GreenPak设计文件,对话半导体yabo国际娱乐
  3. GreenPak开发工具, GreenPAK开发工具网页,Dialog半导体yabo国际娱乐
  4. GreenPAK应用笔记,GreenPak应用笔记网页,对话框半导体yabo国际娱乐
  5. SLG46531对话框数据表,半导体yabo国际娱乐

作者:玉涵太阳

介绍

本应用笔记将解释如何创建一个8输出LED控制器,每个通道8位分辨率PCM(脉冲编码调制),使用GreenPAK中的ASM块。此外,I2C接口可以从MCU中卸载LED驱动功能,如图1所示。在实施过程中只需要GreenPAK IC的一部分资源;许多块可用来实现其他用户功能。

背景

GreenPAK5中的ASM块具有内置的能力,可以同时驱动8个输出,每个输出具有独立的8位代码,可以由I2C任意设置。代表模拟信号的8位串行码被称为脉冲码调制(PCM)。

图1所示。系统级视图

在这个应用中,我们通过对每个输出位的串行时序进行二进制加权,将PCM码转换为模拟调光电平,这样时间平均电压与码的二进制值成比例。

其结果与PWM(脉冲宽度调制)非常相似,其中数字信号可以简单地通过滤波转换为模拟信号。

PCM方案和PWM方案的区别如图2所示。PCM和PWM波形的平均值相同,均为700mV。然而,PWM每个周期需要更少的转换,因此更适合于需要最小化开关能量损失的应用。亚博国际官网平台网址然而,在LED应用中,周期速率相亚博国际官网平台网址对较慢,所以PCM调光方案的额外过渡没有问题。

优点是,从二进制代码到PCM的自然转换对于在GreenPAK中实现来说更节省资源。

图2。PWM vs PCM

ASM表示GreenPAK设计

设计从ASM开始,这是一个八状态异步状态机。每个状态表示代码中的一个二进制位。

表1。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

重启信号

图3。ASM状态机

状态机循环所有状态,确保每个状态持续指定的时间。通过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完成。有几种方法可以实现这一目标,我们将看出蛮力方法以及更优雅的解决方案。

图4。变化#1,八个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的不需要转换的时间。

时间图1所示。变体#1的ASM输入

方法#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管道延迟分频器。

图5.变体#2。DFFS生成的ASM转换信号
时间图2所示。变体#2的ASM输入
图6。PGEN配置
图7。ASM输出和输出配置

比较

方法1使用17个组件,而方法2只使用7个,最多留下12个组合功能组件,其中7个可以配置为计数器。虽然第一种设计易于理解并易于移植到另一个项目中,但第二种方法中的多路复用节省了更多的资源。在这篇应用笔记中,我们将继续分析pgen和时钟复用解决方案。

表2。比较

方法1 - 8个DFFs

方法#2 - PGEN和时钟复用

使用宏单元

16 + 1

7

剩下的宏单元

3.

12

255

255

时间图3所示。ASM输出时序为图6中的输出配置

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输出身份矩阵

图8。额外的计数器输出
表3。I2C字地址和数据字节示例

字地址

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)

图9。单位矩阵
图10。放大(20人/ div)
图11。I2C写入0xD7
图12。I2C写入0xD6

结论

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输出。