📄 d12ci.h
字号:
/******************************************************************************
* Filename: D12CI.h
* Author: Tan Dewen
* Date: 2004/06/26
******************************************************************************/
#ifndef __D12CI_H__
#define __D12CI_H__
#include "armhal.h"
// Initialization Commands
#define SET_ADDRESS 0xd0
#define SET_ENDPOINT 0xd8
#define SET_MODE 0xf3
#define SET_DMA 0xfb
// Data Flow Commands
#define READ_INTERRUPT_REGISTER 0xf4
// Bit definition for interrupt register
#define EP0_OUT_INT 0x01
#define EP0_IN_INT 0x02
#define EP1_OUT_INT 0x04
#define EP1_IN_INT 0x08
#define EP2_OUT_INT 0x10
#define EP2_IN_INT 0x20
#define BUSRESET_INT 0x40
#define SUSPEND_INT 0x80
#define DMA_EOT 0x01
#define SELECT_CTR_OUT 0x00
#define SELECT_CTR_IN 0x01
#define SELECT_EP1_OUT 0x02
#define SELECT_EP1_IN 0x03
#define SELECT_EP2_OUT 0x04
#define SELECT_EP2_IN 0x05
// Bit definition for select endpoint
#define ENDP_FULL 0x01
#define ENDP_STALL 0x02
#define READ_LAST_STATUS_CTR_OUT 0x40
#define READ_LAST_STATUS_CTR_IN 0x41
#define READ_LAST_STATUS_EP1_OUT 0x42
#define READ_LAST_STATUS_EP1_IN 0x43
#define READ_LAST_STATUS_EP2_OUT 0x44
#define READ_LAST_STATUS_EP2_IN 0x45
// Bit definition for last transaction status
#define D12_SUCCESS 0x01
#define D12_ERRORCODE 0x1E
#define D12_SETUPPACKET 0x20
#define D12_DATA1PACKET 0x40
#define D12_PREMATURE 0x80
#define READ_BUFFER 0xf0
#define WRITE_BUFFER 0xf0
#define SET_STATUS_CTR_OUT 0x40
#define SET_STATUS_CTR_IN 0x41
#define SET_STATUS_EP1_OUT 0x42
#define SET_STATUS_EP1_IN 0x43
#define SET_STATUS_EP2_OUT 0x44
#define SET_STATUS_EP2_IN 0x45
#define ACK_SETUP 0xf1
#define CLEAR_BUFFER 0xf2
#define VALIDATE_BUFFER 0xfa
// General Commands
#define SEND_RESUME 0xf6
#define READ_CURRENT_FRAME_NUMBER 0xf5
#define EP0_MAX_PACKET_SIZE 16
// D12 address
#define D12_COMMAND 0x02000001
#define D12_DATA 0x02000000
/* D12CI.c */
void D12_SetAddressEnable(U8 bAddress, U8 bEnable);
void D12_SetEndpointEnable(U8 bEnable);
void D12_SetMode(U8 bConfig, U8 bClkDiv);
void D12_SetDMA(U8 bMode);
U16 D12_ReadInterruptRegister(void);
U8 D12_SelectEndpoint(U8 bEndp);
U8 D12_ReadLastTransactionStatus(U8 bEndp);
void D12_SetEndpointStatus(U8 bEndp, U8 bStalled);
void D12_SendResume(void);
U16 D12_ReadCurrentFrameNumber(void);
void D12_ClearBuffer(void);
U8 D12_ReadEndpoint(U8 endp, U8 *buf, U8 len);
U8 D12_WriteEndpoint(U8 endp, U8 *buf, U8 len);
void D12_AckknowledgeEndpoint(U8 endp);
#endif /* __D12CI_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -