📄 fusb220.h
字号:
#ifndef __FUSB220_M_H
#define __FUSB220_M_H
#define code const
#define bdata
#define xdata
// #define IRQ_FUSB220 40 //27
#define IRQ_FUSB220 (FIQ_OFFSET+11) //330 //320: 26 //RISC platform (ivan)
//#define FIQ_MAC (8+FIQ_OFFSET)
// Macro
#define FUSB220_BASE_ADDRESS 0x90b00000 //0x96700000// 0x90600000
#define FUSB220_FIFO_BASE(bOffset) 0x90b00000+0xC0+(bOffset<<2)
#define bFUSBPort(bOffset) *((volatile UINT8 *) ( FUSB220_BASE_ADDRESS | (UINT32)(bOffset)))
#define wFUSBPort(bOffset) *((volatile UINT16 *) ( FUSB220_BASE_ADDRESS | (UINT32)(bOffset)))
#define dwFUSBPort(bOffset) *((volatile UINT32 *) ( FUSB220_BASE_ADDRESS | (UINT32)(bOffset)))
// Macro
#define mUsbGoSuspend() (bFUSBPort(0x00) |= (UINT8)BIT3)
#define mUsbSoftRstSet() (bFUSBPort(0x00) |= (UINT8)BIT4)
#define mUsbSoftRstClr() (bFUSBPort(0x00) &= ~(UINT8)BIT4)
#define mUsbHighSpeedST() (bFUSBPort(0x00) & (UINT8)BIT6)
#define mUsbRmWkupST() (bFUSBPort(0x00) & (UINT8)BIT0)
#define mUsbRmWkupClr() (bFUSBPort(0x00) &= ~(UINT8)BIT0)
#define mUsbRmWkupSet() (bFUSBPort(0x00) |= (UINT8)BIT0)
#define mUsbGlobIntEnSet() (bFUSBPort(0x00) |= (UINT8)BIT2)
#define mUsbChipEnSet() (bFUSBPort(0x00) |= (UINT8)BIT5)
#define mUsbHbfFlush() (bFUSBPort(0x00) |= (UINT8)BIT1)
#define mUsbHbfClr() (bFUSBPort(0x00) |= (UINT8)BIT7)
#define mUsbDevAddrSet(Value) (bFUSBPort(0x01) = Value)
#define mUsbCfgST() (bFUSBPort(0x01) & (UINT8)BIT7)
#define mUsbCfgSet() (bFUSBPort(0x01) |= (UINT8)BIT7)
#define mUsbCfgClr() (bFUSBPort(0x01) &= ~(UINT8)BIT7)
#define mUsbClrAllFIFOSet() (bFUSBPort(0x02) |= (UINT8)BIT0)
#define mUsbClrAllFIFOClr() (bFUSBPort(0x02) &= ~(UINT8)BIT0)
#define mUsbTstHalfSpeedEn() (bFUSBPort(0x02) |= (UINT8)BIT7)
#define mUsbTstHalfSpeedDis() (bFUSBPort(0x02) &= ~(UINT8)BIT7)
#define mUsbFrameNoLow() (bFUSBPort(0x04))
#define mUsbFrameNoHigh() (bFUSBPort(0x05))
#define mUsbSOFMaskHS() (bFUSBPort(0x06) = 0x4c); (bFUSBPort(0x07) = 0x4)
#define mUsbSOFMaskFS() (bFUSBPort(0x06) = 0x10); (bFUSBPort(0x07) = 0x27)
#define mUsbTsMdWr(item) (bFUSBPort(0x08) = item)
#define mUsbUnPLGClr() (bFUSBPort(0x08) &= ~(UINT8)BIT0)
#define mUsbEP0DoneSet() (bFUSBPort(0x0B) |= (UINT8)BIT0)
#define mUsbTsPkDoneSet() (bFUSBPort(0x0B) |= (UINT8)BIT1)
#define mUsbEP0StallSet() (bFUSBPort(0x0B) |= (UINT8)BIT2)
/////// Read CxF data ////////
#define mUsbEP0DataRdByte0() (bFUSBPort(0x0C))
#define mUsbEP0DataRdByte2() (bFUSBPort(0x0E))
#define mUsbEP0DataRdWord() (wFUSBPort(0x0C))
#define mUsbEP0DataRdDWord() (dwFUSBPort(0x0C))
/////// Write CxF data ////////
#define mUsbEP0DataWrByte0(data) (bFUSBPort(0x0C) = data)
#define mUsbEP0DataWrByte2(data) (bFUSBPort(0x0E) = data)
#define mUsbEP0DataWrWord(data) (wFUSBPort(0x0C) = data)
#define mUsbEP0DataWrDWord(data) (dwFUSBPort(0x0C) = (UINT32)data)
#define mUsbIntGrp1Dis() (bFUSBPort(0x10) |= (UINT8)BIT1)
#define mUsbIntGrp2Dis() (bFUSBPort(0x10) |= (UINT8)BIT2)
#define mUsbIntGrp3Dis() (bFUSBPort(0x10) |= (UINT8)BIT3)
#define mUsbIntGrp4Dis() (bFUSBPort(0x10) |= (UINT8)BIT4)
#define mUsbIntGrp5Dis() (bFUSBPort(0x10) |= (UINT8)BIT5)
#define mUsbIntGrp6Dis() (bFUSBPort(0x10) |= (UINT8)BIT6)
#define mUsbIntGrp7Dis() (bFUSBPort(0x10) |= (UINT8)BIT7)
#define mUsbIntEP0SetupDis() (bFUSBPort(0x11) |= (UINT8)BIT0)
#define mUsbIntEP0InDis() (bFUSBPort(0x11) |= (UINT8)BIT1)
#define mUsbIntEP0OutDis() (bFUSBPort(0x11) |= (UINT8)BIT2)
#define mUsbIntEP0EndDis() (bFUSBPort(0x11) |= (UINT8)BIT3)
#define mUsbIntEP0FailDis() (bFUSBPort(0x11) |= (UINT8)BIT4)
#define mUsbIntRdBufErrDis() (bFUSBPort(0x11) |= (UINT8)BIT5)
#define mUsbIntEP0SetupEn() (bFUSBPort(0x11) &= ~((UINT8)BIT0))
#define mUsbIntEP0InEn() (bFUSBPort(0x11) &= ~((UINT8)BIT1))
#define mUsbIntEP0OutEn() (bFUSBPort(0x11) &= ~((UINT8)BIT2))
#define mUsbIntEP0EndEn() (bFUSBPort(0x11) &= ~((UINT8)BIT3))
#define mUsbIntEP0FailEn() (bFUSBPort(0x11) &= ~((UINT8)BIT4))
#define mUsbIntRdBufErrEn() (bFUSBPort(0x11) &= ~((UINT8)BIT5))
#define mUsbIntFIFO0_3OUTDis() (bFUSBPort(0x12) = 0xFF)
#define mUsbIntFIFO4_7OUTDis() (bFUSBPort(0x13) = 0xFF)
#define mUsbIntFIFO8_9OUTDis() (bFUSBPort(0x14) = 0xFF)
#define mUsbIntFIFO0_7INDis() (bFUSBPort(0x16) = 0xFF)
#define mUsbIntFIFO8_9INDis() (bFUSBPort(0x17) = 0xFF)
#define mUsbIntF0OUTEn() (bFUSBPort(0x12) &= ~((UINT8)BIT1 | (UINT8)BIT0))
#define mUsbIntF2OUTEn() (bFUSBPort(0x12) &= ~((UINT8)BIT5 | (UINT8)BIT4))
#define mUsbIntF5OUTEn() (bFUSBPort(0x13) &= ~((UINT8)BIT3 | (UINT8)BIT2))
#define mUsbIntF0INEn() (bFUSBPort(0x16) &= ~((UINT8)BIT0))
#define mUsbIntF1INEn() (bFUSBPort(0x16) &= ~((UINT8)BIT1))
#define mUsbIntF4INEn() (bFUSBPort(0x16) &= ~((UINT8)BIT4))
#define mUsbIntF8INEn() (bFUSBPort(0x17) &= ~((UINT8)BIT0))
#define mUsbIntF0OUTDis() (bFUSBPort(0x12) |= ((UINT8)BIT1 | (UINT8)BIT0))
#define mUsbIntF2OUTDis() (bFUSBPort(0x12) |= ((UINT8)BIT5 | (UINT8)BIT4))
#define mUsbIntF5OUTDis() (bFUSBPort(0x13) |= ((UINT8)BIT3 | (UINT8)BIT2))
#define mUsbIntF0INDis() (bFUSBPort(0x16) |= (UINT8)BIT0)
#define mUsbIntF4INDis() (bFUSBPort(0x16) |= (UINT8)BIT4)
#define mUsbIntF8INDis() (bFUSBPort(0x17) |= (UINT8)BIT0)
#define mUsbIntBufEmptyDis() (bFUSBPort(0x18) |= 0x01)//|= BIT0)
#define mUsbIntRX0Byte0Rd() (bFUSBPort(0x19))
#define mUsbIntRX0Byte1Rd() (bFUSBPort(0x1A))
#define mUsbIntRX0Byte0Clr() (bFUSBPort(0x19) = 0)
#define mUsbIntRX0Byte1Clr() (bFUSBPort(0x1A) = 0)
#define mUsbIntGroupMaskRd() (bFUSBPort(0x10))
#define mUsbIntByte0MaskRd() (bFUSBPort(0x11))
#define mUsbIntByte1MaskRd() (bFUSBPort(0x12))
#define mUsbIntByte2MaskRd() (bFUSBPort(0x13))
#define mUsbIntByte3MaskRd() (bFUSBPort(0x14))
#define mUsbIntByte4MaskRd() (bFUSBPort(0x15))
#define mUsbIntByte5MaskRd() (bFUSBPort(0x16))
#define mUsbIntByte6MaskRd() (bFUSBPort(0x17))
#define mUsbIntByte7MaskRd() (bFUSBPort(0x18))
#define mUsbIntGroupRegRd() (bFUSBPort(0x20))
#define mUsbIntByte0Rd() (bFUSBPort(0x21))
#define mUsbIntByte1Rd() (bFUSBPort(0x22))
#define mUsbIntByte2Rd() (bFUSBPort(0x23))
#define mUsbIntByte3Rd() (bFUSBPort(0x24))
#define mUsbIntByte4Rd() (bFUSBPort(0x25))
#define mUsbIntByte5Rd() (bFUSBPort(0x26))
#define mUsbIntByte6Rd() (bFUSBPort(0x27))
#define mUsbIntByte7Rd() (bFUSBPort(0x28))
#define mUsbIntBusRstClr() (bFUSBPort(0x28) = 0x00) // so weird?
#define mUsbIntSuspClr() (bFUSBPort(0x28) = 0x00) // so weird?
#define mUsbIntResmClr() (bFUSBPort(0x28) = 0x00) // so weird?
#define mUsbIntIsoSeqErrClr() (bFUSBPort(0x28) &= ~BIT4) //
#define mUsbIntIsoSeqAbortClr() (bFUSBPort(0x28) &= ~BIT5) //
#define mUsbIntTX0ByteClr() (bFUSBPort(0x28) &= ~BIT6) //
#define mUsbIntRX0ByteClr() (bFUSBPort(0x28) &= ~BIT7) //
#define mUsbIntBufEmptyRd() (bFUSBPort(0x28) & BIT0) //
#define mUsbIntIsoSeqErr0Rd() (bFUSBPort(0x29))
#define mUsbIntIsoSeqErr1Rd() (bFUSBPort(0x2A))
#define mUsbIntIsoSeqErr0Clr() (bFUSBPort(0x29) = 0)
#define mUsbIntIsoSeqErr1Clr() (bFUSBPort(0x2A) = 0)
#define mUsbIntIsoSeqAbort0Rd() (bFUSBPort(0x2B))
#define mUsbIntIsoSeqAbort1Rd() (bFUSBPort(0x2C))
#define mUsbIntIsoSeqAbort0Clr() (bFUSBPort(0x2B) = 0)
#define mUsbIntIsoSeqAbort1Clr() (bFUSBPort(0x2C) = 0)
#define mUsbIntTX0Byte0Rd() (bFUSBPort(0x2D))
#define mUsbIntTX0Byte1Rd() (bFUSBPort(0x2E))
#define mUsbIntTX0Byte0Clr() (bFUSBPort(0x2D) = 0)
#define mUsbIntTX0Byte1Clr() (bFUSBPort(0x2E) = 0)
#define mUsbIdleCnt(time) (bFUSBPort(0x2F) = time)
#define mUsbHbfCountRd() (bFUSBPort(0x3F) & (0x1F))
// Endpoint & FIFO Configuration
#define mUsbEPinHighBandSet(EPn, dir , size ) (bFUSBPort(0x41 + ((EPn - 1) << 1)) &= ~(BIT6 |BIT5)); (bFUSBPort(0x41 + ((EPn - 1) << 1)) |= ((((INT8U)(size >> 11)+1) << 5)*(1 - dir)) )
#define mUsbEPMxPtSzLow(EPn, dir, size) (bFUSBPort(0x40 + (dir * 0x20) + ((EPn - 1) << 1)) = (INT8U)(size))
#define mUsbEPMxPtSzHigh(EPn, dir, size) (bFUSBPort(0x41 + (dir * 0x20) + ((EPn - 1) << 1)) = (INT8U)(size >> 8))
#define mUsbEPinMxPtSz(EPn) ((((bFUSBPort(0x41 + ((EPn - 1) << 1))) & 0x07) << 8) | (bFUSBPort(0x40 + ((EPn - 1) << 1))))
#define mUsbEPinStallST(EPn) ((bFUSBPort(0x41 + ((EPn - 1) << 1)) & BIT3) >> 3)
#define mUsbEPinStallClr(EPn) (bFUSBPort(0x41 + ((EPn - 1) << 1)) &= ~BIT3)
#define mUsbEPinStallSet(EPn) (bFUSBPort(0x41 + ((EPn - 1) << 1)) |= BIT3)
#define mUsbEPinRsTgClr(EPn) (bFUSBPort(0x41 + ((EPn - 1) << 1)) &= ~BIT4)
#define mUsbEPinRsTgSet(EPn) (bFUSBPort(0x41 + ((EPn - 1) << 1)) |= BIT4)
#define mUsbEPoutMxPtSz(EPn) ((((bFUSBPort(0x61 + ((EPn - 1) << 1))) & 0x07) << 8) | (bFUSBPort(0x60 + ((EPn - 1) << 1))))
#define mUsbEPoutStallST(EPn) ((bFUSBPort(0x61 + ((EPn - 1) << 1)) & BIT3) >> 3)
#define mUsbEPoutStallClr(EPn) (bFUSBPort(0x61 + ((EPn - 1) << 1)) &= ~BIT3)
#define mUsbEPoutStallSet(EPn) (bFUSBPort(0x61 + ((EPn - 1) << 1)) |= BIT3)
#define mUsbEPoutRsTgClr(EPn) (bFUSBPort(0x61 + ((EPn - 1) << 1)) &= ~BIT4)
#define mUsbEPoutRsTgSet(EPn) (bFUSBPort(0x61 + ((EPn - 1) << 1)) |= BIT4)
#define mUsbFIFO0DMAEn() (bFUSBPort(0x7e ) |= BIT0)
#define mUsbFIFO1DMAEn() (bFUSBPort(0x7e ) |= BIT1)
#define mUsbFIFO2DMAEn() (bFUSBPort(0x7e ) |= BIT2)
#define mUsbFIFO3DMAEn() (bFUSBPort(0x7e ) |= BIT3)
#define mUsbFIFO4DMAEn() (bFUSBPort(0x7e ) |= BIT4)
#define mUsbFIFO5DMAEn() (bFUSBPort(0x7e ) |= BIT5)
#define mUsbFIFO6DMAEn() (bFUSBPort(0x7e ) |= BIT6)
#define mUsbFIFO7DMAEn() (bFUSBPort(0x7e ) |= BIT7)
#define mUsbFIFO0DMADis() (bFUSBPort(0x7e ) &= ~BIT0)
#define mUsbFIFO1DMADis() (bFUSBPort(0x7e ) &= ~BIT1)
#define mUsbFIFO2DMADis() (bFUSBPort(0x7e ) &= ~BIT2)
#define mUsbFIFO3DMADis() (bFUSBPort(0x7e ) &= ~BIT3)
#define mUsbFIFO4DMADis() (bFUSBPort(0x7e ) &= ~BIT4)
#define mUsbFIFO5DMADis() (bFUSBPort(0x7e ) &= ~BIT5)
#define mUsbFIFO6DMADis() (bFUSBPort(0x7e ) &= ~BIT6)
#define mUsbFIFO7DMADis() (bFUSBPort(0x7e ) &= ~BIT7)
#define mUsbFIFO8DMAEn() (bFUSBPort(0x7f ) |= BIT0)
#define mUsbFIFO9DMAEn() (bFUSBPort(0x7f ) |= BIT1)
#define mUsbFIFO10DMAEn() (bFUSBPort(0x7f ) |= BIT2)
#define mUsbFIFO11DMAEn() (bFUSBPort(0x7f ) |= BIT3)
#define mUsbFIFO12DMAEn() (bFUSBPort(0x7f ) |= BIT4)
#define mUsbFIFO13DMAEn() (bFUSBPort(0x7f ) |= BIT5)
#define mUsbFIFO14DMAEn() (bFUSBPort(0x7f ) |= BIT6)
#define mUsbFIFO15DMAEn() (bFUSBPort(0x7f ) |= BIT7)
#define mUsbEPMap(EPn, MAP) (bFUSBPort(0x30 + (EPn-1)) = MAP)
#define mUsbEPMapRd(EPn) (bFUSBPort(0x30 + (EPn-1)))
#define mUsbFIFOMap(FIFOn, MAP) (bFUSBPort(0x80 + FIFOn) = MAP)
#define mUsbFIFOMapRd(FIFOn) (bFUSBPort(0x80 + FIFOn))
#define mUsbFIFOConfig(FIFOn, CONFIG) (bFUSBPort(0x90 + FIFOn) = CONFIG)
#define mUsbFIFOConfigRd(FIFOn) (bFUSBPort(0x90 + FIFOn))
#define mUsbFIFOOutByteCount(fifo_num) (UINT16)(((((UINT16)bFUSBPort(0xA0+fifo_num))&((UINT16)0x07))<<8) | ((UINT16)bFUSBPort(0xB0+fifo_num)))
#define mUsbFIFODone(fifo_num) (bFUSBPort(0xA0+fifo_num) |= ((UINT8)BIT3))
/////// Read Data FIFO ////////
#define mUsbRdByte0(FIFOn) (bFUSBPort(0xC0 + (FIFOn<<2)))
#define mUsbRdByte2(FIFOn) (bFUSBPort(0xC2 + (FIFOn<<2)))
#define mUsbRdWord(FIFOn) (wFUSBPort(0xC0 + (FIFOn<<2)))
#define mUsbRdDWord(FIFOn) (dwFUSBPort(0xC0 + (FIFOn<<2)))
/////// Write Data FIFO ////////
#define mUsbWrByte0(FIFOn, value) (bFUSBPort(0xC0 + (FIFOn<<2)) = value)
#define mUsbWrByte2(FIFOn, value) (bFUSBPort(0xC2 + (FIFOn<<2)) = value)
#define mUsbWrWord(FIFOn, value) (wFUSBPort(0xC0 + (FIFOn<<2)) = value)
#define mUsbWrDWord(FIFOn, value) (dwFUSBPort(0xC0 + (FIFOn<<2)) = value)
#if 0
/////////////////// For AP use //////////////////////
#define mUsbAPDbus1B() (bFUSBPort(0xF0) = (BIT0 ))
#define mUsbAPDbus2B() (bFUSBPort(0xF0) = (BIT0 | BIT1 ))
#define mUsbAPDbus3B() (bFUSBPort(0xF0) = (BIT0 | BIT1 | BIT2 ))
#define mUsbAPDbus4B() (bFUSBPort(0xF0) = (BIT0 | BIT1 | BIT2 | BIT3))
#define mUsbAPDbus1BTermWr() (bFUSBPort(0xF0) = ((BIT0 ) | BIT4))
#define mUsbAPDbus2BTermWr() (bFUSBPort(0xF0) = ((BIT0 | BIT1 ) | BIT4))
#define mUsbAPDbus3BTermWr() (bFUSBPort(0xF0) = ((BIT0 | BIT1 | BIT2 ) | BIT4))
#define mUsbAPDbus4BTermWr() (bFUSBPort(0xF0) = ((BIT0 | BIT1 | BIT2 | BIT3) | BIT4))
#define mUsbAPSetDbusAddr(fifo_num) (bFUSBPort(0xF1) = (0xC0 + (fifo_num << 2)))
#define mUsbAPAPBLastTx() (bFUSBPort(0xF2) = (BIT1 | BIT2)) // select SDC as target
#define mUsbAPAPBnonLastTx() (bFUSBPort(0xF2) = BIT1) // select SDC as target
#define mUsbAPSetAPBAddr(offset) (bFUSBPort(0xF3) = offset)
#define mUsbAPRdByte(ByteN) (bFUSBPort(0xF4 + ByteN))
#define mUsbAPWrByte(ByteN, value) (bFUSBPort(0xF4 + ByteN) = value)
#define mUsbAPDMATrig(action) (bFUSBPort(0xF8) = action)
#define mUsbAPWaitDMA() //while(~((BOOLEAN)bFUSBPort(0xFA)))
#define mUsbAPMaskInt() (bFUSBPort(0xFC) = BIT1)
#endif
#if 0
//////////////////// For Pattern Generation Machine use /////
#define PGStop 0
#define PGINStart 1
#define PGOUTStart 2
#define PGHsShortPacketTest (ptENDPOINT->wMaxPacketSize & 0x7ff)
#define PGFsShortPacketTest (ptENDPOINT->wMaxPacketSize & 0x7ff)
#define mUsbPGPackSize(size) (FUSBPatternGenPort(0x0) = (INT8U)size); (FUSBPatternGenPort(0x1) = (INT8U)(size >> 8)) // Packet Size
#define mUsbPGWrap(wrap) (FUSBPatternGenPort(0x2) = (INT8U)wrap) // wrap
#define mUsbPGErCountThreshold(threshold) (FUSBPatternGenPort(0x3) = (INT8U)threshold) // Error data Count Threshold
#define mUsbPGEnable(enable) (FUSBPatternGenPort(0x4) = (INT8U)enable) // Start to Generate data
#define mUsbPGErCountRd(count) (FUSBPatternGenPort(0x5)) // Error Count Read
#endif
#endif /* __FUSB220_M_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -