登录站点

用户名

密码

基于CP2102的串口通信

2已有 4588 次阅读  2010-01-23 12:51   标签串口  通信 

我的飞思卡尔之CP2102的调试

----基于CP2102的串口通信

2010.1.21~2010.1.22

平台:MC9S12XS128PC机,CP2102模块,串口小助手,USB线,BDM下载器

功能:USBTTL232模块,利用USB完成MC9S12XS128PC机的串口通信。由于在   智能车制作的过程中,经常会进行的工作是单片机和PC机的通信,即在线调试,这   个模块的设计减去笔记本或者新装台式机没有串口的烦恼。

调试过程:

1、CP2102的驱动电路

首先设计CP2102的驱动电路,在它的DATASHEET有详细的说明,按技术手册上的样图,设计成这样的电路图:

下载:CP2102.PDF

2、CP2102的焊接

PCB板拿到手后,检查硬件电路是否有误,然后进行焊接,由于CP2102QFN封装,所以焊接的时候非常考验你的耐心和技术,这里我说说我的焊接方法。

先要说明,即使你的环境非常非常艰苦,即使你非常非常“穷”,只要你拥有电烙铁(性嫩稍好点儿的,平头和圆头的都行)、万用表助焊剂(我焊的时候只用了些活性比较强的松香)、焊锡丝(最好是0.5mm的)、热风枪酒精镊子就可以完成工作了。

下面说说步骤,先用酒精清洗一下元件引脚和焊盘;然后在助焊剂的作用下,在焊盘和引脚上稍稍涂锡,一定要保证均匀(注意:量少些就可以,焊锡不要太鼓);用镊子夹住芯片,对准焊盘放置(注意:一定要先注意引脚与焊盘的顺序,然后大致对准即可,不过不要偏离太多);用镊子抵住芯片稍固定,然后用热风枪均匀地吹芯片(注意:温度不宜太高,300°就可以了),芯片引脚会自动对应连接在焊盘上;最后用万用表打一下各个焊盘之间,是否有短路的迹象(注意:若有的话,可以再用热风枪加热瞬间)。

声明:以上焊接方法是本人经过实践可行的,但不能保证对所有人都可行,方法只提供参考,若造成损失本人概不负责。

3、电路检查

用万用表测试USB接口的四线,是否有短接的情况,USB接口短接会导致PC硬件损坏(电源或主板),所以这步不能省(别偷懒,PC玩坏了可不好受)。 

确认没有短接后,将模块连接到PCUSB口 

4、安装驱动

若模块硬件无误的话,PC可以识别到新的USB设备 。然后安装PC端驱动软件 。

软件安装成功后,PC应该多出一个串口,一般是COM3,可以使用右键我的电脑,管理,设备管理器,端口,看到新的COM3口。此时CP2102的指示灯应该亮。

下载:CP2102  PC端驱动软件

5、CP2102功能测试

CP2101TTL232端的RXTX短接,打开串口小助手,设置端口为COM3。然后让串口软件发送数据Hello World! 看PC端软件,是否能不丢包的收到自己发的数据,若收发相同,说明驱动安装正确,硬件焊接正常,USB转串口可以自发自收 。成功第一步!

 

下载:串口调试软件

6、连接MC8S12XS128

CP2102TXMC8S12XS128RX(引脚89), 

CP2102RXMC8S12XS128TX(引脚90), 

CP2102GNDMC8S12XS128GND, 

CP2102MC8S12XS128之间,不加MAX232MAX3232等电平转换芯片,CP2102转出来的串口是TTL电平,可以直接与单片机相连。

7、串口调试

烧入以下程序:

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

//功能说明:SCI例程--在“串口小助手”下完成信息的收发

//使用说明:单片机的收发通讯时是一步完成的,即发送什么就接收什么,在软件下观察

//程序设计:电子设计吧【www.dzsj8.com

//设计时间:2010.01.21

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

#include <hidef.h>      /* common defines and macros */

#include "derivative.h"      /* derivative-specific definitions */

//unsigned char txt[]={"Hello World!"} ;

void delay(unsigned int time) 

{

unsigned int i,j,k;

for(i=0;i<125;i++)

  for(j=0;j<125;j++)

     for(k=time;k>0;k--);

}

//-----------------------初始化SCI0----------------------------//

void SciInit() 

{

    SCI0BD=52;         //9600bps  Baud Rate=BusClock/(16*SCIBD)

    SCI0CR1=0;         //正常8位模式,无奇偶校验

    SCI0CR2=0X2C;      //发送允许   接受中断允许  

}

//----------------------SCI数据-------------------------//

unsigned char SciRead()

{

    if(SCI0SR1_RDRF==1)     //表明数据从位移寄存器传输到SCI数据寄存器

      {

      SCI0SR1_RDRF=1;     //读取数据寄存器会将RDRF清除  重新置位

      return SCI0DRL;        //返回数据寄存器的数据

      }

//-----------------SCI数据----------------------------//

void SciWrite(unsigned char sendchar) 

{

    while (!(SCI0SR1&0x80));

    SCI0DRH=0;

    SCI0DRL=sendchar;

}

//------------------------main----------------------------------//

void main(void) 

{

SciInit();

EnableInterrupts;

  for(;;) 

  {

  } /* wait forever */

  /* please make sure that you never leave this function */

}

//---------------------------接收中断函数-----------------------//

#pragma CODE_SEG NON_BANKED  

void  interrupt 20 SCI0_re(void) 

{

unsigned char ch;

ch=SciRead();

 SciWrite(ch) ;

}

下载:SCI例程

然后在软件上观察,发送什么数据就能接收什么数据,而且收发数据时CP2102指示灯有闪烁,说明单片机已经通过CP2102实现了和PC机的通信,调试成功!

问题说明:若不成功,首先要检查波特率是否设置正确,然后检查引脚连接是否正确,是否共地等等常见问题。

8、结束语

至此,基于CP2102MC9S12XS128PC机的通信就完成了,在智能车的制作中,不论是光电组还是电磁组还是摄像头组,都能在PC机上随心所欲地接收智能车的信息了,一目了然进行调试,可以减少不少调试时间哦~~~

综上,就是将PC-CP2102-MCU这一链路的通讯过程分成不同阶段,分别调试,各个击破。

下载:本文PDF版

上一篇: HCS12X微控制器教程---PWM模块 下一篇: miniBDM下载器介绍与使用方法

分享 举报