PSoC 4:PWM控制RGB

电子研发_lp   2013-10-24 23:07 楼主
拿到开发板,经过一段时间的摸索和学习,现在把自己初次使用开发板控制RGB的心得分享给大家:
一、首先建立工程文件
   新建工程.png
这一步很多人都会建立,官方的教程《PSoC®4 Pioneer Kit Guide》略微讲了一些。但是在建立工程的时候,还得细致一些,看清楚开发板上的芯片的型号,以免出现错误。

二、工程文件
文件说明.png
在原理图中,我们使用PWM模块来配置RGB的输出。

三、原理图
原理图.png
对原理图的几点说明:
(1)PWM的时钟设置
我在这里设置Clock的时钟频率为100KHz,原因在于我设置的RGB变化颜色的间隔时间为1S。
(2)PWM模块的设置
PWM配置.png

PWM的配置设置很重要,直接影响RGB灯颜色的出现。况且这三个PWM的配置还不一样:
PWM_Red.png PWM_Green.png PWM_Red.png
(3)芯片引脚的设置
PIN.png
图中红色圈必须选中,表示该引脚外部显示结束,否则会报错,不能进行程序编译。

(4)电源设置
把电源的设置名称尽量与PSoC 4电路板的设置一致,便于区分。

当原理图设置,没有出现报错后,接下来进行引脚配置
四、引脚配置
pin配置.png

五、main.c主函数
PSOC的最大好处就在于,它已经集成了很多的资源,最重要的是它的底层配置已经写好啦,我们直接应用就可以了!不需要在像STM32,C51,AVR, MP430哪样,还得配置引脚,还有各种的设置。我们在原理图中配置好之后,在main中,只需要配置RGB的显示顺序就可以啦。程序如下:
/*****************************************************************************
* LED_Red   - P1[6]
* LED_Green - P0[2]
* LED_Blue  - P0[3]
******************************************************************************/
#include
#define RED 0u
#define GREEN 1u
#define BLUE 2u
#define NUM_OF_COLORS 7u


CYCODE const uint8 colorMap[][3] = {{0x99,0x00,0x99},  /* Violet */
         {0x4B,0x00,0x82},  /* Indigo */
         {0x00,0x00,0xFF},  /* Blue   */
         {0x00,0xFF,0x00},  /* Green  */
         {0xFF,0xD3,0x00},  /* Yellow */
         {0xFF,0x45,0x00},  /* Orange */
         {0xFF,0x00,0x00}}; /* Red    */

void main()
{
    uint8 colorIndex = 0u;

    PWM_Red_Start();
    PWM_Green_Start();
    PWM_Blue_Start();


    Clock_PWM_Start();

    for(;;)
    {
        for(colorIndex = 0; colorIndex < NUM_OF_COLORS; colorIndex++)
       {
            PWM_Red_WriteCompare(colorMap[colorIndex][RED]);
            PWM_Green_WriteCompare(colorMap[colorIndex][GREEN]);
            PWM_Blue_WriteCompare(colorMap[colorIndex][BLUE]);
   
           CyDelay(1000);
       }
    }
}

五、编译
点击编译,系统自动完成编译完成,并且会把底层的程序也显示出来
编译.png
编译之后出现的文件。

六、下载程序
连接PSoC 4开发板,点击下载就可以啦。

还想说几句:
做完第一个实验,心里既高兴也无奈。关键在于PSoC生成的程序比较混乱,出乎了我的意料。虽然能够应用,但是我们在做大兴实际应用开发的时候,混乱的代码会给我带来很大的不便。举一个简单的例子,在主函数中,函数的调用,你无法像KEIL这样,

调用.png 当自己的程序越来越大的时候,这种情况会越来越麻烦。
这只是举一个简单的例子进行说明。

这芯片的强大功能和实用性是其他芯片无可比拟的,给我们开发的人员带来很大的便利,但也看到了诸多的问题,希望赛普拉斯公司能够做出更加人性话的东西。自己的小小心得,大家见笑啦。
  • PWM_Blue.png
非淡泊无以明志,非宁静无以致远。

回复评论 (2)

图文并茂,赞 :)
加油!在电子行业默默贡献自己的力量!:)
点赞  2013-10-25 10:38
非常详细,不错!
点赞  2013-11-9 15:14
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复