|
最新的照片
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_533076.jpg)
(原文件名: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连接电缆的不同,如下图所示:
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_513595.jpg)
(原文件名:USB_1.jpg)
如果你是嵌入式工程师,建议购买如下图的多用USB连接电缆组件,这样大部分标准的USB接口都能用了,携带也方便:
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_513596.jpg)
(原文件名:USB_2.jpg)
4。测试需要的文件。CY8C24894的固件HEX文件和驱动文件:点击此处下载 ourdev_514355.rar(文件大小:5K) (原文件名:usbuart_demo.rar)
5。使用ISSP编程器将HEX文件下载到CY8C24894中:
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_514375.jpg)
(原文件名:下载.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的设备管理器中查看:
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_514395.jpg)
(原文件名:USBUART设备.jpg)
里面多了一个COM设备,记住它的COM口号(本例中为COM5)。
拔掉USB连接,该设备没有了,LED熄灭;插上USB,设备又出来了,LED亮。说明USB正常连接上了。
9。在PC上运行串口调试软件,连接COM5(根据你自己的情况),连续发送数据,查看接收的数据是否与发送的数据相同:
A/ 串口调试软件的设置:
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_514455.jpg)
(原文件名:串口调试设置.jpg)
B/测试结果:
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_514456.jpg)
(原文件名:测试结果.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的连接:
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_515615.jpg)
(原文件名: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)。
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_515662.jpg)
(原文件名: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)
![](http://cache.amobbs.com/bbs_upload782111/files_11/ourdev_532416.jpg)
(原文件名: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. |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|