『壹』 帮忙提供USB电路图及工作原理
工作原理:
一个USB系统可以从三个方面加以描述:USB互连、USB从端口和USB主端口。
USB互连
USB互连是指一个USB主端口(USB Host)与USB从端口相连并和其通信的方式,它包括以下几方面。
总线的拓扑结构:USB主端口和USB从端口的连接模式。
数据流模型:描述了数据在系统中通过USB从产生方到使用方的流动方式。
任务规划:USB提供多个从端口共享的连接,对USB从端口必须进行规划以分配带宽。
USB主端口
USB主机是USB系统的核心,在一个USB系统中只有一个主端口主端口的USB接口称为USB控制器,通过它主机和外围USB设备进行通信。在主机中还集成了一个根集线器(Root Hub),用于直接与外设相连或与一般USB Hub级连。
USB从端口
USB从端口包括USB集线器和功能设备(Function)两大类。它们都必须有标准的USB接口,理解USB协议,支持标准的USB操作(如配置、复位等)。它们的描述信息也必须具有USB协议定义的标准格式。
集线器为USB总线提供扩展和连接;功能设备是具有一定特殊应用功能的设备,它能发送数据到主机,也可以接收来自主机的数据和控制信息。
(1)通信电路图扩展阅读
接口布置
USB是一种常用的pc接口,他只有4根线,两根电源两根信号,故信号是串行传输的,usb接口也称为串行口,usb2.0的速度可以达到480Mbps。可以满足各种工业和民用需要.USB接口的输出电压和电流是: +5V 500mA 实际上有误差,最大不能超过+/-0.2V 也就是4.8-5.2V 。
usb接口的4根线一般是下面这样分配的,需要注意的是千万不要把正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片:黑线:gnd 红线:vcc 绿线:data+ 白线:data-
USB接口定义图
USB接口定义 颜色
一般的排列方式是:红白绿黑从左到右
定义:
红色-USB电源: 标有-VCC、Power、5V、5VSB字样
白色-USB数据线:(负)-DATA-、USBD-、PD-、USBDT-
绿色-USB数据线:(正)-DATA+、USBD+、PD+、USBDT+
黑色-地线: GND、Ground[4]
『贰』 51单片机和计算机之间实现串口通信的电路图
串口通讯参考程序如下:
来源:深入浅出AVR单片机
#include<reg51.h>
unsignedcharUART_RX;//定义串口接收数据变量
unsignedcharRX_flag;//定义穿行接收标记
/*********************************************************************************************
函数名:UART串口初始化函数
调用:UART_init();
参数:无
返回值:无
结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用)
备注:振荡晶体为12MHz,PC串口端设置[4800,8,无,1,无]
/**********************************************************************************************/
voidUART_init(void){
EA=1;//允许总中断(如不使用中断,可用//屏蔽)
ES=1;//允许UART串口的中断
TMOD=0x20;//定时器T/C1工作方式2
SCON=0x50;//串口工作方式1,允许串口接收(SCON=0x40时禁止串口接收)
TH1=0xF3;//定时器初值高8位设置
TL1=0xF3;//定时器初值低8位设置
PCON=0x80;//波特率倍频(屏蔽本句波特率为2400)
TR1=1;//定时器启动
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口接收中断处理函数
调用:[SBUF收到数据后中断处理]
参数:无
返回值:无
结果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)
备注:过长的处理程序会影响后面数据的接收
/**********************************************************************************************/
voidUART_R(void)interrupt4using1{//切换寄存器组到1
RI=0;//令接收中断标志位为0(软件清零)
UART_RX=SBUF;//将接收到的数据送入变量UART_data
RX_flag=1;//标记接收
//用户函数内容(用户可使用UART_data做数据处理)
//SBUF=UART_data;//将接收的数据发送回去(删除//即生效)
//while(TI==0);//检查发送中断标志位
//TI=0;//令发送中断标志位为0(软件清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:UART串口发送函数
调用:UART_T(?);
参数:需要UART串口发送的数据(8位/1字节)
返回值:无
结果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式
备注:
/**********************************************************************************************/
voidUART_T(unsignedcharUART_data){//定义串口发送数据变量
ES=0;//禁止穿行中断
SBUF=UART_data;//将接收的数据发送回去
while(TI==0);//检查发送中断标志位
TI=0;//令发送中断标志位为0(软件清零)
ES=1;//打开穿行中断
}
/*********************************************************************************************
函数名:UART串口发送字符串函数
调用:UART_S(?);
参数:需要UART串口发送的数据(8位/1字节)
返回值:无
结果:将参数中的数据发送给UART串口,确认发送完成后退出,采用非中断方式
备注:
/**********************************************************************************************/
voidUART_S(unsignedchar*str)
{
while(1)
{
if(*str=='