『壹』 幫忙提供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=='