csl_usbf.h

来自「dsp在音频处理中的运用」· C头文件 代码 · 共 1,251 行 · 第 1/4 页

H
1,251
字号
typedef enum CSL_UsbfEpType {
	/** Bulk or __irq endpoint */
	CSL_USBF_EPTYPE_NON_ISO = 0,
	/** Isochronous endpoint */
	CSL_USBF_EPTYPE_ISO = 1
} CSL_UsbfEpType;	

/** @brief Structure that is used to setup endpoint 0 
 *
 * This structure is part of endpoint setup */
typedef struct CSL_UsbfEp0Properties {
    /** Endpoint 0 FIFO size */
    CSL_UsbfEpSize size ;
    /** The address of the endpoint 0 pointer */
    Uint8          ptr ;       
} CSL_UsbfEp0Properties;

/** @brief Structure that is used to setup endpoints other than endpoint 0 
 *
 * This structure is part of endpoint setup */
typedef struct CSL_UsbfEpProperties {
    /** Is endpoint valid fopr USB transfers? */
    Bool valid ;
    /** Endpoint buffering. Valid only if endpoint is Non-ISO */
    Bool doubleBuffered;
    /** Endpoint FIFO size value */         
    CSL_UsbfEpSize size ;
    /** Endpoint type: Isochronous OR bulk or __irq */
    CSL_UsbfEpType type;
    /** Address of endpoint pointer */
    Uint16          ptr ; 
} CSL_UsbfEpProperties;

/** @brief Structure that is used to setup endpoints */
typedef struct CSL_UsbfEpSetup {
    /** Endpoint 0 setup */
    CSL_UsbfEp0Properties  *ep0 ;
    /** Recieve endpoints setup */
    CSL_UsbfEpProperties   *rxEp[15]; 
    /** Transmit endpoints setup */
    CSL_UsbfEpProperties   *txEp[15]; 
} CSL_UsbfEpSetup;

/** @brief Enumerations for endianness */
typedef enum CSL_UsbfEndian {
    /** Little endian */
    CSL_USBF_ENDIAN_LITTLE,
    /** Big endian */
    CSL_USBF_ENDIAN_BIG
} CSL_UsbfEndian;

/** @brief Structure that is used for system configuration */ 
typedef struct CSL_UsbfSystemSetup {
    /** Device configuration lock */
    Bool cfgLocked ;
    /** Data endianness */
    CSL_UsbfEndian dataEndian;
    /** DMA data endianness */
    CSL_UsbfEndian dmaEndian;
    /** NAK enabling */
    Bool nakEnabled;
    /** Auto deocde process activation */
    Bool noAutoDecode;
    /** Device self powered or not */
    Bool selfPowered;
    /** Power shutoff circuitry setting */
    Bool powershutoffDisabled;
    /** Device connectivity to USB bus */
    Bool deviceConnected;
} CSL_UsbfSystemSetup;

 
/** @brief Structure that is used to setup USB Function overall*/ 
typedef struct CSL_UsbfHwSetup {
    /** Endpoint setup */
    CSL_UsbfEpSetup     *epSetup ;
    /** DMA setup */
    CSL_UsbfDmaSetup    *dmaSetup;
    /** System configuration */
    CSL_UsbfSystemSetup *systemSetup;   
} CSL_UsbfHwSetup;

/**
 * @brief   Default values for the ep0properties
 */
#define CSL_USBF_EP0PROPERTIES_DEFAULTS {     \
        (CSL_UsbfEpSize)CSL_USBF_EP0_SIZE_RESETVAL,       \
        CSL_USBF_EP0_PTR_RESETVAL          \
        }
        
/**
 * @brief   Default values for the Rxepproperties
 */
#define CSL_USBF_RXEPPROPERTIES_DEFAULTS {     \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                   \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                    \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                  \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                  \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                   \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                    \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                  \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                  \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                   \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                    \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                  \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                  \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                   \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL ,                                    \
       (Bool)CSL_USBF_RX_EP_VALID_RESETVAL,(Bool) CSL_USBF_RX_EP_SIZEDB_RESETVAL, \
       (CSL_UsbfEpSize)CSL_USBF_RX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_RX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_RX_EP_PTR_RESETVAL                                  \
       }
       
/**
 * @brief   Default values for the Txepproperties
 */
#define CSL_USBF_TXEPPROPERTIES_DEFAULTS {     \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL,                                   \
       (Bool)CSL_USBF_TX_EP_VALID_RESETVAL,(Bool)CSL_USBF_TX_EP_SIZEDB_RESETVAL,  \
       (CSL_UsbfEpSize)CSL_USBF_TX_EP_SIZE_RESETVAL , (CSL_UsbfEpType)CSL_USBF_TX_EP_ISO_RESETVAL,    \
       (Uint16)CSL_USBF_TX_EP_PTR_RESETVAL                                    \
      } 

/**
 * @brief   Default values for the TxchSetup-structure
 */
#define CSL_USBF_TXCHSETUP_DEFAULTS {         \
        (CSL_UsbfEpNum)CSL_USBF_TXDMA_CFG_TXDMA2_EP_RESETVAL,   \
        (CSL_UsbfDmaTxSizeType)CSL_USBF_TXDMA2_TX2_TSC_RESETVAL,        \
        CSL_USBF_TXDMA2_TX2_EOT_RESETVAL,         \
        (CSL_UsbfEpNum)CSL_USBF_TXDMA_CFG_TXDMA1_EP_RESETVAL,  \
        (CSL_UsbfDmaTxSizeType)CSL_USBF_TXDMA1_TX1_TSC_RESETVAL,       \
        CSL_USBF_TXDMA1_TX1_EOT_RESETVAL,        \
        (CSL_UsbfEpNum)CSL_USBF_TXDMA_CFG_TXDMA0_EP_RESETVAL,  \
        (CSL_UsbfDmaTxSizeType)CSL_USBF_TXDMA0_TX0_TSC_RESETVAL,       \
        CSL_USBF_TXDMA0_TX0_EOT_RESETVAL        \
        }
        
/**
 * @brief   Default values for the RxchSetup-structure
 */
#define CSL_USBF_RXCHSETUP_DEFAULTS {         \
        (CSL_UsbfEpNum)CSL_USBF_RXDMA_CFG_RXDMA2_EP_RESETVAL,  \
        CSL_USBF_RXDMA2_RX2_TC_RESETVAL,        \
        (CSL_UsbfEpNum)CSL_USBF_RXDMA_CFG_RXDMA1_EP_RESETVAL,  \
        CSL_USBF_RXDMA1_RX1_TC_RESETVAL,        \
        (CSL_UsbfEpNum)CSL_USBF_RXDMA_CFG_RXDMA0_EP_RESETVAL,  \
        CSL_USBF_RXDMA0_RX0_TC_RESETVAL         \
        }
/**
 * @brief   Default values for the systemSetup-structure
 */
#define CSL_USBF_SYSTEMSETUP_DEFAULTS {     \
    CSL_USBF_SYSCON1_CFG_LOCK_RESETVAL,     \
    (CSL_UsbfEndian)CSL_USBF_SYSCON1_DATA_ENDIAN_RESETVAL,  \
    (CSL_UsbfEndian)CSL_USBF_SYSCON1_DMA_ENDIAN_RESETVAL,   \
    CSL_USBF_SYSCON1_NAK_EN_RESETVAL,       \
    CSL_USBF_SYSCON1_AUTODEC_DIS_RESETVAL,  \
    CSL_USBF_SYSCON1_SELF_PWR_RESETVAL,     \
    CSL_USBF_SYSCON1_SOFF_DIS_RESETVAL,     \
    CSL_USBF_SYSCON1_PULLUP_EN_RESETVAL     \
    }
    

/**
 * @brief   The config-structure
 *
 * Used to configure the USBF using CSL_usbfHwSetupRaw(..)
 */
typedef struct  {
    Uint16 EPNUM;
    Uint16 CTRL;
    Uint16 SYSCON1;
    Uint16 SYSCON2;
    Uint16 IRQ_EN;
    Uint16 DMA_IRQ_EN;
    Uint16 RXDMA_CFG;
    Uint16 TXDMA_CFG;
    Uint16 TXDMA0;
    Uint16 TXDMA1;
    Uint16 TXDMA2;
    Uint16 RXDMA0;
    Uint16 RXDMA1;
    Uint16 RXDMA2;
    Uint16 EP0;
    Uint16 RX_EP[15];
    Uint16 TX_EP[15];
} CSL_UsbfConfig;

/**
 * @brief   Default values for the config-structure
 */
#define CSL_USBF_CONFIG_DEFAULTS {         \
    CSL_USBF_EPNUM_RESETVAL,         \
    CSL_USBF_CTRL_RESETVAL,          \
    CSL_USBF_SYSCON1_RESETVAL,       \
    CSL_USBF_SYSCON2_RESETVAL,       \
    CSL_USBF_IRQ_EN_RESETVAL,        \
    CSL_USBF_DMA_IRQ_EN_RESETVAL,    \
    CSL_USBF_RXDMA_CFG_RESETVAL,     \
    CSL_USBF_TXDMA_CFG_RESETVAL,     \
    CSL_USBF_TXDMA0_RESETVAL,        \
    CSL_USBF_TXDMA1_RESETVAL,        \
    CSL_USBF_TXDMA2_RESETVAL,        \
    CSL_USBF_RXDMA0_RESETVAL,        \
    CSL_USBF_RXDMA1_RESETVAL,        \
    CSL_USBF_RXDMA2_RESETVAL,        \
    CSL_USBF_EP0_RESETVAL,           \
    {                                \
        CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL,    \
        CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL,    \
        CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL,    \
        CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL, CSL_USBF_RX_EP_RESETVAL                              \
    },                                                                                                         \
    {                                                                                                          \
        CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL,    \
        CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL,    \
        CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL,    \
        CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL, CSL_USBF_TX_EP_RESETVAL                              \
    }                                                                                                          \
}

/** @brief Structure that is used store setup packet data*/ 
typedef struct CSL_UsbfSetupPacket {
    /** if true, structure holds new setup data */
    Bool new_packet;  
    /** Byte 0 of setup packet */
    Uint16  bmRequestType;
    /** Byte 1 of setup packet */
    Uint16  bRequest;
    /** Byte 2 and 3 of setup packet */
    Uint16  wValue;
    /** Byte 4 and 5 of setup packet */
    Uint16  wIndex;
    /** Byte 6 and 7 of setup packet */
    Uint16  wLength;
} CSL_UsbfSetupPacket ;

/** @brief Structure that is used to hold data for transmission and reception  
  *        through FIFO
  */ 
typedef struct CSL_UsbfRxTxFifo {
    /** Data to be sent or received */
    Uint8 *data;  

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?