在我的上一篇博文中,我为大家介绍了一个动手操作项目:用一个氮化镓 (GaN) 功率级、一个Hercules™ 微控制器和一个滚轮来调节一盏灯的亮度。我讲到了设置、设计,以及如何正确地驱动这个功率级。 在这篇博文中,我打算试一下你的设计成果。经验证,LaunchPad™ 能够产生出正确的信号。那么,就让我们把它接到评估套件上吧。 准备评估套件,并将其连接至LaunchPad开发套件 LMG5200评估模块 (EVM) 一同提供的还有一块驱动GaN集成电路 (IC) 的电路。你需要将其断开,并且连接你的LaunchPad开发套件。  图1:移除电阻器R6和R7 断开板上驱动电路比较容易。你只需要从印刷电路板(PCB,请见图1和图2)上移除两个0Ω电阻器,R6和R7。最简便的方法就是使用一个热风枪、  图2:电阻器R6和R7在PCB上的位置 现在,你有了两个测试点,TP9和TP10,将LaunchPad的脉宽调制 (PWM) 输出连接至LMG5200。在这个情况下,信号与测试点之间没有对应关系。一定不要忘了接地(请见图3)。  图3:PWM信号的位置 按照用户指南,连接万博国际娱乐和偏置电压。将灯连接至输出。如果你按照评估套件用户指南中的顺序将这个设计加电的话(首先是偏置电压,然后是Hercules信号,之后是万博国际娱乐),这个装置将被驱动至其最大功率的10%。在这个功率点上,你可以通过改变HALCoGen中的占空比来更改输出,并重新生成这个项目。这么做可不太方便,那么就让我们来研究一个用户友好的输入机制。 制作旋转编码器 正交编码器随处可见。它们看起来与电位器很相似,不过你可以一直不停地旋转它们。也许你的车载音频系统,或是你的示波器中就有一个。如果你手边就有一个坏了的鼠标,那么这个鼠标中的滚轮就很有可能是一个旋转编码器。 (如果不凑巧的是,你手头那个坏了的鼠标是光电鼠标的话,你就无法将其用于今天的练习了。再找找,或者订购一个与EC101102X2E-VAX相类似的元件。)你使用的旋转编码器类型或者这个旋转编码器所具有的步距数量都不会对这个练习产生太大影响。它们产生的都是格雷码 (Gray code) 要使这个滚轮变成一个稳定、去抖动输入器件,你还需要其它四个组件:2个10K电阻器和2个0.5µF电容器。如果你在实验室找不到电阻值和电容值完全一样的元件的话,也不用灰心丧气,它们不是那么重要。 搭建旋转编码器电路,并将其连接至LaunchPad开发套件 图4中显示的是如何搭建这个电路。  图4:编码器电路 这2个电阻器是上拉电阻器。它们在旋转编码器开关打开时保持A和B处于高电平。当其中任何一个开关关闭时,相应的输出被开关拉至接地。这些电容器使信号变得平滑,并且过滤掉所有抖动。 你将使用具有滚轮的Hercules eQEP外设(正交编码器)。EQEP模块No.2附近的引脚已经被你用于ePWM输出。所以,如表1和图5中所示,将你的滚轮连接至这个引脚。  表1:旋转编码器连接  图5:编码器信号的位置 当你接通编码器时,你可以访问HALCoGen,并修改你的固件。 将滚轮集成到固件中 此时所有硬件都已连接。不过,你仍然需要将滚轮功能嵌入其中。在Hercules应用领域内,你必须完成两件事:在HALCoGen中配置eQEP模块,并且在Code Composer Studio™ 软件内修改你的程序。 将编码器功能集成在固件之内 启用eQEP驱动器,并且配置eQEP模块No.2(图6和图7)。HALCoGen设置看起来似乎很神秘,不过我在element14博文中对它们进行了解释说明  图6:启用编码器模块2  图7:配置编码器2 在Code Composer Studio软件中将驱动器初始化。在你的状态机中,你将定期轮询滚轮的值,并根据其变化做出相应操作。根据旋转编码器的状态,减少或增加PWM信号的占空比。参考rotary.c,pwm.c和HL_sys_main.c文件,查看这些功能是如何实现的。     While(1)
    {
        uRotary = getRotaryPosition();
        if (uRotary != uRotaryLastVal) {
            uRotaryLastVal = uRotary;
            setPwmDutyCycle(uRotary);
        }
    }
针对滚轮的代码也不难。在这个设计中,你可不想让编码器超过最大值,或低于最小值。你可以查看rotary.c,看看我是如何进行编码的。这些代码是有效的,不过我对于这个设计在解码处理方面的表现还不是很满意。如果你有任何好的意见和建议,一定要告诉我,我们来一起搭建一个更好的设计。 你可以下面这些视频中看到这个项目的实际运行效果: