?? pdiusbd12.h
字號:
/*===============================================================================//
//== 文 件 名:PDIUSBD12.h
//== author :gnsusn
//== 說 明:USB 描述符,控制命令等信息
//== 修改日志:2008.8.13 創建文件
//==
//===============================================================================*/
#ifndef __PDIUSBD12_H__
#define __PDIUSBD12_H__
//== PDIUSBD12.h
//== PDIUSBD12的命令和數據定義
//=================================================
//== 端點號定義
#define CONTROL_POINT_OUT 0x00
#define CONTROL_POINT_IN 0x80
#define POINT_1_OUT 0x01
#define POINT_1_IN 0x81
#define MAIN_POINT_OUT 0x02
#define MAIN_POINT_IN 0x82
//=================================================
//=================================================
//== 初始化命令
#define Set_Address 0xD0 //== 設置地址/使能,此命令單片機向D12寫入一字節
#define Set_Endpoint_Enable 0xD8 //== 設置端點使能,此命令單片機向D12寫入一字節,使能端點0
#define Set_Mode 0xF3 //== 設置模式,此命令單片機向D12寫入兩字節
#define Set_DMA 0xFB //== 設置DMA,寫/讀一字節
//=================================================
//=================================================
//== 數據流命令
#define Read_Interrupt_Register 0xF4 //== 讀中斷狀態寄存器,讀2字節
#define Select_EndPoint 0x00 //== 選擇端點,讀一字節(可選)
#define Select_Endpoint_C_OUT 0x00 //== 選擇,控制輸出端點(端點號:0;端點索引:0)
#define Select_Endpoint_C_IN 0x01 //== 選擇,控制輸入端點(端點號:0;端點索引:1)
#define Select_Endpoint_1_OUT 0x02 //== 選擇,端點號1的輸出端點,端點索引號:2
#define Select_Endpoint_1_IN 0x03 //== 選擇,端點號1的輸入端點,端點索引號:3
#define Select_Endpoint_2_OUT 0x04 //== 選擇,端點號2的輸出端點,端點索引號:4
#define Select_Endpoint_2_IN 0x05 //== 選擇,端點號2的輸入端點,端點索引號:5
#define Read_Last_Status 0x40 //== 讀最后處理狀態,讀一字節
#define Read_Last_Status_C_OUT 0x40 //== 讀控制輸出端點(端點號:0;端點索引:0)的狀態
#define Read_Last_Status_C_IN 0x41 //== 讀控制輸入端點(端點號:0;端點索引:1)的狀態
#define Read_Last_Status_1_OUT 0x42 //== 讀端點號1的輸出端點,端點索引號:2 的狀態
#define Read_Last_Status_1_IN 0x43 //== 讀端點號1的輸入端點,端點索引號:3 的狀態
#define Read_Last_Status_2_OUT 0x44 //== 讀端點號2的輸出端點,端點索引號:4 的狀態
#define Read_Last_Status_2_IN 0x45 //== 讀端點號2的輸入端點,端點索引號:5 的狀態
#define Read_Buffer 0xF0 //== 讀選擇的端點的緩沖區,讀出n個字節
#define Write_Buffer 0xF0 //== 寫選擇的端點的緩沖區,寫入n個字節
#define Set_Endpoint_Status_C_OUT 0x40 //== 設置控制輸出端點(端點號:0;端點索引:0)狀態
#define Set_Endpoint_Status_C_IN 0x41 //== 設置控制輸入端點(端點號:0;端點索引:1)狀態
#define Set_Endpoint_Status_1_OUT 0x42 //== 設置端點號1的輸出端點,端點索引號:2 狀態
#define Set_Endpoint_Status_1_IN 0x43 //== 設置端點號1的輸入端點,端點索引號:3 狀態
#define Set_Endpoint_Status_2_OUT 0x44 //== 設置端點號2的輸出端點,端點索引號:4 狀態
#define Set_Endpoint_Status_2_IN 0x45 //== 設置端點號2的輸入端點,端點索引號:5 狀態
#define Ack_Setup 0xF1 //== 應答設置,命令接受者是選擇的端點, 沒有操作數據(應答setup)
#define Clear_Buffer 0xF2 //== 緩沖區清零,命令接受者是選擇的端點, 沒有操作數據
#define Validate_Buffer 0xFA //== 使緩沖區有效,命令接受者是選擇的端點, 沒有操作數據
#define Read_ChipID 0xFD //== 讀取芯片版本號
//=================================================
//=================================================
//==普通命令
#define Send_Resume 0xF6 //== 發送恢復
#define Read_Current_Frame_Number 0xF5 //== 讀當前幀數目,讀出1或2個字節
//=================================================
//=================================================
//== 一些數據的定義
#define Endpoint_Enable 0x01
#define Endpoint_Disenable 0x00
#define Address_Enable 0x80
#define Mode0_and_no_connect 0x04
#define Mode1_and_no_connect 0x44
#define Mode2_and_no_connect 0x84
#define Mode3_and_no_connect 0xC4
#define Mode0_and_connect 0x14
#define Mode1_and_connect 0x54
#define Mode2_and_connect 0x94
#define Mode3_and_connect 0xD4
#define Mode_Set_secend_byte 0x8B
#define NO_LazyClock 0x02
#define Run_Clock 0x04
#define Interrupt_Model 0x08
#define Soft_Connect 0x10
#define Non_ISO_Mode 0x00 //== 非同步
#define ISO_OUT_Mode 0x40 //== 同步輸出模式
#define ISO_IN_Mode 0x80 //== 同步輸入模式
#define ISO_IO_Mode 0xc0 //== 同步輸入/輸出模式
#define ENDPOINT_NUMBER 0x04
#define D12_STALL 0x02 //== 端點停止
//=================================================
//=================================================
#define MAX_ENDPOINTS 0x03 //== 最大邏輯端點號
#define EP0_TX_FIFO_SIZE 16
#define EP0_RX_FIFO_SIZE 16
#define EP0_PACKET_SIZE 16 //== 端點0的最大包大小
#define EP1_TX_FIFO_SIZE 16
#define EP1_RX_FIFO_SIZE 16
#define EP1_PACKET_SIZE 16
#define EP2_TX_FIFO_SIZE 64
#define EP2_RX_FIFO_SIZE 64
#define EP2_PACKET_SIZE 64
#define USB_CLASS_CODE_TEST_CLASS_DEVICE 0xDC
#define USB_SUBCLASS_CODE_TEST_CLASS_D12 0xA0
#define USB_PROTOCOL_CODE_TEST_CLASS_D12 0xB0
//=================================================
typedef union _D12_Interrupt_Register //== 中斷寄存器
{
unsigned char Register[2];
unsigned short int_Register;
struct
{
unsigned char control_out_port :1;
unsigned char control_in_port :1;
unsigned char port_out_1 :1;
unsigned char port_in_1 :1;
unsigned char main_out_port :1;
unsigned char main_in_port :1;
unsigned char bus_reset :1;
unsigned char suspend_change :1;
unsigned char DMA_EOT :1;
unsigned char not_use :7;
}Interrupt;
}D12_INTERRUPT_REGISTER;
//=================================================
//=================================================
typedef union _D12_Last_Status //== 端點最后處理狀態
{
unsigned char Register;
struct
{
unsigned char successful :1;
unsigned char error_code :4;
unsigned char setup_packet :1;
unsigned char data_1 :1;
unsigned char prestatus_not_read :1;
}Status;
}D12_LAST_STATUS;
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -