搜索
bottom↓
回复: 25

PSoC_kit多功能实验开发板的测试与PSoC基础入门(初稿,编写中) 【恢复】

[复制链接]

出0入0汤圆

发表于 2008-11-25 13:19:41 | 显示全部楼层 |阅读模式
最新的照片



 (原文件名:psoc_kit.jpg) 

一、测试与入门工具

 1。硬件

   A。PC机

   B。PSoC_kit板、9V/1A电源适配器(交流、直流都可以)、配件模块(LCD)、相应的通信线(RS232、USB)与连接排线

   C。ISSP编程器(现阶段可使用CY原厂的MINIPROGRAMMER)

   D。万用表

 2。软件

   A。PSoC Designed 5.0 开发平台(CY官站下载,免费,300M,内含HI-TECH C COMPILER Pro V9.61PL1,45天试用版)

   B。psoc_programmer_3_00 ISSP下载软件(CY官站下载,免费,安装后即自动嵌入到PSoC Designed 5.0中,也可单独使用)

   C。任何一个你喜欢的串口调试软件

   D。用于PSoC功能测试的工程文件(后面逐步提供)



二、PSoC_kit板的基本静态测试

    1。插上9V电源,接通电源开关,PW_LED亮。使用万用表检查排针+5V和GND之间应该为5V。

    2。使用一根连接线将JA1上8个插针与GND短接,A区上8个LED应该逐个亮

    3。使用一根连线将+5V与JC1上的a连接,另一根连线分别将JC2、JC3上的1、2、3、4、5、6、7、8与GND连接,此时C区的8个LED数码管的a段分别点亮。

    4。同上,可以测试 8个LED数码管的bcdefgp各个段

    5。使用一根连接线,将JF1分别与JJ1上的各个插针连接,蜂鸣器(无源)发出不同音调的声音。证明J区和F区是好的(注意:16K以上人耳已经听不到了)

    6。AD电源(E区),通电后,调节电位器WE1,用万用表检测JE1的电压,应该在(0-5V之间)

    7。机械按键(H区)、键盘(G区)比较简单,用万用表测量一下连接情况

    此时,基本外围的测试已经完成。



三、安装PSoC Designed 5.0、psoc_programmer_3_00



四、测试M区的RS232转换

    1。用连接线将JM2的TXD和RXD短接,打开电源。

    2。用RS232电缆将PSoC_KIT(JM1口)连接PC的COM口(使用手提的需要使用USB_TO_RS232转接电缆)

    3。在PC上运行串口调试软件。在发送区发送任何一个字符,在接收区中应该能收到该字符(原理太基本了,不介绍了)



五、测试USB连接

    1。参考文件如下(CY站上有部分中文版的),点击此处下载 ourdev_513235.pdf(文件大小:133K) (原文件名:communication___using_the_usbuart_user_module___an2401_12.pdf) ,点击此处下载 ourdev_513475.pdf(文件大小:320K) (原文件名:USBUART Device Data Sheet(中文).pdf),点击此处下载 ourdev_513476.pdf(文件大小:154K) (原文件名:USBUART Device Data Sheet.pdf) 

    2。原理简介。CY8C24894含一个FULL USB(12M)接口,同时提供了USBUART用户模块。这样用户可以跳过USB的低层,在几分钟内实现PC的USB直接与PSoC的USB通信,而且在PC上是按传统习惯使用的,简单(比USB)的对串口编程方式,PSoC的USBUART则提供了上层API,可直接使用。

    3。准备USB连接电缆。注意配合PSoC_KIT使用的USB连接电缆的不同,如下图所示:



 (原文件名:USB_1.jpg) 

       如果你是嵌入式工程师,建议购买如下图的多用USB连接电缆组件,这样大部分标准的USB接口都能用了,携带也方便:



 (原文件名:USB_2.jpg) 

    4。测试需要的文件。CY8C24894的固件HEX文件和驱动文件:点击此处下载 ourdev_514355.rar(文件大小:5K) (原文件名:usbuart_demo.rar)

    5。使用ISSP编程器将HEX文件下载到CY8C24894中:

 

 (原文件名:下载.jpg) 

    6。用一根连接线将CY8C24894的P5.0与A区JA1上任何一个LED连接,该LED作为USB连接是否正常的指示灯

    7。用USB连接电缆将PC的一个USB口与PSoC_kit板上的USB连接,打开PSoC_kit电源。PC发现有USB设备,提示安装USBUART_demo的驱动(驱动在usbuart_demo.rar中)。

    8。驱动安装完成后,PC与USBUART自动完成低层USB的初始化工作。正常后LED亮。在PC的设备管理器中查看:

 

 (原文件名:USBUART设备.jpg) 

        里面多了一个COM设备,记住它的COM口号(本例中为COM5)。

        拔掉USB连接,该设备没有了,LED熄灭;插上USB,设备又出来了,LED亮。说明USB正常连接上了。

    9。在PC上运行串口调试软件,连接COM5(根据你自己的情况),连续发送数据,查看接收的数据是否与发送的数据相同:

       A/ 串口调试软件的设置:



 (原文件名:串口调试设置.jpg) 

       B/测试结果:



 (原文件名:测试结果.jpg) 

       本测试,每隔1ms发送一个60字节的数据包,上面是PSoC收到数据后再回送到PC的数据,发送字节与接收字节数相同。



       注意:发送的数据包最大为64个字节,而且不能是8的倍数(仅对于XP+SP3系统,这个是USBUART的BUG,CY的工程师正在做修改。我发现后,向他们提出已经快1个月了,目前还没有结果)。





     10。测试原码如下,供参考;

//----------------------------------------------------------------------------

// C main line

//----------------------------------------------------------------------------



#include <m8c.h>        // part specific constants and macros

#include "PSoCAPI.h"    // PSoC API definitions for all User Modules



BYTE Len;

BYTE usb_state,usb_delay;

BYTE pData[64];



void usb_ck(void)              // 此函数在由定时中断调用,1/8秒一次

{

    if (usb_state == 2)

    {

        if (!USBUART_bCheckUSBActivity()) usb_state = 0;

    }        

}



void main()  

{  

    USBUART_Start(USBUART_5V_OPERATION);   //Start USBUART 5V operation    

    usb_state = 0;

    SleepTimer_Start();  

    SleepTimer_EnableInt();

    M8C_EnableGInt;                        //Enable Global Interrupts    



    while(1)  

    {

        switch(usb_state)

        {

        case 0:

                PRT5DR |= 0x01;            // USB指示灯灭 

                if (USBUART_Init()) usb_state = 1;     //与PC连接后转1

             break;

        case 1:

                if (USBUART_bCheckUSBActivity())       // USB正常

                {

                    PRT5DR &= 0xfe;                   // 点亮USB的指示灯

                    usb_state = 2;

                }        

             break;

        case 2:

            Len = USBUART_bGetRxCount();       //Get count of ready data  

               if (Len) 

            {

                usb_delay = 0;

                USBUART_Read(pData,Len); 

                       while(usb_delay < 50)

                   {

                        if(USBUART_bTxIsReady())

                        {

                             USBUART_Write(pData, Len);     //Echo

                             break;

                        }

                        else

                             ++usb_delay;

                    }

                }

                break;

         }        

    }   

}



   从这个简单的测试例子看出,使用PSoC + USBUART模块,你的系统可以非常方便的与PC通过USB连接通信(实际就是USB转COM口!)。而在PC层面,用户已经跳过USB的低层,面对传统的COM口编程了。在这个例子中,就上面的C代码是我编写的,仅为上层的测试代码。其它USB的低层和API函数,以及USBUART的驱动都是由PSoC的开发系统自动产生的(当然需要正确的配置了,具体请看1中提供的参考文献吧)。





六、简单音乐播放(测试按键、蜂鸣器;学习使用GPIO引脚中断和16位定时器)

    1。利用PSoC内部2个数字模块构成一个16位的定时器。只使用此一个资源产生不同频率和时长方波,推动蜂鸣器发出音乐。

    2。利用PSoC的一个GPIO,连接一个按键(音乐PLAY键),采用引脚中断方式检测按键。

    3。使用一根连线,将CY8C29466的P1.2(音乐方波输出)与蜂鸣器JF1连接;使用另外一根连线将CY8C29466的P1.3与一个按键连接(JH5上K1、K2、K3、K4中的一个),该按键作为PLAY键。

    4。点击此处下载 ourdev_514935.rar(文件大小:2K) (原文件名:music.rar)HEX文件,使用ISSP编程器将文件下载到CY8C29466中。

    5。按一下PLAY按纽,播放一遍音乐(儿童歌曲:我爱北京天安_门),播放在后台自动完成,占用CUP运行资源非常少,非常容易嵌入移植到其它应用中。



    6。测试源代码

//----------------------------------------------------------------------------

// C main line

//----------------------------------------------------------------------------



#include <m8c.h>        // part specific constants and macros

#include "PSoCAPI.h"    // PSoC API definitions for all User Modules

#include  "TIMER16.h"  

  

#define Max_note    32

unsigned int        t[9] = {0,956,865,759,716,638,568,506,470};

unsigned char        d[9] = {0,105,116,132,140,157,176,198,209};

unsigned char        music[Max_note] = {5,2,8,2,5,2,4,2,3,2,2,2,1,4,1,2,1,2,2,2,3,2,3,2,1,2,3,2,4,2,5,8}; 

unsigned char        note_n;

unsigned int        int_n;

unsigned char        play_on;



void key_int(void)                // 按键中断服务程序

{

    if (!play_on)

    {

        Timer16_Start();        // 启动T16,播放音乐

    }

}



void isr_T16(void)                // T16 timer out 中断服务

{

    PRT1DR ^= 0x04;                // port1.2取反,输出方波信号

    if (!play_on)

    {

         note_n = 0;

         int_n = 1;

         play_on = 1;                // 开始重头播放音乐

    }

    else

    {                            // 播放一个音符

        if (--int_n == 0)       

        {                        // 一个音符播放完成

            Timer16_Stop();                // 停止T16

            if (note_n < Max_note)        // 音乐未播完

            {                                        

                Timer16_WritePeriod(t[music[note_n]]);        // 取下一个音符

                int_n = d[music[note_n]];                        // 取该音符的基本节拍单位

                note_n++;

                int_n = int_n * music[note_n];                // 计算该音符的节拍值

                note_n++;

                Timer16_Start();                        // 启动T16,播放1个音符

            }

            else

                play_on = 0;                                // 整个音乐播放完成

        }

    }

}



void main(void)

{

    Timer16_EnableInt();

    M8C_EnableIntMask(INT_MSK0, INT_MSK0_GPIO);        //开放GPIO中断

    M8C_EnableGInt;                                //开放全局中断

    Timer16_Start();                                //开始放一遍音乐

    while (1)                        // 主程序

    {};

} 



    

七、测试触摸键、滑条和LCD

    1。采用电容感应式的触摸按键、滑条应用是PSoC主要的特点之一。本测试中使用了2个用户模块:1/CSD实现触摸按键、滑条。2/LCD用于显示按键和滑条的效果和参数。LCD模块相对比较简单,但CSD的原理和参数调试就非常复杂了,下面是2个模块的手册:点击此处下载 ourdev_515515.pdf(文件大小:1.17M) (原文件名:CSD.pdf);点击此处下载 ourdev_515516.pdf(文件大小:118K) (原文件名:LCD.pdf) 

    2。CY8C24894支持电容感应式的触摸应用以及带USB接口,这也就是KIT选择此芯片的原因,尽管它的封装形式不适合实验。CY8C29466不支持前2个功能,但它内部有16个数字单元和12个模拟单元,是PSoC中最多的。板上采用这样2块芯片,可以含盖PSoC决大部分的特点了。

    3。这个测试实验需要连接的线比较多,先把电路图贴上。

       A/LCD的连接: 



 (原文件名:lcd.jpg) 

         要直接使用LCD用户模块,就必须按上图连接。本例中使用CY8C24894的PORT_2。按图使用7根线将PORT_2对应的脚与B区LCD的JB2连接,在JB3中插上LCD液晶屏。

       B/触摸按键、滑条的连接。在板的左下方有4个触摸按键盘,和8个滑条块(JK1),本例中使用12根连线,将它们直接与CY8C24894的引脚连接。对应关系为:S1-S8<===>P4.0-P4.7,K5-K8<===>P0.0-P0.3

       C/CSD需要外部增加一个电阻和电容做配合,并只能使用规定的连接。R和C已经在板上了。本例中使用P1.5与电阻连接(JK2);P0.5与电容连接(JK3)。



 (原文件名:csd.jpg) 



        总共连接21根线。

    4。点击此处下载 ourdev_515695.rar(文件大小:4K) (原文件名:csd_lcdt.rar)HEX文件,使用ISSP编程器将文件下载到CY8C24894中。

    5。LCD上面一行显示按键:手触K5园盘,LCD显示00;K6-01;K7-02;K8-03。LCD下面显示滑条,手指从滑条上从左到右移动,LCD下面有个“=”也从左到右移动,手指到第4/5个滑条块,“=”从右边返回左侧,然后继续向右。LCD上面有数字显示,从小到大变化。

    6。手指同时触摸K5和K6两个园盘不放,1秒后LCD显示相关的参数(什么意思,自己看资料了)。手指再同时触摸K5和K6两个园盘不放,1秒后LCD转换到5的显示方式。



    7。测试源代码。比较长,下载吧。点击此处下载 ourdev_515736.rar(文件大小:1K) (原文件名:csd_lcd.rar)    



    8。测试效果照片:下图是测试电容感应式触摸键和滑条的情况(晚上在12W的日光灯下拍的,质量不好):

        LCD第一行显示的01、03表示1、3号键按下,43表示滑条位置(最左为0,最右为120)。

        LCD第二行的等号,会随手在滑条上左右移动而左右运动(从0到120,等号从左到右2次,第一次到最右边为60)



 (原文件名:psoc_kit.jpg) 



八、测试UART、3*4键盘

    1。目的学习使用键盘和UART用户模块,测试键盘和RS232接口。

    2。使用CY8C29466,

       硬件连接:P0.0---TXD(JM2)、P0.1---RXD(JM2);

                 P1.0\P1.1\P1.2---Y1\Y2\Y3(JG2),注意下载代码时先将Y1拔掉;P1.3\P1.4\P1.5\P1.6---X1\X2\X3\X4(JG1);

                 P2.0-P2.7 ---- JA1(8个LED)

    3。点击此处下载 ourdev_533036.rar(文件大小:4K) (原文件名:keyboard_uart_led.rar) ,内含源代码。

    4。使用RS232电缆,将PC(COM口)和PSoC_KIT(JM1)连接,在PC上运行串口调试精灵,设置BPS为38400。

    5。测试接收:串口调试精灵接收ASCII字符方式,按PSoC_KIT的3*4键盘,在串口调试精灵上收到对应的键盘数字:0、1、2、3、4、5、6、7、8、9、A、B。

    6。测试放送:串口调试精灵发送设置成16进制发送方式,输入16进制数,按发送,PSoC_KIT收到数字,并在8个LED上显示相应的数值(二进制)。



    (待续。。。。。。)



本贴被 machao 编辑过,最后修改时间:2008-12-08,13:26:33.

出0入0汤圆

发表于 2008-11-26 19:07:12 | 显示全部楼层
先顶一下,在看

出0入0汤圆

 楼主| 发表于 2008-11-26 18:39:52 | 显示全部楼层
东西不少了,够喝上一壶的了。



接下来要设计几个模拟的应用例子。

出0入0汤圆

 楼主| 发表于 2008-11-25 15:44:19 | 显示全部楼层
to 阿莫:



暂时就这样吧,还是叫“PSoC专栏”,我目前只是临时负责一下,因为只能给大家一些基础的入门参考。PSoC的东西和内容比AVR要多和复杂,尤其是模拟应用的部分,从技术上我理解的还不够深入,经验也不多,所以单独拉出来不合适。



目前国内真正了解和熟悉PSoC的人还不多,使用“PSoC专栏”名字也能更好的让大家参与进来。如果这里发展到真正从技术上能吸引了更多的人,影响力大了,CY公司也会重视的,我是希望CY公司能有专门的工程师参与。



CY的官方站上,有到21ic_PSoC讨论组的链接,阿莫你这里做的好,将来也会有名的。^_^

出0入0汤圆

发表于 2008-11-25 15:14:01 | 显示全部楼层
这个一定要顶,很期待啊!
头像被屏蔽

出0入0汤圆

发表于 2008-11-25 14:43:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2008-11-25 14:27:27 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2008-12-8 16:00:19 | 显示全部楼层
此提议太好了

出0入0汤圆

 楼主| 发表于 2008-12-7 20:42:54 | 显示全部楼层
做出来好做,做的好就不容易了。

出0入0汤圆

发表于 2008-12-5 23:19:26 | 显示全部楼层
好东西啊 ~~~我们这里有个博士用了一片这个芯片做了个触摸式按键~  

我还没有接触过这东西~  好像很好玩~~

出0入0汤圆

发表于 2008-12-2 21:30:56 | 显示全部楼层
psoc_programmer_ISSP下载软件自由2.33版本的, 没有3.0的? 麻烦给个链接,可否?

出0入0汤圆

发表于 2008-11-27 16:01:18 | 显示全部楼层
支持吗老师,期待中

出0入0汤圆

发表于 2009-3-3 16:06:18 | 显示全部楼层
谢谢马老师指导!期待

出0入0汤圆

发表于 2009-3-12 14:54:39 | 显示全部楼层
我想要这个板子的原理图,阿莫说有的,但是我没找到呢?那位大哥找到的发给我好吗?cici6865@hotmail.com

出0入0汤圆

 楼主| 发表于 2009-3-12 18:06:03 | 显示全部楼层
拜托,就在下面的“晒一下设计中的PSoC_KIT,大家有兴趣就顶以下。已经完成实物,各个功能已通过全部测试 【恢复】” 帖子里。

出0入0汤圆

发表于 2009-5-24 14:02:06 | 显示全部楼层
阿莫,什么时候能有开发板卖呢

出0入0汤圆

发表于 2009-6-2 14:37:11 | 显示全部楼层
本人初学,请教马老师,能否提供上面这几个Demo的完整Project文档参考,除了C源程序外,想学习完整的Project设置,尤其是用户模块、引脚等,谢谢了!

出0入0汤圆

发表于 2009-6-3 08:09:06 | 显示全部楼层
强烈同意楼上的!

出0入0汤圆

发表于 2009-6-7 17:41:58 | 显示全部楼层
那位任兄有《Psoc原理与应用设计》电子版本,请上传一份上来供大家阅读,可能需要的人很多。

出0入0汤圆

发表于 2009-6-13 22:07:26 | 显示全部楼层
向马老师致敬!

出0入0汤圆

发表于 2009-9-23 21:59:43 | 显示全部楼层
高级东西,值得看看!可惜没有时间!

出0入0汤圆

发表于 2009-10-14 22:51:02 | 显示全部楼层
喜欢到这里来向马老师学习,呵呵~~

出0入0汤圆

发表于 2009-11-7 22:20:57 | 显示全部楼层
马老师,想问一下, cy8c2xxxx系列的芯片都有电容感应功能么,都跟 cy8c21434通用么?可以坐电容触摸么

出0入0汤圆

发表于 2011-3-3 09:09:38 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-8-15 18:00:14 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-9-25 15:45:38 | 显示全部楼层
回复【楼主位】machao
-----------------------------------------------------------------------

卸卸
写的很棒
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 23:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表