打印

USB转串口芯片CP2101讲解

[复制链接]
3570|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
现代嵌入式系统中,异步串行通信往往作为标准外设出现在单片机和嵌入式系统中,但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失,于是嵌入式开发人员常常发现自己新买的计算机上没有串口,或者出现调试现场用户的计算机没有串口的尴尬局面。相反,现在的个人计算机普遍拥有4个以上的USB接口,能不能使用USB接口代替串口,完成PC和嵌入式系统的通信呢?答案是肯定的,CP2101即可解决上述问题。下图为CP2101的内部结构图:

下图为COP2101串口转USB接口程序流程图

C语言程序及讲解

****************************************************************************
   主程序,主要功能为,从USB总线读取延时参数,单片机延时发送内存缓冲区的一个字节数据到USB总线,每传送一个字节数据查询USB总线是否有停止USB总线通信命令,如有停止USB总线通信命令,则重新开始检查串口握手信号,开始下一次USB总线通信。
******************************************************************************
#include "reg51.h"
#define uchar unsigned char
#define uint unsigned int
uchar temp,timer
void  main(void)
{   
   TMOD=0x20;            //设定时器工作方式
   TL1=0xe6;
   TH1=0xe6;              //设波特率
   PCON=0x00;
   TR1=1;                 //启动定时器
   SCON=0x50;           /设串行口工作方式

While(1)
{
While(1)
{
while(RI)
    {
  RI=0;
  temp=SBUF;         //接收握手信号
}
if(temp!=0xff)
{return;}
while(RI)
  {
RI=0;
timer=SBUF;          //接收传输速率所需的延时值
}
While(RI=1)
{
RI=0;
temp=SBUF;           //接收握手停止信号
}
if(temp!=0x01)
{return;}
                SBUF=0x00;        //发送数据传输开始信号
                do{;}
                while(TI)
                TI=0;
                do{;}
                while(RI)
                temp=SBUF;        //判有无停止命令
if(temp=0x00)
                 {return;}
             SBUF=dbuf[num];
             do{;}
             while(TI=0)
             TI=0;
             num++
delay;
}
}
}

相关帖子

沙发
huangfeng33| | 2012-4-2 00:03 | 只看该作者
LZ最好把实现UART转USB的电路设计图发上来,好学习学习。

使用特权

评论回复
板凳
拿起书本|  楼主 | 2012-4-2 13:00 | 只看该作者
以下是电路图
[localimg=180,103]1[/localimg]

使用特权

评论回复
地板
拿起书本|  楼主 | 2012-4-2 13:01 | 只看该作者
应楼上要求,以下是电路图

使用特权

评论回复
5
fly60000| | 2014-5-5 17:02 | 只看该作者
看不到啊!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝