📄 d12.h
字号:
#ifndef D12_H
#define D12_H
#include "def.h"
#define D12Cmd *(volatile U8 *)(0x2000001)
#define D12Dat *(volatile U8 *)(0x2000000)
typedef union //程序标志位
{
unsigned short Register;
struct flags
{
unsigned bus_reset :1;
unsigned suspend :1;
unsigned remote_wakeup :1;
unsigned int_isr :1;
unsigned not_end :1;
unsigned usb_idle :1;
unsigned usb_busy :1;
unsigned setup_packet_in :1;
unsigned setup_packet_out :1;
unsigned set_addr :1;
unsigned usb_endp0_in :1;
unsigned usb_endp2_in :1;
unsigned usb_endp2_out :1;
unsigned not_use :3;
}flags;
}usb_flags_DEF;
typedef union //中断寄存器
{
unsigned char Register[2];
struct Interrupt
{
unsigned control_out_port :1;
unsigned control_in_port :1;
unsigned port_out_1 :1;
unsigned port_in_1 :1;
unsigned main_out_port :1;
unsigned main_in_port :1;
unsigned bus_reset :1;
unsigned suspend_change :1;
unsigned not_use :7;
unsigned DMA_EOT :1;
}Interrupt;
}Interrupt_Register_DEF;
typedef union //端点最后处理状态
{
unsigned char Register;
struct Status
{
unsigned successful :1;
unsigned error_code :4;
unsigned setup_packet :1;
unsigned data_1 :1;
unsigned prestatus_not_read :1;
}Status;
}Last_Status_DEF;
//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
#define Set_Endpoint_Enable 0xD8
#define Set_Mode 0xF3
#define Set_DMA 0xFB
//*************************************************
//*************************************************
//数据流命令
#define Read_Interrupt_Register 0xF4
#define Select_EndPoint 0X00
#define Select_Endpoint_C_OUT 0X00
#define Select_Endpoint_C_IN 0X01
#define Select_Endpoint_1_OUT 0X02
#define Select_Endpoint_1_IN 0X03
#define Select_Endpoint_2_OUT 0X04
#define Select_Endpoint_2_IN 0X05
#define Read_Last_Status 0X40
#define Read_Last_Status_C_OUT 0X40
#define Read_Last_Status_C_IN 0X41
#define Read_Last_Status_1_OUT 0X42
#define Read_Last_Status_1_IN 0X43
#define Read_Last_Status_2_OUT 0X44
#define Read_Last_Status_2_IN 0X45
#define Read_Buffer 0XF0
#define Write_Buffer 0XF0
#define Set_Endpoint_Status_C_OUT 0X40
#define Set_Endpoint_Status_C_IN 0X41
#define Set_Endpoint_Status_1_OUT 0X42
#define Set_Endpoint_Status_1_IN 0X43
#define Set_Endpoint_Status_2_OUT 0X44
#define Set_Endpoint_Status_2_IN 0X45
#define Ack_Setup 0XF1
#define Clear_Buffer 0XF2
#define Validate_Buffer 0XFA
//*************************************************
//*************************************************
//普通命令
#define Send_Resume 0XF6
#define Read_Current_Frame_Number 0XF5
//*************************************************
//*************************************************
//一些数据的定义
#define Endpoint_Enable 0X01
#define Endpoint_Disenable 0X00
#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
void write_usb_command(unsigned char usb_command); //写USB命令
void write_a_usb_data(unsigned char usb_data); //写一字节USB数据
unsigned char read_a_usb_data(void); //读一字节USB数据
void read_interrupt_register(void); //读USB中断寄存器
void set_usb_addr(unsigned char addr); //设置USB地址
void set_endpoint_enable(void); //端点使能
unsigned char select_endpoint(unsigned char endp); //选择终端点
unsigned char read_last_status(unsigned char endp); //读端点最后状态
void set_endpoint_status(unsigned char endp,unsigned char status); //设置端点状态
unsigned char read_endpoint_status(unsigned char endp); //读端点状态
void clear_buffer(void); //清缓冲,在读取缓冲数据后调用
void validate_buffer(void); //缓冲区数据有效,在写缓冲后调用
void ack_setup(unsigned char endp); //应答建立包
void error(unsigned char number); //出错处理
unsigned char write_endpoint_buff(unsigned char endp,unsigned char len,unsigned char const * buff); //写终端点缓冲
void disconnect_usb(void);
void connect_usb(void); //连接USB
void init_usb(void); //初始化USB
void usb_bus_reset(void); //USB总线复位处理
void usb_bus_suspend(void); //USB总线挂起处理
void set_usb_address(void); //设置地址
void get_status(unsigned char receiver); //获取状态响应
U32 D12RdChipId(void);
#define USB_INT rPDATG^0
extern usb_flags_DEF usb_flags;
extern Interrupt_Register_DEF Interrupt_Register;
extern Last_Status_DEF Last_Status;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -