USB转串口芯片CP2101讲解

[复制链接]
 楼主| 拿起书本 发表于 2012-4-1 21:35 | 显示全部楼层 |阅读模式
现代嵌入式系统中,异步串行通信往往作为标准外设出现在单片机和嵌入式系统中,但是随着个人计算机通用外围设备越来越少地使用串口,串口正在逐渐从个人计算机特别是便携式电脑上消失,于是嵌入式开发人员常常发现自己新买的计算机上没有串口,或者出现调试现场用户的计算机没有串口的尴尬局面。相反,现在的个人计算机普遍拥有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 | 显示全部楼层
应楼上要求,以下是电路图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
fly60000 发表于 2014-5-5 17:02 | 显示全部楼层
看不到啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

519

主题

4194

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:好好学习,天天向上!

519

主题

4194

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部