1 2 /******************************************************************************/ 3 /* Device Specific Peripheral registers structures */ 4 /******************************************************************************/ 5 6 /** @addtogroup REGISTER Control Register 7 8 @{ 9 10 */ 11 12 13 /*---------------------- USB Device Controller -------------------------*/ 14 /** 15 @addtogroup USBD USB Device Controller(USBD) 16 Memory Mapped Structure for USBD Controller 17 @{ */ 18 19 /** 20 * @brief USBD endpoints register 21 */ 22 typedef struct 23 { 24 /** 25 * @var USBD_EP_T::BUFSEG 26 * Offset: 0x500/0x510/0x520/0x530/0x540/0x550/0x560/0x570/0x580/0x590/0x5A0/0x5B0 Endpoint Buffer Segmentation Register 27 * --------------------------------------------------------------------------------------------------- 28 * |Bits |Field |Descriptions 29 * | :----: | :----: | :---- | 30 * |[8:3] |BUFSEG |Endpoint Buffer Segmentation 31 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 32 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 33 * | | |Where the USBD_SRAM address = USBD_BA+0x100h. 34 * | | |Refer to the section 6.32.5.7 for the endpoint SRAM structure and its description. 35 * @var USBD_EP_T::MXPLD 36 * Offset: 0x504/0x514/0x524/0x534/0x544/0x554/0x564/0x574/0x584/0x594/0x5A4/0x5B4 Endpoint Maximal Payload Register 37 * --------------------------------------------------------------------------------------------------- 38 * |Bits |Field |Descriptions 39 * | :----: | :----: | :---- | 40 * |[8:0] |MXPLD |Maximal Payload 41 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 42 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 43 * | | |(1) When the register is written by CPU, 44 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 45 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 46 * | | |(2) When the register is read by CPU, 47 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host. 48 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 49 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 50 * @var USBD_EP_T::CFG 51 * Offset: 0x508/0x518/0x528/0x538/0x548/0x558/0x568/0x578/0x588/0x598/0x5A8/0x5B8 Endpoint Configuration Register 52 * --------------------------------------------------------------------------------------------------- 53 * |Bits |Field |Descriptions 54 * | :----: | :----: | :---- | 55 * |[3:0] |EPNUM |Endpoint Number 56 * | | |These bits are used to define the endpoint number of the current endpoint. 57 * |[4] |ISOCH |Isochronous Endpoint 58 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 59 * | | |0 = No Isochronous endpoint. 60 * | | |1 = Isochronous endpoint. 61 * |[6:5] |STATE |Endpoint State 62 * | | |00 = Endpoint Disabled. 63 * | | |01 = Out endpoint. 64 * | | |10 = IN endpoint. 65 * | | |11 = Undefined. 66 * |[7] |DSQSYNC |Data Sequence Synchronization 67 * | | |0 = DATA0 PID. 68 * | | |1 = DATA1 PID. 69 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet. 70 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 71 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won?�t be toggled in double buffer mode. 72 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 73 * | | |Note 2: It won?�t be toggled by hardware when DBEN = 1. USB data toggle will be guaranteed by changing endpoint. 74 * |[9] |CSTALL |Clear STALL Response 75 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 76 * | | |1 = Clear the device to response STALL handshake in setup stage. 77 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 78 * | | |0 = Inactive in double buffer mode. 79 * | | |1 = Active in double buffer mode. 80 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 81 * |[11] |DBEN |Double Buffer Enable 82 * | | |0 = Single buffer mode. 83 * | | |1 = Double buffer mode. 84 * @var USBD_EP_T::CFGP 85 * Offset: 0x50C/0x51C/0x52C/0x53C/0x54C/0x55C/0x56C/0x57C/0x58C/0x59C/0x5AC/0x5BC Endpoint Set Stall and Clear In/Out Ready Control Register 86 * --------------------------------------------------------------------------------------------------- 87 * |Bits |Field |Descriptions 88 * | :----: | :----: | :---- | 89 * |[0] |CLRRDY |Clear Ready 90 * | | |When the USBD_MXPLDx register is set by user, it means that the endpoint is ready to transmit or receive data 91 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically cleared to 0. 92 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 93 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 94 * | | |This bit is written 1 only and is always 0 when it is read back. 95 * |[1] |SSTALL |Set STALL 96 * | | |0 = Disable the device to response STALL. 97 * | | |1 = Set the device to respond STALL automatically. 98 */ 99 __IO uint32_t BUFSEG; /*!< [0x0000] Endpoint Buffer Segmentation Register */ 100 __IO uint32_t MXPLD; /*!< [0x0004] Endpoint Maximal Payload Register */ 101 __IO uint32_t CFG; /*!< [0x0008] Endpoint Configuration Register */ 102 __IO uint32_t CFGP; /*!< [0x000c] Endpoint Set Stall and Clear In/Out Ready Control Register */ 103 104 } USBD_EP_T; 105 typedef struct 106 { 107 108 109 /** 110 * @var USBD_T::INTEN 111 * Offset: 0x00 USB Device Interrupt Enable Register 112 * --------------------------------------------------------------------------------------------------- 113 * |Bits |Field |Descriptions 114 * | :----: | :----: | :---- | 115 * |[0] |BUSIEN |Bus Event Interrupt Enable Bit 116 * | | |0 = BUS event interrupt Disabled. 117 * | | |1 = BUS event interrupt Enabled. 118 * |[1] |USBIEN |USB Event Interrupt Enable Bit 119 * | | |0 = USB event interrupt Disabled. 120 * | | |1 = USB event interrupt Enabled. 121 * |[2] |VBDETIEN |VBUS Detection Interrupt Enable Bit 122 * | | |0 = VBUS detection Interrupt Disabled. 123 * | | |1 = VBUS detection Interrupt Enabled. 124 * |[3] |NEVWKIEN |USB No-event-wake-up Interrupt Enable Bit 125 * | | |0 = No-event-wake-up Interrupt Disabled. 126 * | | |1 = No-event-wake-up Interrupt Enabled. 127 * |[4] |SOFIEN |Start of Frame Interrupt Enable Bit 128 * | | |0 = SOF Interrupt Disabled. 129 * | | |1 = SOF Interrupt Enabled. 130 * |[8] |WKEN |Wake-up Function Enable Bit 131 * | | |0 = USB wake-up function Disabled. 132 * | | |1 = USB wake-up function Enabled. 133 * |[15] |INNAKEN |Active NAK Function and Its Status in IN Token 134 * | | |0 = When device responds NAK after receiving IN token, IN NAK status will not be updated to USBD_EPSTS0 and USBD_EPSTS1register, so that the USB interrupt event will not be asserted. 135 * | | |1 = IN NAK status will be updated to USBD_EPSTS0 and USBD_EPSTS1 register and the USB interrupt event will be asserted, when the device responds NAK after receiving IN token. 136 * @var USBD_T::INTSTS 137 * Offset: 0x04 USB Device Interrupt Event Status Register 138 * --------------------------------------------------------------------------------------------------- 139 * |Bits |Field |Descriptions 140 * | :----: | :----: | :---- | 141 * |[0] |BUSIF |BUS Interrupt Status 142 * | | |The BUS event means that there is one of the suspense or the resume function in the bus. 143 * | | |0 = No BUS event occurred. 144 * | | |1 = Bus event occurred; check USBD_ATTR[3:0] to know which kind of bus event was occurred, cleared by writing 1 to USBD_INTSTS[0]. 145 * |[1] |USBIF |USB Event Interrupt Status 146 * | | |The USB event includes the SETUP Token, IN Token, OUT ACK, ISO IN, or ISO OUT events in the bus. 147 * | | |0 = No USB event occurred. 148 * | | |1 = USB event occurred 149 * | | |Check EPSTS0~25 in USBD_EPSTS0~3 to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[1] or USBD_INTSTS[27:16] or USBD_EPINTSTS[24:0] and SETUP (USBD_INTSTS[31]). 150 * |[2] |VBDETIF |VBUS Detection Interrupt Status 151 * | | |0 = There is not attached/detached event in the USB. 152 * | | |1 = There is attached/detached event in the USB bus and it is cleared by writing 1 to USBD_INTSTS[2]. 153 * |[3] |NEVWKIF |No-event-wake-up Interrupt Status 154 * | | |0 = NEVWK event did not occur. 155 * | | |1 = No-event-wake-up event occurred, cleared by writing 1 to USBD_INTSTS[3]. 156 * |[4] |SOFIF |Start of Frame Interrupt Status 157 * | | |0 = SOF event did not occur. 158 * | | |1 = SOF event occurred, cleared by writing 1 to USBD_INTSTS[4]. 159 * |[16] |EPEVT0 |Endpoint 0's USB Event Status 160 * | | |0 = No event occurred in endpoint 0. 161 * | | |1 = USB event occurred on Endpoint 0 162 * | | |Check USBD_EPSTS0[3:0] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[16] or USBD_EPINTSTS[0] or USBD_INTSTS[1]. 163 * |[17] |EPEVT1 |Endpoint 1's USB Event Status 164 * | | |0 = No event occurred in endpoint 1. 165 * | | |1 = USB event occurred on Endpoint 1 166 * | | |Check USBD_EPSTS0[7:4] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[17] or USBD_EPINTSTS[1] or USBD_INTSTS[1]. 167 * |[18] |EPEVT2 |Endpoint 2's USB Event Status 168 * | | |0 = No event occurred in endpoint 2. 169 * | | |1 = USB event occurred on Endpoint 2 170 * | | |Check USBD_EPSTS0[11:8] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[18] or USBD_EPINTSTS[2] or USBD_INTSTS[1]. 171 * |[19] |EPEVT3 |Endpoint 3's USB Event Status 172 * | | |0 = No event occurred in endpoint 3. 173 * | | |1 = USB event occurred on Endpoint 3 174 * | | |Check USBD_EPSTS0[15:12] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[19] or USBD_EPINTSTS[3] or USBD_INTSTS[1]. 175 * |[20] |EPEVT4 |Endpoint 4's USB Event Status 176 * | | |0 = No event occurred in endpoint 4. 177 * | | |1 = USB event occurred on Endpoint 4 178 * | | |Check USBD_EPSTS0[19:16] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[20] or USBD_EPINTSTS[4] or USBD_INTSTS[1]. 179 * |[21] |EPEVT5 |Endpoint 5's USB Event Status 180 * | | |0 = No event occurred in endpoint 5. 181 * | | |1 = USB event occurred on Endpoint 5 182 * | | |Check USBD_EPSTS0[23:20] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[21] or USBD_EPINTSTS[5] or USBD_INTSTS[1]. 183 * |[22] |EPEVT6 |Endpoint 6's USB Event Status 184 * | | |0 = No event occurred in endpoint 6. 185 * | | |1 = USB event occurred on Endpoint 6 186 * | | |Check USBD_EPSTS0[27:24] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[22] or USBD_EPINTSTS[6] or USBD_INTSTS[1]. 187 * |[23] |EPEVT7 |Endpoint 7's USB Event Status 188 * | | |0 = No event occurred in endpoint 7. 189 * | | |1 = USB event occurred on Endpoint 7 190 * | | |Check USBD_EPSTS0[31:28] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[23] or USBD_EPINTSTS[7] or USBD_INTSTS[1]. 191 * |[24] |EPEVT8 |Endpoint 8's USB Event Status 192 * | | |0 = No event occurred in endpoint 8. 193 * | | |1 = USB event occurred on Endpoint 8 194 * | | |Check USBD_EPSTS1[3:0] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[24] or USBD_EPINTSTS[8] or USBD_INTSTS[1]. 195 * |[25] |EPEVT9 |Endpoint 9's USB Event Status 196 * | | |0 = No event occurred in endpoint 9. 197 * | | |1 = USB event occurred on Endpoint 9 198 * | | |Check USBD_EPSTS1[7:4] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[25] or USBD_EPINTSTS[9] or USBD_INTSTS[1]. 199 * |[26] |EPEVT10 |Endpoint 10's USB Event Status 200 * | | |0 = No event occurred in endpoint 10. 201 * | | |1 = USB event occurred on Endpoint 10 202 * | | |Check USBD_EPSTS1[11:8] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[26] or USBD_EPINTSTS[10] or USBD_INTSTS[1]. 203 * |[27] |EPEVT11 |Endpoint 11's USB Event Status 204 * | | |0 = No event occurred in endpoint 11. 205 * | | |1 = USB event occurred on Endpoint 11 206 * | | |Check USBD_EPSTS1[15:12] to know which kind of USB event was occurred, cleared by writing 1 to USBD_INTSTS[27] or USBD_EPINTSTS[11] or USBD_INTSTS[1]. 207 * |[31] |SETUP |Setup Event Status 208 * | | |0 = No Setup event. 209 * | | |1 = Setup event occurred, cleared by writing 1 to USBD_INTSTS[31]. 210 * @var USBD_T::FADDR 211 * Offset: 0x08 USB Device Function Address Register 212 * --------------------------------------------------------------------------------------------------- 213 * |Bits |Field |Descriptions 214 * | :----: | :----: | :---- | 215 * |[6:0] |FADDR |USB device function address 216 * @var USBD_T::EPSTS 217 * Offset: 0x0C USB Device Endpoint Status Register 218 * --------------------------------------------------------------------------------------------------- 219 * |Bits |Field |Descriptions 220 * | :----: | :----: | :---- | 221 * |[7] |OV |Overrun 222 * | | |It indicates that the received data is over the maximum payload number or not. 223 * | | |0 = No overrun. 224 * | | |1 = Out Data is more than the Max Payload in MXPLD register or the Setup Data is more than 8 bytes. 225 * @var USBD_T::ATTR 226 * Offset: 0x10 USB Device Bus Status and Attribution Register 227 * --------------------------------------------------------------------------------------------------- 228 * |Bits |Field |Descriptions 229 * | :----: | :----: | :---- | 230 * |[0] |USBRST |USB Reset Status (Read Only) 231 * | | |0 = Bus no reset. 232 * | | |1 = Bus reset when SE0 (single-ended 0) more than 2.5us. 233 * |[1] |SUSPEND |Suspend Status (Read Only) 234 * | | |0 = Bus no suspend. 235 * | | |1 = Bus idle more than 3ms, either cable is plugged-out or host is sleeping. 236 * |[2] |RESUME |Resume Status (Read Only) 237 * | | |0 = No bus resume. 238 * | | |1 = Resume from suspend. 239 * |[3] |TOUT |Time-out Status (Read Only) 240 * | | |0 = No time-out. 241 * | | |1 = No Bus response more than 18 bits time. 242 * |[4] |PHYEN |PHY Transceiver Function Enable Bit 243 * | | |0 = PHY transceiver function Disabled. 244 * | | |1 = PHY transceiver function Enabled. 245 * |[5] |RWAKEUP |Remote Wake-up 246 * | | |0 = Release the USB bus from K state. 247 * | | |1 = Force USB bus to K (USB_D+ low, USB_D- high) state, used for remote wake-up. 248 * |[7] |USBEN |USB Controller Enable Bit 249 * | | |0 = USB Controller Disabled. 250 * | | |1 = USB Controller Enabled. 251 * |[8] |DPPUEN |Pull-up Resistor on USB_DP Enable Bit 252 * | | |0 = Pull-up resistor in USB_D+ bus Disabled. 253 * | | |1 = Pull-up resistor in USB_D+ bus Active. 254 * |[9] |PWRDN |Power-down PHY Transceiver, Low Active 255 * | | |0 = Power-down related circuit of PHY transceiver. 256 * | | |1 = Turn-on related circuit of PHY transceiver. 257 * |[10] |BYTEM |CPU Access USB SRAM Size Mode Selection 258 * | | |0 = Word mode: The size of the transfer from CPU to USB SRAM can be Word only. 259 * | | |1 = Byte mode: The size of the transfer from CPU to USB SRAM can be Byte only. 260 * |[11] |LPMACK |LPM Token Acknowledge Enable Bit 261 * | | |The NYET/ACK will be returned only on a successful LPM transaction if no errors in both the EXT token and the LPM token and a valid bLinkState = 0001 (L1) is received, else ERROR and STALL will be returned automatically, respectively. 262 * | | |0= The valid LPM Token will be NYET. 263 * | | |1= The valid LPM Token will be ACK. 264 * |[12] |L1SUSPEND |LPM L1 Suspend (Read Only) 265 * | | |0 = Bus no L1 state suspend. 266 * | | |1 = This bit is set by the hardware when LPM command to enter the L1 state is successfully received and acknowledged 267 * |[13] |L1RESUME |LPM L1 Resume (Read Only) 268 * | | |0 = Bus no LPM L1 state resume. 269 * | | |1 = LPM L1 state resume from LPM L1 state suspend. 270 * @var USBD_T::VBUSDET 271 * Offset: 0x14 USB Device VBUS Detection Register 272 * --------------------------------------------------------------------------------------------------- 273 * |Bits |Field |Descriptions 274 * | :----: | :----: | :---- | 275 * |[0] |VBUSDET |Device VBUS Detection 276 * | | |0 = Controller is not attached to the USB host. 277 * | | |1 = Controller is attached to the USB host. 278 * @var USBD_T::STBUFSEG 279 * Offset: 0x18 SETUP Token Buffer Segmentation Register 280 * --------------------------------------------------------------------------------------------------- 281 * |Bits |Field |Descriptions 282 * | :----: | :----: | :---- | 283 * |[10:3] |STBUFSEG |SETUP Token Buffer Segmentation 284 * | | |It is used to indicate the offset address for the SETUP token with the USB Device SRAM starting address 285 * | | |The effective starting address is 286 * | | |USBD_SRAM address + {STBUFSEG, 3'b000} 287 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 288 * | | |Note: It is used for SETUP token only. 289 * @var USBD_T::EPSTS0 290 * Offset: 0x20 USB Device Endpoint Status Register 0 291 * --------------------------------------------------------------------------------------------------- 292 * |Bits |Field |Descriptions 293 * | :----: | :----: | :---- | 294 * |[03:00] |EPSTS0 |Endpoint 0 Status 295 * | | |These bits are used to indicate the current status of this endpoint 296 * | | |0000 = In ACK. 297 * | | |0001 = In NAK. 298 * | | |0010 = Out Packet Data0 ACK. 299 * | | |0011 = Setup ACK. 300 * | | |0110 = Out Packet Data1 ACK. 301 * | | |0111 = Isochronous transfer end. 302 * |[07:04] |EPSTS1 |Endpoint 1 Status 303 * | | |These bits are used to indicate the current status of this endpoint 304 * | | |0000 = In ACK. 305 * | | |0001 = In NAK. 306 * | | |0010 = Out Packet Data0 ACK. 307 * | | |0011 = Setup ACK. 308 * | | |0110 = Out Packet Data1 ACK. 309 * | | |0111 = Isochronous transfer end. 310 * |[11:08] |EPSTS2 |Endpoint 2 Status 311 * | | |These bits are used to indicate the current status of this endpoint 312 * | | |0000 = In ACK. 313 * | | |0001 = In NAK. 314 * | | |0010 = Out Packet Data0 ACK. 315 * | | |0011 = Setup ACK. 316 * | | |0110 = Out Packet Data1 ACK. 317 * | | |0111 = Isochronous transfer end. 318 * |[15:12] |EPSTS3 |Endpoint 3 Status 319 * | | |These bits are used to indicate the current status of this endpoint 320 * | | |0000 = In ACK. 321 * | | |0001 = In NAK. 322 * | | |0010 = Out Packet Data0 ACK. 323 * | | |0011 = Setup ACK. 324 * | | |0110 = Out Packet Data1 ACK. 325 * | | |0111 = Isochronous transfer end. 326 * |[19:16] |EPSTS4 |Endpoint 4 Status 327 * | | |These bits are used to indicate the current status of this endpoint 328 * | | |0000 = In ACK. 329 * | | |0001 = In NAK. 330 * | | |0010 = Out Packet Data0 ACK. 331 * | | |0011 = Setup ACK. 332 * | | |0110 = Out Packet Data1 ACK. 333 * | | |0111 = Isochronous transfer end. 334 * |[23:20] |EPSTS5 |Endpoint 5 Status 335 * | | |These bits are used to indicate the current status of this endpoint 336 * | | |0000 = In ACK. 337 * | | |0001 = In NAK. 338 * | | |0010 = Out Packet Data0 ACK. 339 * | | |0011 = Setup ACK. 340 * | | |0110 = Out Packet Data1 ACK. 341 * | | |0111 = Isochronous transfer end. 342 * |[27:24] |EPSTS6 |Endpoint 6 Status 343 * | | |These bits are used to indicate the current status of this endpoint 344 * | | |0000 = In ACK. 345 * | | |0001 = In NAK. 346 * | | |0010 = Out Packet Data0 ACK. 347 * | | |0011 = Setup ACK. 348 * | | |0110 = Out Packet Data1 ACK. 349 * | | |0111 = Isochronous transfer end. 350 * |[31:28] |EPSTS7 |Endpoint 7 Status 351 * | | |These bits are used to indicate the current status of this endpoint 352 * | | |0000 = In ACK. 353 * | | |0001 = In NAK. 354 * | | |0010 = Out Packet Data0 ACK. 355 * | | |0011 = Setup ACK. 356 * | | |0110 = Out Packet Data1 ACK. 357 * | | |0111 = Isochronous transfer end. 358 * @var USBD_T::EPSTS1 359 * Offset: 0x24 USB Device Endpoint Status Register 1 360 * --------------------------------------------------------------------------------------------------- 361 * |Bits |Field |Descriptions 362 * | :----: | :----: | :---- | 363 * |[3:0] |EPSTS8 |Endpoint 8 Status 364 * | | |These bits are used to indicate the current status of this endpoint 365 * | | |0000 = In ACK. 366 * | | |0001 = In NAK. 367 * | | |0010 = Out Packet Data0 ACK. 368 * | | |0011 = Setup ACK. 369 * | | |0110 = Out Packet Data1 ACK. 370 * | | |0111 = Isochronous transfer end. 371 * |[7:4] |EPSTS9 |Endpoint 9 Status 372 * | | |These bits are used to indicate the current status of this endpoint 373 * | | |0000 = In ACK. 374 * | | |0001 = In NAK. 375 * | | |0010 = Out Packet Data0 ACK. 376 * | | |0011 = Setup ACK. 377 * | | |0110 = Out Packet Data1 ACK. 378 * | | |0111 = Isochronous transfer end. 379 * |[11:8] |EPSTS10 |Endpoint 10 Status 380 * | | |These bits are used to indicate the current status of this endpoint 381 * | | |0000 = In ACK. 382 * | | |0001 = In NAK. 383 * | | |0010 = Out Packet Data0 ACK. 384 * | | |0011 = Setup ACK. 385 * | | |0110 = Out Packet Data1 ACK. 386 * | | |0111 = Isochronous transfer end. 387 * |[15:12] |EPSTS11 |Endpoint 11 Status 388 * | | |These bits are used to indicate the current status of this endpoint 389 * | | |0000 = In ACK. 390 * | | |0001 = In NAK. 391 * | | |0010 = Out Packet Data0 ACK. 392 * | | |0011 = Setup ACK. 393 * | | |0110 = Out Packet Data1 ACK. 394 * | | |0111 = Isochronous transfer end. 395 * @var USBD_T::EPSTS2 396 * Offset: 0x28 USB Device Endpoint Status Register 2 397 * --------------------------------------------------------------------------------------------------- 398 * |Bits |Field |Descriptions 399 * | :----: | :----: | :---- | 400 * |[3:0] |EPSTS16 |Endpoint 16 Status 401 * | | |These bits are used to indicate the current status of this endpoint. 402 * | | |0000 = In ACK. 403 * | | |0001 = In NAK. 404 * | | |0010 = Out Packet Data0 ACK. 405 * | | |0110 = Out Packet Data1 ACK. 406 * | | |0111 = Isochronous transfer end. 407 * |[7:4] |EPSTS17 |Endpoint 17 Status 408 * | | |These bits are used to indicate the current status of this endpoint. 409 * | | |0000 = In ACK. 410 * | | |0001 = In NAK. 411 * | | |0010 = Out Packet Data0 ACK. 412 * | | |0110 = Out Packet Data1 ACK. 413 * | | |0111 = Isochronous transfer end. 414 * |[11:8] |EPSTS18 |Endpoint 18 Status 415 * | | |These bits are used to indicate the current status of this endpoint. 416 * | | |0000 = In ACK. 417 * | | |0001 = In NAK. 418 * | | |0010 = Out Packet Data0 ACK. 419 * | | |0110 = Out Packet Data1 ACK. 420 * | | |0111 = Isochronous transfer end. 421 * @var USBD_T::EPINTSTS 422 * Offset: 0x30 USB Device Endpoint Interrupt Event Status Register 423 * --------------------------------------------------------------------------------------------------- 424 * |Bits |Field |Descriptions 425 * | :----: | :----: | :---- | 426 * |[0] |EPEVT0 |Endpoint 0's USB Event Status 427 * | | |0 = No event occurred in endpoint 0. 428 * | | |1 = USB event occurred on Endpoint 0 429 * | | |Check USBD_EPSTS0[3:0] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[0] or USBD_INTSTS[16] or USBD_INTSTS[1]. 430 * |[1] |EPEVT1 |Endpoint 1's USB Event Status 431 * | | |0 = No event occurred in endpoint 1. 432 * | | |1 = USB event occurred on Endpoint 1 433 * | | |Check USBD_EPSTS0[7:4] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[1] or USBD_INTSTS[17] or USBD_INTSTS[1]. 434 * |[2] |EPEVT2 |Endpoint 2's USB Event Status 435 * | | |0 = No event occurred in endpoint 2. 436 * | | |1 = USB event occurred on Endpoint 2 437 * | | |Check USBD_EPSTS0[11:8] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[2] or USBD_EPINTSTS[2] or USBD_INTSTS[18] or USBD_INTSTS[1]. 438 * |[3] |EPEVT3 |Endpoint 3's USB Event Status 439 * | | |0 = No event occurred in endpoint 3. 440 * | | |1 = USB event occurred on Endpoint 3 441 * | | |Check USBD_EPSTS0[15:12] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[3] or USBD_INTSTS[19] or USBD_INTSTS[1]. 442 * |[4] |EPEVT4 |Endpoint 4's USB Event Status 443 * | | |0 = No event occurred in endpoint 4. 444 * | | |1 = USB event occurred on Endpoint 4 445 * | | |Check USBD_EPSTS0[19:16] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[4] or USBD_INTSTS[20] or USBD_INTSTS[1]. 446 * |[5] |EPEVT5 |Endpoint 5's USB Event Status 447 * | | |0 = No event occurred in endpoint 5. 448 * | | |1 = USB event occurred on Endpoint 5 449 * | | |Check USBD_EPSTS0[23:20] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[5] or USBD_INTSTS[21] or USBD_INTSTS[1]. 450 * |[6] |EPEVT6 |Endpoint 6's USB Event Status 451 * | | |0 = No event occurred in endpoint 6. 452 * | | |1 = USB event occurred on Endpoint 6 453 * | | |Check USBD_EPSTS0[27:24] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[6] or USBD_INTSTS[22] or USBD_INTSTS[1]. 454 * |[7] |EPEVT7 |Endpoint 7's USB Event Status 455 * | | |0 = No event occurred in endpoint 7. 456 * | | |1 = USB event occurred on Endpoint 7 457 * | | |Check USBD_EPSTS0[31:28] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[7] or USBD_INTSTS[23] or USBD_INTSTS[1]. 458 * |[8] |EPEVT8 |Endpoint 8's USB Event Status 459 * | | |0 = No event occurred in endpoint 8. 460 * | | |1 = USB event occurred on Endpoint 8 461 * | | |Check USBD_EPSTS1[3:0] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[8] or USBD_INTSTS[24] or USBD_INTSTS[1]. 462 * |[9] |EPEVT9 |Endpoint 9's USB Event Status 463 * | | |0 = No event occurred in endpoint 9. 464 * | | |1 = USB event occurred on Endpoint 9 465 * | | |Check USBD_EPSTS1[7:4] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[9] or USBD_INTSTS[25] or USBD_INTSTS[1]. 466 * |[10] |EPEVT10 |Endpoint 10's USB Event Status 467 * | | |0 = No event occurred in endpoint 10. 468 * | | |1 = USB event occurred on Endpoint 10 469 * | | |Check USBD_EPSTS1[11:8] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[10] or USBD_INTSTS[26] or USBD_INTSTS[1]. 470 * |[11] |EPEVT11 |Endpoint 11's USB Event Status 471 * | | |0 = No event occurred in endpoint 11. 472 * | | |1 = USB event occurred on Endpoint 11 473 * | | |Check USBD_EPSTS1[15:12] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[11] or USBD_INTSTS[27] or USBD_INTSTS[1]. 474 * |[12] |EPEVT12 |Endpoint 12's USB Event Status 475 * | | |0 = No event occurred in endpoint 12. 476 * | | |1 = USB event occurred on Endpoint 12 477 * | | |Check USBD_EPSTS1[19:16] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[12] or USBD_INTSTS[1]. 478 * |[13] |EPEVT13 |Endpoint 13's USB Event Status 479 * | | |0 = No event occurred in endpoint 13. 480 * | | |1 = USB event occurred on Endpoint 13 481 * | | |Check USBD_EPSTS1[23:20] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[13] or USBD_INTSTS[1]. 482 * |[14] |EPEVT14 |Endpoint 14's USB Event Status 483 * | | |0 = No event occurred in endpoint 14. 484 * | | |1 = USB event occurred on Endpoint 14 485 * | | |Check USBD_EPSTS1[27:24] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[14] or USBD_INTSTS[1]. 486 * |[15] |EPEVT15 |Endpoint 15's USB Event Status 487 * | | |0 = No event occurred in endpoint 15. 488 * | | |1 = USB event occurred on Endpoint 15 489 * | | |Check USBD_EPSTS1[31:28] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[15] or USBD_INTSTS[1]. 490 * |[16] |EPEVT16 |Endpoint 16's USB Event Status 491 * | | |0 = No event occurred in endpoint 16. 492 * | | |1 = USB event occurred on Endpoint 16 493 * | | |Check USBD_EPSTS2[3:0] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[16] or USBD_INTSTS[1]. 494 * |[17] |EPEVT17 |Endpoint 17's USB Event Status 495 * | | |0 = No event occurred in endpoint 17. 496 * | | |1 = USB event occurred on Endpoint 17 497 * | | |Check USBD_EPSTS2[7:4] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[17] or USBD_INTSTS[1]. 498 * |[18] |EPEVT18 |Endpoint 18's USB Event Status 499 * | | |0 = No event occurred in endpoint 18. 500 * | | |1 = USB event occurred on Endpoint 18 501 * | | |Check USBD_EPSTS2[11:8] to know which kind of USB event was occurred, cleared by writing 1 to USBD_EPINTSTS[18] or USBD_INTSTS[1]. 502 * @var USBD_T::LPMATTR 503 * Offset: 0x88 USB LPM Attribution Register 504 * --------------------------------------------------------------------------------------------------- 505 * |Bits |Field |Descriptions 506 * | :----: | :----: | :---- | 507 * |[3:0] |LPMLINKSTS|LPM Link State 508 * | | |These bits contain the bLinkState received with last ACK LPM Token 509 * |[7:4] |LPMBESL |LPM Best Effort Service Latency 510 * | | |These bits contain the BESL value received with last ACK LPM Token 511 * |[8] |LPMRWAKUP |LPM Remote Wakeup 512 * | | |This bit contains the bRemoteWake value received with last ACK LPM Token 513 * @var USBD_T::FN 514 * Offset: 0x8C USB Frame Number Register 515 * --------------------------------------------------------------------------------------------------- 516 * |Bits |Field |Descriptions 517 * | :----: | :----: | :---- | 518 * |[10:0] |FN |Frame Number 519 * | | |These bits contain the 11-bits frame number in the last received SOF packet. 520 * @var USBD_T::SE0 521 * Offset: 0x90 USB Device Drive SE0 Control Register 522 * --------------------------------------------------------------------------------------------------- 523 * |Bits |Field |Descriptions 524 * | :----: | :----: | :---- | 525 * |[0] |SE0 |Drive Single Ended Zero in USB Bus 526 * | | |The Single Ended Zero (SE0) is when both lines (USB_D+ and USB_D-) are being pulled low. 527 * | | |0 = Normal operation. 528 * | | |1 = Force USB PHY transceiver to drive SE0. 529 * @var USBD_T::BUFSEG0 530 * Offset: 0x500 Endpoint 0 Buffer Segmentation Register 531 * --------------------------------------------------------------------------------------------------- 532 * |Bits |Field |Descriptions 533 * | :----: | :----: | :---- | 534 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 535 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 536 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 537 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 538 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 539 * @var USBD_T::MXPLD0 540 * Offset: 0x504 Endpoint 0 Maximal Payload Register 541 * --------------------------------------------------------------------------------------------------- 542 * |Bits |Field |Descriptions 543 * | :----: | :----: | :---- | 544 * |[10:0] |MXPLD |Maximal Payload 545 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 546 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 547 * | | |(1) When the register is written by CPU, 548 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 549 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 550 * | | |(2) When the register is read by CPU, 551 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 552 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 553 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 554 * @var USBD_T::CFG0 555 * Offset: 0x508 Endpoint 0 Configuration Register 556 * --------------------------------------------------------------------------------------------------- 557 * |Bits |Field |Descriptions 558 * | :----: | :----: | :---- | 559 * |[3:0] |EPNUM |Endpoint Number 560 * | | |These bits are used to define the endpoint number of the current endpoint. 561 * |[4] |ISOCH |Isochronous Endpoint 562 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 563 * | | |0 = No Isochronous endpoint. 564 * | | |1 = Isochronous endpoint. 565 * |[6:5] |STATE |Endpoint State 566 * | | |00 = Endpoint is Disabled. 567 * | | |01 = Out endpoint. 568 * | | |10 = IN endpoint. 569 * | | |11 = Undefined. 570 * |[7] |DSQSYNC |Data Sequence Synchronization 571 * | | |0 = DATA0 PID. 572 * | | |1 = DATA1 PID. 573 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 574 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 575 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 576 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 577 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 578 * | | |USB data toggle will be guaranteed by changing endpoint. 579 * |[9] |CSTALL |Clear STALL Response 580 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 581 * | | |1 = Clear the device to response STALL handshake in setup stage. 582 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 583 * | | |0 = Inactive in double buffer mode. 584 * | | |1 = Active in double buffer mode. 585 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 586 * |[11] |DBEN |Double Buffer Enable Bit 587 * | | |0 = Single buffer mode. 588 * | | |1 = Double buffer mode. 589 * @var USBD_T::CFGP0 590 * Offset: 0x50C Endpoint 0 Set Stall and Clear In/Out Ready Control Register 591 * --------------------------------------------------------------------------------------------------- 592 * |Bits |Field |Descriptions 593 * | :----: | :----: | :---- | 594 * |[0] |CLRRDY |Clear Ready Bit 595 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 596 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 597 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 598 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 599 * | | |This bit is written 1 only and is always 0 when it is read back. 600 * |[1] |SSTALL |Set STALL Bit 601 * | | |0 = Disable the device to response STALL. 602 * | | |1 = Set the device to respond STALL automatically. 603 * @var USBD_T::BUFSEG1 604 * Offset: 0x510 Endpoint 1 Buffer Segmentation Register 605 * --------------------------------------------------------------------------------------------------- 606 * |Bits |Field |Descriptions 607 * | :----: | :----: | :---- | 608 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 609 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 610 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 611 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 612 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 613 * @var USBD_T::MXPLD1 614 * Offset: 0x514 Endpoint 1 Maximal Payload Register 615 * --------------------------------------------------------------------------------------------------- 616 * |Bits |Field |Descriptions 617 * | :----: | :----: | :---- | 618 * |[10:0] |MXPLD |Maximal Payload 619 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 620 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 621 * | | |(1) When the register is written by CPU, 622 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 623 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 624 * | | |(2) When the register is read by CPU, 625 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 626 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 627 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 628 * @var USBD_T::CFG1 629 * Offset: 0x518 Endpoint 1 Configuration Register 630 * --------------------------------------------------------------------------------------------------- 631 * |Bits |Field |Descriptions 632 * | :----: | :----: | :---- | 633 * |[3:0] |EPNUM |Endpoint Number 634 * | | |These bits are used to define the endpoint number of the current endpoint. 635 * |[4] |ISOCH |Isochronous Endpoint 636 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 637 * | | |0 = No Isochronous endpoint. 638 * | | |1 = Isochronous endpoint. 639 * |[6:5] |STATE |Endpoint State 640 * | | |00 = Endpoint is Disabled. 641 * | | |01 = Out endpoint. 642 * | | |10 = IN endpoint. 643 * | | |11 = Undefined. 644 * |[7] |DSQSYNC |Data Sequence Synchronization 645 * | | |0 = DATA0 PID. 646 * | | |1 = DATA1 PID. 647 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 648 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 649 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 650 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 651 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 652 * | | |USB data toggle will be guaranteed by changing endpoint. 653 * |[9] |CSTALL |Clear STALL Response 654 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 655 * | | |1 = Clear the device to response STALL handshake in setup stage. 656 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 657 * | | |0 = Inactive in double buffer mode. 658 * | | |1 = Active in double buffer mode. 659 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 660 * |[11] |DBEN |Double Buffer Enable Bit 661 * | | |0 = Single buffer mode. 662 * | | |1 = Double buffer mode. 663 * @var USBD_T::CFGP1 664 * Offset: 0x51C Endpoint 1 Set Stall and Clear In/Out Ready Control Register 665 * --------------------------------------------------------------------------------------------------- 666 * |Bits |Field |Descriptions 667 * | :----: | :----: | :---- | 668 * |[0] |CLRRDY |Clear Ready Bit 669 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 670 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 671 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 672 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 673 * | | |This bit is written 1 only and is always 0 when it is read back. 674 * |[1] |SSTALL |Set STALL Bit 675 * | | |0 = Disable the device to response STALL. 676 * | | |1 = Set the device to respond STALL automatically. 677 * @var USBD_T::BUFSEG2 678 * Offset: 0x520 Endpoint 2 Buffer Segmentation Register 679 * --------------------------------------------------------------------------------------------------- 680 * |Bits |Field |Descriptions 681 * | :----: | :----: | :---- | 682 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 683 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 684 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 685 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 686 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 687 * @var USBD_T::MXPLD2 688 * Offset: 0x524 Endpoint 2 Maximal Payload Register 689 * --------------------------------------------------------------------------------------------------- 690 * |Bits |Field |Descriptions 691 * | :----: | :----: | :---- | 692 * |[10:0] |MXPLD |Maximal Payload 693 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 694 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 695 * | | |(1) When the register is written by CPU, 696 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 697 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 698 * | | |(2) When the register is read by CPU, 699 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 700 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 701 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 702 * @var USBD_T::CFG2 703 * Offset: 0x528 Endpoint 2 Configuration Register 704 * --------------------------------------------------------------------------------------------------- 705 * |Bits |Field |Descriptions 706 * | :----: | :----: | :---- | 707 * |[3:0] |EPNUM |Endpoint Number 708 * | | |These bits are used to define the endpoint number of the current endpoint. 709 * |[4] |ISOCH |Isochronous Endpoint 710 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 711 * | | |0 = No Isochronous endpoint. 712 * | | |1 = Isochronous endpoint. 713 * |[6:5] |STATE |Endpoint State 714 * | | |00 = Endpoint is Disabled. 715 * | | |01 = Out endpoint. 716 * | | |10 = IN endpoint. 717 * | | |11 = Undefined. 718 * |[7] |DSQSYNC |Data Sequence Synchronization 719 * | | |0 = DATA0 PID. 720 * | | |1 = DATA1 PID. 721 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 722 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 723 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 724 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 725 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 726 * | | |USB data toggle will be guaranteed by changing endpoint. 727 * |[9] |CSTALL |Clear STALL Response 728 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 729 * | | |1 = Clear the device to response STALL handshake in setup stage. 730 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 731 * | | |0 = Inactive in double buffer mode. 732 * | | |1 = Active in double buffer mode. 733 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 734 * |[11] |DBEN |Double Buffer Enable Bit 735 * | | |0 = Single buffer mode. 736 * | | |1 = Double buffer mode. 737 * @var USBD_T::CFGP2 738 * Offset: 0x52C Endpoint 2 Set Stall and Clear In/Out Ready Control Register 739 * --------------------------------------------------------------------------------------------------- 740 * |Bits |Field |Descriptions 741 * | :----: | :----: | :---- | 742 * |[0] |CLRRDY |Clear Ready Bit 743 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 744 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 745 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 746 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 747 * | | |This bit is written 1 only and is always 0 when it is read back. 748 * |[1] |SSTALL |Set STALL Bit 749 * | | |0 = Disable the device to response STALL. 750 * | | |1 = Set the device to respond STALL automatically. 751 * @var USBD_T::BUFSEG3 752 * Offset: 0x530 Endpoint 3 Buffer Segmentation Register 753 * --------------------------------------------------------------------------------------------------- 754 * |Bits |Field |Descriptions 755 * | :----: | :----: | :---- | 756 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 757 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 758 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 759 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 760 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 761 * @var USBD_T::MXPLD3 762 * Offset: 0x534 Endpoint 3 Maximal Payload Register 763 * --------------------------------------------------------------------------------------------------- 764 * |Bits |Field |Descriptions 765 * | :----: | :----: | :---- | 766 * |[10:0] |MXPLD |Maximal Payload 767 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 768 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 769 * | | |(1) When the register is written by CPU, 770 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 771 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 772 * | | |(2) When the register is read by CPU, 773 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 774 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 775 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 776 * @var USBD_T::CFG3 777 * Offset: 0x538 Endpoint 3 Configuration Register 778 * --------------------------------------------------------------------------------------------------- 779 * |Bits |Field |Descriptions 780 * | :----: | :----: | :---- | 781 * |[3:0] |EPNUM |Endpoint Number 782 * | | |These bits are used to define the endpoint number of the current endpoint. 783 * |[4] |ISOCH |Isochronous Endpoint 784 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 785 * | | |0 = No Isochronous endpoint. 786 * | | |1 = Isochronous endpoint. 787 * |[6:5] |STATE |Endpoint State 788 * | | |00 = Endpoint is Disabled. 789 * | | |01 = Out endpoint. 790 * | | |10 = IN endpoint. 791 * | | |11 = Undefined. 792 * |[7] |DSQSYNC |Data Sequence Synchronization 793 * | | |0 = DATA0 PID. 794 * | | |1 = DATA1 PID. 795 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 796 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 797 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 798 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 799 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 800 * | | |USB data toggle will be guaranteed by changing endpoint. 801 * |[9] |CSTALL |Clear STALL Response 802 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 803 * | | |1 = Clear the device to response STALL handshake in setup stage. 804 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 805 * | | |0 = Inactive in double buffer mode. 806 * | | |1 = Active in double buffer mode. 807 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 808 * |[11] |DBEN |Double Buffer Enable Bit 809 * | | |0 = Single buffer mode. 810 * | | |1 = Double buffer mode. 811 * @var USBD_T::CFGP3 812 * Offset: 0x53C Endpoint 3 Set Stall and Clear In/Out Ready Control Register 813 * --------------------------------------------------------------------------------------------------- 814 * |Bits |Field |Descriptions 815 * | :----: | :----: | :---- | 816 * |[0] |CLRRDY |Clear Ready Bit 817 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 818 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 819 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 820 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 821 * | | |This bit is written 1 only and is always 0 when it is read back. 822 * |[1] |SSTALL |Set STALL Bit 823 * | | |0 = Disable the device to response STALL. 824 * | | |1 = Set the device to respond STALL automatically. 825 * @var USBD_T::BUFSEG4 826 * Offset: 0x540 Endpoint 4 Buffer Segmentation Register 827 * --------------------------------------------------------------------------------------------------- 828 * |Bits |Field |Descriptions 829 * | :----: | :----: | :---- | 830 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 831 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 832 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 833 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 834 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 835 * @var USBD_T::MXPLD4 836 * Offset: 0x544 Endpoint 4 Maximal Payload Register 837 * --------------------------------------------------------------------------------------------------- 838 * |Bits |Field |Descriptions 839 * | :----: | :----: | :---- | 840 * |[10:0] |MXPLD |Maximal Payload 841 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 842 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 843 * | | |(1) When the register is written by CPU, 844 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 845 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 846 * | | |(2) When the register is read by CPU, 847 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 848 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 849 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 850 * @var USBD_T::CFG4 851 * Offset: 0x548 Endpoint 4 Configuration Register 852 * --------------------------------------------------------------------------------------------------- 853 * |Bits |Field |Descriptions 854 * | :----: | :----: | :---- | 855 * |[3:0] |EPNUM |Endpoint Number 856 * | | |These bits are used to define the endpoint number of the current endpoint. 857 * |[4] |ISOCH |Isochronous Endpoint 858 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 859 * | | |0 = No Isochronous endpoint. 860 * | | |1 = Isochronous endpoint. 861 * |[6:5] |STATE |Endpoint State 862 * | | |00 = Endpoint is Disabled. 863 * | | |01 = Out endpoint. 864 * | | |10 = IN endpoint. 865 * | | |11 = Undefined. 866 * |[7] |DSQSYNC |Data Sequence Synchronization 867 * | | |0 = DATA0 PID. 868 * | | |1 = DATA1 PID. 869 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 870 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 871 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 872 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 873 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 874 * | | |USB data toggle will be guaranteed by changing endpoint. 875 * |[9] |CSTALL |Clear STALL Response 876 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 877 * | | |1 = Clear the device to response STALL handshake in setup stage. 878 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 879 * | | |0 = Inactive in double buffer mode. 880 * | | |1 = Active in double buffer mode. 881 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 882 * |[11] |DBEN |Double Buffer Enable Bit 883 * | | |0 = Single buffer mode. 884 * | | |1 = Double buffer mode. 885 * @var USBD_T::CFGP4 886 * Offset: 0x54C Endpoint 4 Set Stall and Clear In/Out Ready Control Register 887 * --------------------------------------------------------------------------------------------------- 888 * |Bits |Field |Descriptions 889 * | :----: | :----: | :---- | 890 * |[0] |CLRRDY |Clear Ready Bit 891 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 892 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 893 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 894 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 895 * | | |This bit is written 1 only and is always 0 when it is read back. 896 * |[1] |SSTALL |Set STALL Bit 897 * | | |0 = Disable the device to response STALL. 898 * | | |1 = Set the device to respond STALL automatically. 899 * @var USBD_T::BUFSEG5 900 * Offset: 0x550 Endpoint 5 Buffer Segmentation Register 901 * --------------------------------------------------------------------------------------------------- 902 * |Bits |Field |Descriptions 903 * | :----: | :----: | :---- | 904 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 905 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 906 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 907 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 908 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 909 * @var USBD_T::MXPLD5 910 * Offset: 0x554 Endpoint 5 Maximal Payload Register 911 * --------------------------------------------------------------------------------------------------- 912 * |Bits |Field |Descriptions 913 * | :----: | :----: | :---- | 914 * |[10:0] |MXPLD |Maximal Payload 915 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 916 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 917 * | | |(1) When the register is written by CPU, 918 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 919 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 920 * | | |(2) When the register is read by CPU, 921 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 922 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 923 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 924 * @var USBD_T::CFG5 925 * Offset: 0x558 Endpoint 5 Configuration Register 926 * --------------------------------------------------------------------------------------------------- 927 * |Bits |Field |Descriptions 928 * | :----: | :----: | :---- | 929 * |[3:0] |EPNUM |Endpoint Number 930 * | | |These bits are used to define the endpoint number of the current endpoint. 931 * |[4] |ISOCH |Isochronous Endpoint 932 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 933 * | | |0 = No Isochronous endpoint. 934 * | | |1 = Isochronous endpoint. 935 * |[6:5] |STATE |Endpoint State 936 * | | |00 = Endpoint is Disabled. 937 * | | |01 = Out endpoint. 938 * | | |10 = IN endpoint. 939 * | | |11 = Undefined. 940 * |[7] |DSQSYNC |Data Sequence Synchronization 941 * | | |0 = DATA0 PID. 942 * | | |1 = DATA1 PID. 943 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 944 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 945 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 946 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 947 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 948 * | | |USB data toggle will be guaranteed by changing endpoint. 949 * |[9] |CSTALL |Clear STALL Response 950 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 951 * | | |1 = Clear the device to response STALL handshake in setup stage. 952 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 953 * | | |0 = Inactive in double buffer mode. 954 * | | |1 = Active in double buffer mode. 955 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 956 * |[11] |DBEN |Double Buffer Enable Bit 957 * | | |0 = Single buffer mode. 958 * | | |1 = Double buffer mode. 959 * @var USBD_T::CFGP5 960 * Offset: 0x55C Endpoint 5 Set Stall and Clear In/Out Ready Control Register 961 * --------------------------------------------------------------------------------------------------- 962 * |Bits |Field |Descriptions 963 * | :----: | :----: | :---- | 964 * |[0] |CLRRDY |Clear Ready Bit 965 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 966 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 967 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 968 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 969 * | | |This bit is written 1 only and is always 0 when it is read back. 970 * |[1] |SSTALL |Set STALL Bit 971 * | | |0 = Disable the device to response STALL. 972 * | | |1 = Set the device to respond STALL automatically. 973 * @var USBD_T::BUFSEG6 974 * Offset: 0x560 Endpoint 6 Buffer Segmentation Register 975 * --------------------------------------------------------------------------------------------------- 976 * |Bits |Field |Descriptions 977 * | :----: | :----: | :---- | 978 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 979 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 980 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 981 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 982 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 983 * @var USBD_T::MXPLD6 984 * Offset: 0x564 Endpoint 6 Maximal Payload Register 985 * --------------------------------------------------------------------------------------------------- 986 * |Bits |Field |Descriptions 987 * | :----: | :----: | :---- | 988 * |[10:0] |MXPLD |Maximal Payload 989 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 990 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 991 * | | |(1) When the register is written by CPU, 992 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 993 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 994 * | | |(2) When the register is read by CPU, 995 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 996 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 997 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 998 * @var USBD_T::CFG6 999 * Offset: 0x568 Endpoint 6 Configuration Register 1000 * --------------------------------------------------------------------------------------------------- 1001 * |Bits |Field |Descriptions 1002 * | :----: | :----: | :---- | 1003 * |[3:0] |EPNUM |Endpoint Number 1004 * | | |These bits are used to define the endpoint number of the current endpoint. 1005 * |[4] |ISOCH |Isochronous Endpoint 1006 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1007 * | | |0 = No Isochronous endpoint. 1008 * | | |1 = Isochronous endpoint. 1009 * |[6:5] |STATE |Endpoint State 1010 * | | |00 = Endpoint is Disabled. 1011 * | | |01 = Out endpoint. 1012 * | | |10 = IN endpoint. 1013 * | | |11 = Undefined. 1014 * |[7] |DSQSYNC |Data Sequence Synchronization 1015 * | | |0 = DATA0 PID. 1016 * | | |1 = DATA1 PID. 1017 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1018 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1019 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1020 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1021 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1022 * | | |USB data toggle will be guaranteed by changing endpoint. 1023 * |[9] |CSTALL |Clear STALL Response 1024 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1025 * | | |1 = Clear the device to response STALL handshake in setup stage. 1026 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1027 * | | |0 = Inactive in double buffer mode. 1028 * | | |1 = Active in double buffer mode. 1029 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1030 * |[11] |DBEN |Double Buffer Enable Bit 1031 * | | |0 = Single buffer mode. 1032 * | | |1 = Double buffer mode. 1033 * @var USBD_T::CFGP6 1034 * Offset: 0x56C Endpoint 6 Set Stall and Clear In/Out Ready Control Register 1035 * --------------------------------------------------------------------------------------------------- 1036 * |Bits |Field |Descriptions 1037 * | :----: | :----: | :---- | 1038 * |[0] |CLRRDY |Clear Ready Bit 1039 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1040 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1041 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1042 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1043 * | | |This bit is written 1 only and is always 0 when it is read back. 1044 * |[1] |SSTALL |Set STALL Bit 1045 * | | |0 = Disable the device to response STALL. 1046 * | | |1 = Set the device to respond STALL automatically. 1047 * @var USBD_T::BUFSEG7 1048 * Offset: 0x570 Endpoint 7 Buffer Segmentation Register 1049 * --------------------------------------------------------------------------------------------------- 1050 * |Bits |Field |Descriptions 1051 * | :----: | :----: | :---- | 1052 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1053 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1054 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1055 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1056 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1057 * @var USBD_T::MXPLD7 1058 * Offset: 0x574 Endpoint 7 Maximal Payload Register 1059 * --------------------------------------------------------------------------------------------------- 1060 * |Bits |Field |Descriptions 1061 * | :----: | :----: | :---- | 1062 * |[10:0] |MXPLD |Maximal Payload 1063 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1064 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1065 * | | |(1) When the register is written by CPU, 1066 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1067 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1068 * | | |(2) When the register is read by CPU, 1069 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1070 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1071 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1072 * @var USBD_T::CFG7 1073 * Offset: 0x578 Endpoint 7 Configuration Register 1074 * --------------------------------------------------------------------------------------------------- 1075 * |Bits |Field |Descriptions 1076 * | :----: | :----: | :---- | 1077 * |[3:0] |EPNUM |Endpoint Number 1078 * | | |These bits are used to define the endpoint number of the current endpoint. 1079 * |[4] |ISOCH |Isochronous Endpoint 1080 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1081 * | | |0 = No Isochronous endpoint. 1082 * | | |1 = Isochronous endpoint. 1083 * |[6:5] |STATE |Endpoint State 1084 * | | |00 = Endpoint is Disabled. 1085 * | | |01 = Out endpoint. 1086 * | | |10 = IN endpoint. 1087 * | | |11 = Undefined. 1088 * |[7] |DSQSYNC |Data Sequence Synchronization 1089 * | | |0 = DATA0 PID. 1090 * | | |1 = DATA1 PID. 1091 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1092 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1093 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1094 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1095 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1096 * | | |USB data toggle will be guaranteed by changing endpoint. 1097 * |[9] |CSTALL |Clear STALL Response 1098 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1099 * | | |1 = Clear the device to response STALL handshake in setup stage. 1100 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1101 * | | |0 = Inactive in double buffer mode. 1102 * | | |1 = Active in double buffer mode. 1103 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1104 * |[11] |DBEN |Double Buffer Enable Bit 1105 * | | |0 = Single buffer mode. 1106 * | | |1 = Double buffer mode. 1107 * @var USBD_T::CFGP7 1108 * Offset: 0x57C Endpoint 7 Set Stall and Clear In/Out Ready Control Register 1109 * --------------------------------------------------------------------------------------------------- 1110 * |Bits |Field |Descriptions 1111 * | :----: | :----: | :---- | 1112 * |[0] |CLRRDY |Clear Ready Bit 1113 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1114 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1115 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1116 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1117 * | | |This bit is written 1 only and is always 0 when it is read back. 1118 * |[1] |SSTALL |Set STALL Bit 1119 * | | |0 = Disable the device to response STALL. 1120 * | | |1 = Set the device to respond STALL automatically. 1121 * @var USBD_T::BUFSEG8 1122 * Offset: 0x580 Endpoint 8 Buffer Segmentation Register 1123 * --------------------------------------------------------------------------------------------------- 1124 * |Bits |Field |Descriptions 1125 * | :----: | :----: | :---- | 1126 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1127 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1128 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1129 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1130 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1131 * @var USBD_T::MXPLD8 1132 * Offset: 0x584 Endpoint 8 Maximal Payload Register 1133 * --------------------------------------------------------------------------------------------------- 1134 * |Bits |Field |Descriptions 1135 * | :----: | :----: | :---- | 1136 * |[10:0] |MXPLD |Maximal Payload 1137 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1138 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1139 * | | |(1) When the register is written by CPU, 1140 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1141 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1142 * | | |(2) When the register is read by CPU, 1143 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1144 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1145 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1146 * @var USBD_T::CFG8 1147 * Offset: 0x588 Endpoint 8 Configuration Register 1148 * --------------------------------------------------------------------------------------------------- 1149 * |Bits |Field |Descriptions 1150 * | :----: | :----: | :---- | 1151 * |[3:0] |EPNUM |Endpoint Number 1152 * | | |These bits are used to define the endpoint number of the current endpoint. 1153 * |[4] |ISOCH |Isochronous Endpoint 1154 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1155 * | | |0 = No Isochronous endpoint. 1156 * | | |1 = Isochronous endpoint. 1157 * |[6:5] |STATE |Endpoint State 1158 * | | |00 = Endpoint is Disabled. 1159 * | | |01 = Out endpoint. 1160 * | | |10 = IN endpoint. 1161 * | | |11 = Undefined. 1162 * |[7] |DSQSYNC |Data Sequence Synchronization 1163 * | | |0 = DATA0 PID. 1164 * | | |1 = DATA1 PID. 1165 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1166 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1167 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1168 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1169 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1170 * | | |USB data toggle will be guaranteed by changing endpoint. 1171 * |[9] |CSTALL |Clear STALL Response 1172 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1173 * | | |1 = Clear the device to response STALL handshake in setup stage. 1174 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1175 * | | |0 = Inactive in double buffer mode. 1176 * | | |1 = Active in double buffer mode. 1177 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1178 * |[11] |DBEN |Double Buffer Enable Bit 1179 * | | |0 = Single buffer mode. 1180 * | | |1 = Double buffer mode. 1181 * @var USBD_T::CFGP8 1182 * Offset: 0x58C Endpoint 8 Set Stall and Clear In/Out Ready Control Register 1183 * --------------------------------------------------------------------------------------------------- 1184 * |Bits |Field |Descriptions 1185 * | :----: | :----: | :---- | 1186 * |[0] |CLRRDY |Clear Ready Bit 1187 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1188 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1189 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1190 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1191 * | | |This bit is written 1 only and is always 0 when it is read back. 1192 * |[1] |SSTALL |Set STALL Bit 1193 * | | |0 = Disable the device to response STALL. 1194 * | | |1 = Set the device to respond STALL automatically. 1195 * @var USBD_T::BUFSEG9 1196 * Offset: 0x590 Endpoint 9 Buffer Segmentation Register 1197 * --------------------------------------------------------------------------------------------------- 1198 * |Bits |Field |Descriptions 1199 * | :----: | :----: | :---- | 1200 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1201 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1202 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1203 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1204 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1205 * @var USBD_T::MXPLD9 1206 * Offset: 0x594 Endpoint 9 Maximal Payload Register 1207 * --------------------------------------------------------------------------------------------------- 1208 * |Bits |Field |Descriptions 1209 * | :----: | :----: | :---- | 1210 * |[10:0] |MXPLD |Maximal Payload 1211 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1212 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1213 * | | |(1) When the register is written by CPU, 1214 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1215 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1216 * | | |(2) When the register is read by CPU, 1217 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1218 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1219 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1220 * @var USBD_T::CFG9 1221 * Offset: 0x598 Endpoint 9 Configuration Register 1222 * --------------------------------------------------------------------------------------------------- 1223 * |Bits |Field |Descriptions 1224 * | :----: | :----: | :---- | 1225 * |[3:0] |EPNUM |Endpoint Number 1226 * | | |These bits are used to define the endpoint number of the current endpoint. 1227 * |[4] |ISOCH |Isochronous Endpoint 1228 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1229 * | | |0 = No Isochronous endpoint. 1230 * | | |1 = Isochronous endpoint. 1231 * |[6:5] |STATE |Endpoint State 1232 * | | |00 = Endpoint is Disabled. 1233 * | | |01 = Out endpoint. 1234 * | | |10 = IN endpoint. 1235 * | | |11 = Undefined. 1236 * |[7] |DSQSYNC |Data Sequence Synchronization 1237 * | | |0 = DATA0 PID. 1238 * | | |1 = DATA1 PID. 1239 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1240 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1241 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1242 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1243 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1244 * | | |USB data toggle will be guaranteed by changing endpoint. 1245 * |[9] |CSTALL |Clear STALL Response 1246 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1247 * | | |1 = Clear the device to response STALL handshake in setup stage. 1248 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1249 * | | |0 = Inactive in double buffer mode. 1250 * | | |1 = Active in double buffer mode. 1251 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1252 * |[11] |DBEN |Double Buffer Enable Bit 1253 * | | |0 = Single buffer mode. 1254 * | | |1 = Double buffer mode. 1255 * @var USBD_T::CFGP9 1256 * Offset: 0x59C Endpoint 9 Set Stall and Clear In/Out Ready Control Register 1257 * --------------------------------------------------------------------------------------------------- 1258 * |Bits |Field |Descriptions 1259 * | :----: | :----: | :---- | 1260 * |[0] |CLRRDY |Clear Ready Bit 1261 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1262 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1263 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1264 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1265 * | | |This bit is written 1 only and is always 0 when it is read back. 1266 * |[1] |SSTALL |Set STALL Bit 1267 * | | |0 = Disable the device to response STALL. 1268 * | | |1 = Set the device to respond STALL automatically. 1269 * @var USBD_T::BUFSEG10 1270 * Offset: 0x5A0 Endpoint 10 Buffer Segmentation Register 1271 * --------------------------------------------------------------------------------------------------- 1272 * |Bits |Field |Descriptions 1273 * | :----: | :----: | :---- | 1274 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1275 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1276 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1277 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1278 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1279 * @var USBD_T::MXPLD10 1280 * Offset: 0x5A4 Endpoint 10 Maximal Payload Register 1281 * --------------------------------------------------------------------------------------------------- 1282 * |Bits |Field |Descriptions 1283 * | :----: | :----: | :---- | 1284 * |[10:0] |MXPLD |Maximal Payload 1285 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1286 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1287 * | | |(1) When the register is written by CPU, 1288 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1289 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1290 * | | |(2) When the register is read by CPU, 1291 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1292 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1293 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1294 * @var USBD_T::CFG10 1295 * Offset: 0x5A8 Endpoint 10 Configuration Register 1296 * --------------------------------------------------------------------------------------------------- 1297 * |Bits |Field |Descriptions 1298 * | :----: | :----: | :---- | 1299 * |[3:0] |EPNUM |Endpoint Number 1300 * | | |These bits are used to define the endpoint number of the current endpoint. 1301 * |[4] |ISOCH |Isochronous Endpoint 1302 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1303 * | | |0 = No Isochronous endpoint. 1304 * | | |1 = Isochronous endpoint. 1305 * |[6:5] |STATE |Endpoint State 1306 * | | |00 = Endpoint is Disabled. 1307 * | | |01 = Out endpoint. 1308 * | | |10 = IN endpoint. 1309 * | | |11 = Undefined. 1310 * |[7] |DSQSYNC |Data Sequence Synchronization 1311 * | | |0 = DATA0 PID. 1312 * | | |1 = DATA1 PID. 1313 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1314 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1315 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1316 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1317 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1318 * | | |USB data toggle will be guaranteed by changing endpoint. 1319 * |[9] |CSTALL |Clear STALL Response 1320 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1321 * | | |1 = Clear the device to response STALL handshake in setup stage. 1322 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1323 * | | |0 = Inactive in double buffer mode. 1324 * | | |1 = Active in double buffer mode. 1325 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1326 * |[11] |DBEN |Double Buffer Enable Bit 1327 * | | |0 = Single buffer mode. 1328 * | | |1 = Double buffer mode. 1329 * @var USBD_T::CFGP10 1330 * Offset: 0x5AC Endpoint 10 Set Stall and Clear In/Out Ready Control Register 1331 * --------------------------------------------------------------------------------------------------- 1332 * |Bits |Field |Descriptions 1333 * | :----: | :----: | :---- | 1334 * |[0] |CLRRDY |Clear Ready Bit 1335 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1336 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1337 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1338 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1339 * | | |This bit is written 1 only and is always 0 when it is read back. 1340 * |[1] |SSTALL |Set STALL Bit 1341 * | | |0 = Disable the device to response STALL. 1342 * | | |1 = Set the device to respond STALL automatically. 1343 * @var USBD_T::BUFSEG11 1344 * Offset: 0x5B0 Endpoint 11 Buffer Segmentation Register 1345 * --------------------------------------------------------------------------------------------------- 1346 * |Bits |Field |Descriptions 1347 * | :----: | :----: | :---- | 1348 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1349 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1350 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1351 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1352 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1353 * @var USBD_T::MXPLD11 1354 * Offset: 0x5B4 Endpoint 11 Maximal Payload Register 1355 * --------------------------------------------------------------------------------------------------- 1356 * |Bits |Field |Descriptions 1357 * | :----: | :----: | :---- | 1358 * |[10:0] |MXPLD |Maximal Payload 1359 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1360 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1361 * | | |(1) When the register is written by CPU, 1362 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1363 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1364 * | | |(2) When the register is read by CPU, 1365 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1366 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1367 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1368 * @var USBD_T::CFG11 1369 * Offset: 0x5B8 Endpoint 11 Configuration Register 1370 * --------------------------------------------------------------------------------------------------- 1371 * |Bits |Field |Descriptions 1372 * | :----: | :----: | :---- | 1373 * |[3:0] |EPNUM |Endpoint Number 1374 * | | |These bits are used to define the endpoint number of the current endpoint. 1375 * |[4] |ISOCH |Isochronous Endpoint 1376 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1377 * | | |0 = No Isochronous endpoint. 1378 * | | |1 = Isochronous endpoint. 1379 * |[6:5] |STATE |Endpoint State 1380 * | | |00 = Endpoint is Disabled. 1381 * | | |01 = Out endpoint. 1382 * | | |10 = IN endpoint. 1383 * | | |11 = Undefined. 1384 * |[7] |DSQSYNC |Data Sequence Synchronization 1385 * | | |0 = DATA0 PID. 1386 * | | |1 = DATA1 PID. 1387 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1388 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1389 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1390 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1391 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1392 * | | |USB data toggle will be guaranteed by changing endpoint. 1393 * |[9] |CSTALL |Clear STALL Response 1394 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1395 * | | |1 = Clear the device to response STALL handshake in setup stage. 1396 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1397 * | | |0 = Inactive in double buffer mode. 1398 * | | |1 = Active in double buffer mode. 1399 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1400 * |[11] |DBEN |Double Buffer Enable Bit 1401 * | | |0 = Single buffer mode. 1402 * | | |1 = Double buffer mode. 1403 * @var USBD_T::CFGP11 1404 * Offset: 0x5BC Endpoint 11 Set Stall and Clear In/Out Ready Control Register 1405 * --------------------------------------------------------------------------------------------------- 1406 * |Bits |Field |Descriptions 1407 * | :----: | :----: | :---- | 1408 * |[0] |CLRRDY |Clear Ready Bit 1409 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1410 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1411 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1412 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1413 * | | |This bit is written 1 only and is always 0 when it is read back. 1414 * |[1] |SSTALL |Set STALL Bit 1415 * | | |0 = Disable the device to response STALL. 1416 * | | |1 = Set the device to respond STALL automatically. 1417 * @var USBD_T::BUFSEG12 1418 * Offset: 0x5C0 Endpoint 12 Buffer Segmentation Register 1419 * --------------------------------------------------------------------------------------------------- 1420 * |Bits |Field |Descriptions 1421 * | :----: | :----: | :---- | 1422 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1423 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1424 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1425 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1426 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1427 * @var USBD_T::MXPLD12 1428 * Offset: 0x5C4 Endpoint 12 Maximal Payload Register 1429 * --------------------------------------------------------------------------------------------------- 1430 * |Bits |Field |Descriptions 1431 * | :----: | :----: | :---- | 1432 * |[10:0] |MXPLD |Maximal Payload 1433 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1434 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1435 * | | |(1) When the register is written by CPU, 1436 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1437 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1438 * | | |(2) When the register is read by CPU, 1439 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1440 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1441 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1442 * @var USBD_T::CFG12 1443 * Offset: 0x5C8 Endpoint 12 Configuration Register 1444 * --------------------------------------------------------------------------------------------------- 1445 * |Bits |Field |Descriptions 1446 * | :----: | :----: | :---- | 1447 * |[3:0] |EPNUM |Endpoint Number 1448 * | | |These bits are used to define the endpoint number of the current endpoint. 1449 * |[4] |ISOCH |Isochronous Endpoint 1450 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1451 * | | |0 = No Isochronous endpoint. 1452 * | | |1 = Isochronous endpoint. 1453 * |[6:5] |STATE |Endpoint State 1454 * | | |00 = Endpoint is Disabled. 1455 * | | |01 = Out endpoint. 1456 * | | |10 = IN endpoint. 1457 * | | |11 = Undefined. 1458 * |[7] |DSQSYNC |Data Sequence Synchronization 1459 * | | |0 = DATA0 PID. 1460 * | | |1 = DATA1 PID. 1461 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1462 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1463 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1464 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1465 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1466 * | | |USB data toggle will be guaranteed by changing endpoint. 1467 * |[9] |CSTALL |Clear STALL Response 1468 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1469 * | | |1 = Clear the device to response STALL handshake in setup stage. 1470 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1471 * | | |0 = Inactive in double buffer mode. 1472 * | | |1 = Active in double buffer mode. 1473 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1474 * |[11] |DBEN |Double Buffer Enable Bit 1475 * | | |0 = Single buffer mode. 1476 * | | |1 = Double buffer mode. 1477 * @var USBD_T::CFGP12 1478 * Offset: 0x5CC Endpoint 12 Set Stall and Clear In/Out Ready Control Register 1479 * --------------------------------------------------------------------------------------------------- 1480 * |Bits |Field |Descriptions 1481 * | :----: | :----: | :---- | 1482 * |[0] |CLRRDY |Clear Ready Bit 1483 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1484 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1485 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1486 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1487 * | | |This bit is written 1 only and is always 0 when it is read back. 1488 * |[1] |SSTALL |Set STALL Bit 1489 * | | |0 = Disable the device to response STALL. 1490 * | | |1 = Set the device to respond STALL automatically. 1491 * @var USBD_T::BUFSEG13 1492 * Offset: 0x5D0 Endpoint 13 Buffer Segmentation Register 1493 * --------------------------------------------------------------------------------------------------- 1494 * |Bits |Field |Descriptions 1495 * | :----: | :----: | :---- | 1496 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1497 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1498 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1499 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1500 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1501 * @var USBD_T::MXPLD13 1502 * Offset: 0x5D4 Endpoint 13 Maximal Payload Register 1503 * --------------------------------------------------------------------------------------------------- 1504 * |Bits |Field |Descriptions 1505 * | :----: | :----: | :---- | 1506 * |[10:0] |MXPLD |Maximal Payload 1507 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1508 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1509 * | | |(1) When the register is written by CPU, 1510 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1511 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1512 * | | |(2) When the register is read by CPU, 1513 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1514 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1515 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1516 * @var USBD_T::CFG13 1517 * Offset: 0x5D8 Endpoint 13 Configuration Register 1518 * --------------------------------------------------------------------------------------------------- 1519 * |Bits |Field |Descriptions 1520 * | :----: | :----: | :---- | 1521 * |[3:0] |EPNUM |Endpoint Number 1522 * | | |These bits are used to define the endpoint number of the current endpoint. 1523 * |[4] |ISOCH |Isochronous Endpoint 1524 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1525 * | | |0 = No Isochronous endpoint. 1526 * | | |1 = Isochronous endpoint. 1527 * |[6:5] |STATE |Endpoint State 1528 * | | |00 = Endpoint is Disabled. 1529 * | | |01 = Out endpoint. 1530 * | | |10 = IN endpoint. 1531 * | | |11 = Undefined. 1532 * |[7] |DSQSYNC |Data Sequence Synchronization 1533 * | | |0 = DATA0 PID. 1534 * | | |1 = DATA1 PID. 1535 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1536 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1537 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1538 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1539 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1540 * | | |USB data toggle will be guaranteed by changing endpoint. 1541 * |[9] |CSTALL |Clear STALL Response 1542 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1543 * | | |1 = Clear the device to response STALL handshake in setup stage. 1544 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1545 * | | |0 = Inactive in double buffer mode. 1546 * | | |1 = Active in double buffer mode. 1547 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1548 * |[11] |DBEN |Double Buffer Enable Bit 1549 * | | |0 = Single buffer mode. 1550 * | | |1 = Double buffer mode. 1551 * @var USBD_T::CFGP13 1552 * Offset: 0x5DC Endpoint 13 Set Stall and Clear In/Out Ready Control Register 1553 * --------------------------------------------------------------------------------------------------- 1554 * |Bits |Field |Descriptions 1555 * | :----: | :----: | :---- | 1556 * |[0] |CLRRDY |Clear Ready Bit 1557 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1558 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1559 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1560 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1561 * | | |This bit is written 1 only and is always 0 when it is read back. 1562 * |[1] |SSTALL |Set STALL Bit 1563 * | | |0 = Disable the device to response STALL. 1564 * | | |1 = Set the device to respond STALL automatically. 1565 * @var USBD_T::BUFSEG14 1566 * Offset: 0x5E0 Endpoint 14 Buffer Segmentation Register 1567 * --------------------------------------------------------------------------------------------------- 1568 * |Bits |Field |Descriptions 1569 * | :----: | :----: | :---- | 1570 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1571 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1572 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1573 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1574 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1575 * @var USBD_T::MXPLD14 1576 * Offset: 0x5E4 Endpoint 14 Maximal Payload Register 1577 * --------------------------------------------------------------------------------------------------- 1578 * |Bits |Field |Descriptions 1579 * | :----: | :----: | :---- | 1580 * |[10:0] |MXPLD |Maximal Payload 1581 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1582 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1583 * | | |(1) When the register is written by CPU, 1584 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1585 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1586 * | | |(2) When the register is read by CPU, 1587 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1588 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1589 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1590 * @var USBD_T::CFG14 1591 * Offset: 0x5E8 Endpoint 14 Configuration Register 1592 * --------------------------------------------------------------------------------------------------- 1593 * |Bits |Field |Descriptions 1594 * | :----: | :----: | :---- | 1595 * |[3:0] |EPNUM |Endpoint Number 1596 * | | |These bits are used to define the endpoint number of the current endpoint. 1597 * |[4] |ISOCH |Isochronous Endpoint 1598 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1599 * | | |0 = No Isochronous endpoint. 1600 * | | |1 = Isochronous endpoint. 1601 * |[6:5] |STATE |Endpoint State 1602 * | | |00 = Endpoint is Disabled. 1603 * | | |01 = Out endpoint. 1604 * | | |10 = IN endpoint. 1605 * | | |11 = Undefined. 1606 * |[7] |DSQSYNC |Data Sequence Synchronization 1607 * | | |0 = DATA0 PID. 1608 * | | |1 = DATA1 PID. 1609 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1610 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1611 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1612 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1613 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1614 * | | |USB data toggle will be guaranteed by changing endpoint. 1615 * |[9] |CSTALL |Clear STALL Response 1616 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1617 * | | |1 = Clear the device to response STALL handshake in setup stage. 1618 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1619 * | | |0 = Inactive in double buffer mode. 1620 * | | |1 = Active in double buffer mode. 1621 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1622 * |[11] |DBEN |Double Buffer Enable Bit 1623 * | | |0 = Single buffer mode. 1624 * | | |1 = Double buffer mode. 1625 * @var USBD_T::CFGP14 1626 * Offset: 0x5EC Endpoint 14 Set Stall and Clear In/Out Ready Control Register 1627 * --------------------------------------------------------------------------------------------------- 1628 * |Bits |Field |Descriptions 1629 * | :----: | :----: | :---- | 1630 * |[0] |CLRRDY |Clear Ready Bit 1631 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1632 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1633 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1634 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1635 * | | |This bit is written 1 only and is always 0 when it is read back. 1636 * |[1] |SSTALL |Set STALL Bit 1637 * | | |0 = Disable the device to response STALL. 1638 * | | |1 = Set the device to respond STALL automatically. 1639 * @var USBD_T::BUFSEG15 1640 * Offset: 0x5F0 Endpoint 15 Buffer Segmentation Register 1641 * --------------------------------------------------------------------------------------------------- 1642 * |Bits |Field |Descriptions 1643 * | :----: | :----: | :---- | 1644 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1645 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1646 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1647 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1648 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1649 * @var USBD_T::MXPLD15 1650 * Offset: 0x5F4 Endpoint 15 Maximal Payload Register 1651 * --------------------------------------------------------------------------------------------------- 1652 * |Bits |Field |Descriptions 1653 * | :----: | :----: | :---- | 1654 * |[10:0] |MXPLD |Maximal Payload 1655 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1656 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1657 * | | |(1) When the register is written by CPU, 1658 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1659 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1660 * | | |(2) When the register is read by CPU, 1661 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1662 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1663 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1664 * @var USBD_T::CFG15 1665 * Offset: 0x5F8 Endpoint 15 Configuration Register 1666 * --------------------------------------------------------------------------------------------------- 1667 * |Bits |Field |Descriptions 1668 * | :----: | :----: | :---- | 1669 * |[3:0] |EPNUM |Endpoint Number 1670 * | | |These bits are used to define the endpoint number of the current endpoint. 1671 * |[4] |ISOCH |Isochronous Endpoint 1672 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1673 * | | |0 = No Isochronous endpoint. 1674 * | | |1 = Isochronous endpoint. 1675 * |[6:5] |STATE |Endpoint State 1676 * | | |00 = Endpoint is Disabled. 1677 * | | |01 = Out endpoint. 1678 * | | |10 = IN endpoint. 1679 * | | |11 = Undefined. 1680 * |[7] |DSQSYNC |Data Sequence Synchronization 1681 * | | |0 = DATA0 PID. 1682 * | | |1 = DATA1 PID. 1683 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1684 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1685 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1686 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1687 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1688 * | | |USB data toggle will be guaranteed by changing endpoint. 1689 * |[9] |CSTALL |Clear STALL Response 1690 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1691 * | | |1 = Clear the device to response STALL handshake in setup stage. 1692 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1693 * | | |0 = Inactive in double buffer mode. 1694 * | | |1 = Active in double buffer mode. 1695 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1696 * |[11] |DBEN |Double Buffer Enable Bit 1697 * | | |0 = Single buffer mode. 1698 * | | |1 = Double buffer mode. 1699 * @var USBD_T::CFGP15 1700 * Offset: 0x5FC Endpoint 15 Set Stall and Clear In/Out Ready Control Register 1701 * --------------------------------------------------------------------------------------------------- 1702 * |Bits |Field |Descriptions 1703 * | :----: | :----: | :---- | 1704 * |[0] |CLRRDY |Clear Ready Bit 1705 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1706 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1707 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1708 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1709 * | | |This bit is written 1 only and is always 0 when it is read back. 1710 * |[1] |SSTALL |Set STALL Bit 1711 * | | |0 = Disable the device to response STALL. 1712 * | | |1 = Set the device to respond STALL automatically. 1713 * @var USBD_T::BUFSEG16 1714 * Offset: 0x600 Endpoint 16 Buffer Segmentation Register 1715 * --------------------------------------------------------------------------------------------------- 1716 * |Bits |Field |Descriptions 1717 * | :----: | :----: | :---- | 1718 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1719 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1720 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1721 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1722 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1723 * @var USBD_T::MXPLD16 1724 * Offset: 0x604 Endpoint 16 Maximal Payload Register 1725 * --------------------------------------------------------------------------------------------------- 1726 * |Bits |Field |Descriptions 1727 * | :----: | :----: | :---- | 1728 * |[10:0] |MXPLD |Maximal Payload 1729 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1730 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1731 * | | |(1) When the register is written by CPU, 1732 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1733 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1734 * | | |(2) When the register is read by CPU, 1735 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1736 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1737 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1738 * @var USBD_T::CFG16 1739 * Offset: 0x608 Endpoint 16 Configuration Register 1740 * --------------------------------------------------------------------------------------------------- 1741 * |Bits |Field |Descriptions 1742 * | :----: | :----: | :---- | 1743 * |[3:0] |EPNUM |Endpoint Number 1744 * | | |These bits are used to define the endpoint number of the current endpoint. 1745 * |[4] |ISOCH |Isochronous Endpoint 1746 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1747 * | | |0 = No Isochronous endpoint. 1748 * | | |1 = Isochronous endpoint. 1749 * |[6:5] |STATE |Endpoint State 1750 * | | |00 = Endpoint is Disabled. 1751 * | | |01 = Out endpoint. 1752 * | | |10 = IN endpoint. 1753 * | | |11 = Undefined. 1754 * |[7] |DSQSYNC |Data Sequence Synchronization 1755 * | | |0 = DATA0 PID. 1756 * | | |1 = DATA1 PID. 1757 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1758 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1759 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1760 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1761 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1762 * | | |USB data toggle will be guaranteed by changing endpoint. 1763 * |[9] |CSTALL |Clear STALL Response 1764 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1765 * | | |1 = Clear the device to response STALL handshake in setup stage. 1766 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1767 * | | |0 = Inactive in double buffer mode. 1768 * | | |1 = Active in double buffer mode. 1769 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1770 * |[11] |DBEN |Double Buffer Enable Bit 1771 * | | |0 = Single buffer mode. 1772 * | | |1 = Double buffer mode. 1773 * @var USBD_T::CFGP16 1774 * Offset: 0x60C Endpoint 16 Set Stall and Clear In/Out Ready Control Register 1775 * --------------------------------------------------------------------------------------------------- 1776 * |Bits |Field |Descriptions 1777 * | :----: | :----: | :---- | 1778 * |[0] |CLRRDY |Clear Ready Bit 1779 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1780 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1781 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1782 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1783 * | | |This bit is written 1 only and is always 0 when it is read back. 1784 * |[1] |SSTALL |Set STALL Bit 1785 * | | |0 = Disable the device to response STALL. 1786 * | | |1 = Set the device to respond STALL automatically. 1787 * @var USBD_T::BUFSEG17 1788 * Offset: 0x610 Endpoint 17 Buffer Segmentation Register 1789 * --------------------------------------------------------------------------------------------------- 1790 * |Bits |Field |Descriptions 1791 * | :----: | :----: | :---- | 1792 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1793 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1794 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1795 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1796 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1797 * @var USBD_T::MXPLD17 1798 * Offset: 0x614 Endpoint 17 Maximal Payload Register 1799 * --------------------------------------------------------------------------------------------------- 1800 * |Bits |Field |Descriptions 1801 * | :----: | :----: | :---- | 1802 * |[10:0] |MXPLD |Maximal Payload 1803 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1804 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1805 * | | |(1) When the register is written by CPU, 1806 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1807 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1808 * | | |(2) When the register is read by CPU, 1809 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1810 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1811 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1812 * @var USBD_T::CFG17 1813 * Offset: 0x618 Endpoint 17 Configuration Register 1814 * --------------------------------------------------------------------------------------------------- 1815 * |Bits |Field |Descriptions 1816 * | :----: | :----: | :---- | 1817 * |[3:0] |EPNUM |Endpoint Number 1818 * | | |These bits are used to define the endpoint number of the current endpoint. 1819 * |[4] |ISOCH |Isochronous Endpoint 1820 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1821 * | | |0 = No Isochronous endpoint. 1822 * | | |1 = Isochronous endpoint. 1823 * |[6:5] |STATE |Endpoint State 1824 * | | |00 = Endpoint is Disabled. 1825 * | | |01 = Out endpoint. 1826 * | | |10 = IN endpoint. 1827 * | | |11 = Undefined. 1828 * |[7] |DSQSYNC |Data Sequence Synchronization 1829 * | | |0 = DATA0 PID. 1830 * | | |1 = DATA1 PID. 1831 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1832 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1833 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won''t be toggled in double buffer mode. 1834 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1835 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1836 * | | |USB data toggle will be guaranteed by changing endpoint. 1837 * |[9] |CSTALL |Clear STALL Response 1838 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1839 * | | |1 = Clear the device to response STALL handshake in setup stage. 1840 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1841 * | | |0 = Inactive in double buffer mode. 1842 * | | |1 = Active in double buffer mode. 1843 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1844 * |[11] |DBEN |Double Buffer Enable Bit 1845 * | | |0 = Single buffer mode. 1846 * | | |1 = Double buffer mode. 1847 * @var USBD_T::CFGP17 1848 * Offset: 0x61C Endpoint 17 Set Stall and Clear In/Out Ready Control Register 1849 * --------------------------------------------------------------------------------------------------- 1850 * |Bits |Field |Descriptions 1851 * | :----: | :----: | :---- | 1852 * |[0] |CLRRDY |Clear Ready Bit 1853 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1854 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1855 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1856 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1857 * | | |This bit is written 1 only and is always 0 when it is read back. 1858 * |[1] |SSTALL |Set STALL Bit 1859 * | | |0 = Disable the device to response STALL. 1860 * | | |1 = Set the device to respond STALL automatically. 1861 * @var USBD_T::BUFSEG18 1862 * Offset: 0x620 Endpoint 18 Buffer Segmentation Register 1863 * --------------------------------------------------------------------------------------------------- 1864 * |Bits |Field |Descriptions 1865 * | :----: | :----: | :---- | 1866 * |[10:3] |BUFSEG |Endpoint Buffer Segmentation 1867 * | | |It is used to indicate the offset address for each endpoint with the USB SRAM starting address The effective starting address of the endpoint is 1868 * | | |USBD_SRAM address + {BUFSEG, 3'b000} 1869 * | | |Where the USBD_SRAM address = USBD_BA+0x800h. 1870 * | | |Refer to the section 1.1.5.7 for the endpoint SRAM structure and its description. 1871 * @var USBD_T::MXPLD18 1872 * Offset: 0x624 Endpoint 18 Maximal Payload Register 1873 * --------------------------------------------------------------------------------------------------- 1874 * |Bits |Field |Descriptions 1875 * | :----: | :----: | :---- | 1876 * |[10:0] |MXPLD |Maximal Payload 1877 * | | |Define the data length which is transmitted to host (IN token) or the actual data length which is received from the host (OUT token) 1878 * | | |It also used to indicate that the endpoint is ready to be transmitted in IN token or received in OUT token. 1879 * | | |(1) When the register is written by CPU, 1880 * | | |For IN token, the value of MXPLD is used to define the data length to be transmitted and indicate the data buffer is ready. 1881 * | | |For OUT token, it means that the controller is ready to receive data from the host and the value of MXPLD is the maximal data length comes from host. 1882 * | | |(2) When the register is read by CPU, 1883 * | | |For IN token, the value of MXPLD is indicated by the data length be transmitted to host 1884 * | | |For OUT token, the value of MXPLD is indicated the actual data length receiving from host. 1885 * | | |Note: Once MXPLD is written, the data packets will be transmitted/received immediately after IN/OUT token arrived. 1886 * @var USBD_T::CFG18 1887 * Offset: 0x628 Endpoint 18 Configuration Register 1888 * --------------------------------------------------------------------------------------------------- 1889 * |Bits |Field |Descriptions 1890 * | :----: | :----: | :---- | 1891 * |[3:0] |EPNUM |Endpoint Number 1892 * | | |These bits are used to define the endpoint number of the current endpoint. 1893 * |[4] |ISOCH |Isochronous Endpoint 1894 * | | |This bit is used to set the endpoint as Isochronous endpoint, no handshake. 1895 * | | |0 = No Isochronous endpoint. 1896 * | | |1 = Isochronous endpoint. 1897 * |[6:5] |STATE |Endpoint State 1898 * | | |00 = Endpoint is Disabled. 1899 * | | |01 = Out endpoint. 1900 * | | |10 = IN endpoint. 1901 * | | |11 = Undefined. 1902 * |[7] |DSQSYNC |Data Sequence Synchronization 1903 * | | |0 = DATA0 PID. 1904 * | | |1 = DATA1 PID. 1905 * | | |For IN token, DSQSYNC specify DATA0 or DATA1 PID in transfer data packet 1906 * | | |For OUT token, DSQSYNC specify DATA0 or DATA1 PID in received data packet. 1907 * | | |DSQSYNC will be toggled automatically by hardware when IN or OUT token transfer successfully in single buffer mode, but won't be toggled in double buffer mode. 1908 * | | |Note 1: When double buffer is enabled, hardware will automatically write 0 to DSQSYNC with active double buffer and write 1 to DSQSYNC with inactive double buffer. 1909 * | | |Note 2: It won't be toggled by hardware when DBEN = 1 1910 * | | |USB data toggle will be guaranteed by changing endpoint. 1911 * |[9] |CSTALL |Clear STALL Response 1912 * | | |0 = Disable the device to clear the STALL handshake in setup stage. 1913 * | | |1 = Clear the device to response STALL handshake in setup stage. 1914 * |[10] |DBTGACTIVE|Double Buffer Toggle Active Bit 1915 * | | |0 = Inactive in double buffer mode. 1916 * | | |1 = Active in double buffer mode. 1917 * | | |When DBEN = 1 and endpoint successful transfer, DBTGACTIVE of each double buffer will be toggled automatically by hardware. 1918 * |[11] |DBEN |Double Buffer Enable Bit 1919 * | | |0 = Single buffer mode. 1920 * | | |1 = Double buffer mode. 1921 * @var USBD_T::CFGP18 1922 * Offset: 0x62C Endpoint 18 Set Stall and Clear In/Out Ready Control Register 1923 * --------------------------------------------------------------------------------------------------- 1924 * |Bits |Field |Descriptions 1925 * | :----: | :----: | :---- | 1926 * |[0] |CLRRDY |Clear Ready Bit 1927 * | | |When the USBD_MXPLD0~18 register is set by user, it means that the endpoint is ready to transmit or receive data 1928 * | | |If the user wants to disable this transaction before the transaction start, users can set this bit to 1 to disable it and it is automatically clear to 0. 1929 * | | |For IN token, write '1' to clear the IN token had ready to transmit the data to USB. 1930 * | | |For OUT token, write '1' to clear the OUT token had ready to receive the data from USB. 1931 * | | |This bit is written 1 only and is always 0 when it is read back. 1932 * |[1] |SSTALL |Set STALL Bit 1933 * | | |0 = Disable the device to response STALL. 1934 * | | |1 = Set the device to respond STALL automatically. 1935 */ 1936 __IO uint32_t INTEN; /*!< [0x0000] USB Device Interrupt Enable Register */ 1937 __IO uint32_t INTSTS; /*!< [0x0004] USB Device Interrupt Event Status Register */ 1938 __IO uint32_t FADDR; /*!< [0x0008] USB Device Function Address Register */ 1939 __I uint32_t EPSTS; /*!< [0x000c] USB Device Endpoint Status Register */ 1940 __IO uint32_t ATTR; /*!< [0x0010] USB Device Bus Status and Attribution Register */ 1941 __I uint32_t VBUSDET; /*!< [0x0014] USB Device VBUS Detection Register */ 1942 __IO uint32_t STBUFSEG; /*!< [0x0018] SETUP Token Buffer Segmentation Register */ 1943 __I uint32_t RESERVE0[1]; 1944 __I uint32_t EPSTS0; /*!< [0x0020] USB Device Endpoint Status Register 0 */ 1945 __I uint32_t EPSTS1; /*!< [0x0024] USB Device Endpoint Status Register 1 */ 1946 __I uint32_t EPSTS2; /*!< [0x0028] USB Device Endpoint Status Register 2 */ 1947 __I uint32_t EPSTS3; /*!< [0x002c] USB Device Endpoint Status Register 3 */ 1948 __IO uint32_t EPINTSTS; /*!< [0x0030] USB Device Endpoint Interrupt Event Status Register */ 1949 __I uint32_t RESERVE1[21]; 1950 __I uint32_t LPMATTR; /*!< [0x0088] USB LPM Attribution Register */ 1951 __I uint32_t FN; /*!< [0x008c] USB Frame Number Register */ 1952 __IO uint32_t SE0; /*!< [0x0090] USB Device Drive SE0 Control Register */ 1953 __I uint32_t RESERVE2[283]; 1954 USBD_EP_T EP[19]; /*!< [0x500~0x5bc] USB End Point 0 ~ 11 Configuration Register */ 1955 1956 } USBD_T; 1957 1958 /** 1959 @addtogroup USBD_CONST USBD Bit Field Definition 1960 Constant Definitions for USBD Controller 1961 @{ */ 1962 1963 #define USBD_INTEN_BUSIEN_Pos (0) /*!< USBD_T::INTEN: BUSIEN Position */ 1964 #define USBD_INTEN_BUSIEN_Msk (0x1ul << USBD_INTEN_BUSIEN_Pos) /*!< USBD_T::INTEN: BUSIEN Mask */ 1965 1966 #define USBD_INTEN_USBIEN_Pos (1) /*!< USBD_T::INTEN: USBIEN Position */ 1967 #define USBD_INTEN_USBIEN_Msk (0x1ul << USBD_INTEN_USBIEN_Pos) /*!< USBD_T::INTEN: USBIEN Mask */ 1968 1969 #define USBD_INTEN_VBDETIEN_Pos (2) /*!< USBD_T::INTEN: VBDETIEN Position */ 1970 #define USBD_INTEN_VBDETIEN_Msk (0x1ul << USBD_INTEN_VBDETIEN_Pos) /*!< USBD_T::INTEN: VBDETIEN Mask */ 1971 1972 #define USBD_INTEN_NEVWKIEN_Pos (3) /*!< USBD_T::INTEN: NEVWKIEN Position */ 1973 #define USBD_INTEN_NEVWKIEN_Msk (0x1ul << USBD_INTEN_NEVWKIEN_Pos) /*!< USBD_T::INTEN: NEVWKIEN Mask */ 1974 1975 #define USBD_INTEN_SOFIEN_Pos (4) /*!< USBD_T::INTEN: SOFIEN Position */ 1976 #define USBD_INTEN_SOFIEN_Msk (0x1ul << USBD_INTEN_SOFIEN_Pos) /*!< USBD_T::INTEN: SOFIEN Mask */ 1977 1978 #define USBD_INTEN_WKEN_Pos (8) /*!< USBD_T::INTEN: WKEN Position */ 1979 #define USBD_INTEN_WKEN_Msk (0x1ul << USBD_INTEN_WKEN_Pos) /*!< USBD_T::INTEN: WKEN Mask */ 1980 1981 #define USBD_INTEN_INNAKEN_Pos (15) /*!< USBD_T::INTEN: INNAKEN Position */ 1982 #define USBD_INTEN_INNAKEN_Msk (0x1ul << USBD_INTEN_INNAKEN_Pos) /*!< USBD_T::INTEN: INNAKEN Mask */ 1983 1984 #define USBD_INTSTS_BUSIF_Pos (0) /*!< USBD_T::INTSTS: BUSIF Position */ 1985 #define USBD_INTSTS_BUSIF_Msk (0x1ul << USBD_INTSTS_BUSIF_Pos) /*!< USBD_T::INTSTS: BUSIF Mask */ 1986 1987 #define USBD_INTSTS_USBIF_Pos (1) /*!< USBD_T::INTSTS: USBIF Position */ 1988 #define USBD_INTSTS_USBIF_Msk (0x1ul << USBD_INTSTS_USBIF_Pos) /*!< USBD_T::INTSTS: USBIF Mask */ 1989 1990 #define USBD_INTSTS_VBDETIF_Pos (2) /*!< USBD_T::INTSTS: VBDETIF Position */ 1991 #define USBD_INTSTS_VBDETIF_Msk (0x1ul << USBD_INTSTS_VBDETIF_Pos) /*!< USBD_T::INTSTS: VBDETIF Mask */ 1992 1993 #define USBD_INTSTS_NEVWKIF_Pos (3) /*!< USBD_T::INTSTS: NEVWKIF Position */ 1994 #define USBD_INTSTS_NEVWKIF_Msk (0x1ul << USBD_INTSTS_NEVWKIF_Pos) /*!< USBD_T::INTSTS: NEVWKIF Mask */ 1995 1996 #define USBD_INTSTS_SOFIF_Pos (4) /*!< USBD_T::INTSTS: SOFIF Position */ 1997 #define USBD_INTSTS_SOFIF_Msk (0x1ul << USBD_INTSTS_SOFIF_Pos) /*!< USBD_T::INTSTS: SOFIF Mask */ 1998 1999 #define USBD_INTSTS_EPEVT0_Pos (16) /*!< USBD_T::INTSTS: EPEVT0 Position */ 2000 #define USBD_INTSTS_EPEVT0_Msk (0x1ul << USBD_INTSTS_EPEVT0_Pos) /*!< USBD_T::INTSTS: EPEVT0 Mask */ 2001 2002 #define USBD_INTSTS_EPEVT1_Pos (17) /*!< USBD_T::INTSTS: EPEVT1 Position */ 2003 #define USBD_INTSTS_EPEVT1_Msk (0x1ul << USBD_INTSTS_EPEVT1_Pos) /*!< USBD_T::INTSTS: EPEVT1 Mask */ 2004 2005 #define USBD_INTSTS_EPEVT2_Pos (18) /*!< USBD_T::INTSTS: EPEVT2 Position */ 2006 #define USBD_INTSTS_EPEVT2_Msk (0x1ul << USBD_INTSTS_EPEVT2_Pos) /*!< USBD_T::INTSTS: EPEVT2 Mask */ 2007 2008 #define USBD_INTSTS_EPEVT3_Pos (19) /*!< USBD_T::INTSTS: EPEVT3 Position */ 2009 #define USBD_INTSTS_EPEVT3_Msk (0x1ul << USBD_INTSTS_EPEVT3_Pos) /*!< USBD_T::INTSTS: EPEVT3 Mask */ 2010 2011 #define USBD_INTSTS_EPEVT4_Pos (20) /*!< USBD_T::INTSTS: EPEVT4 Position */ 2012 #define USBD_INTSTS_EPEVT4_Msk (0x1ul << USBD_INTSTS_EPEVT4_Pos) /*!< USBD_T::INTSTS: EPEVT4 Mask */ 2013 2014 #define USBD_INTSTS_EPEVT5_Pos (21) /*!< USBD_T::INTSTS: EPEVT5 Position */ 2015 #define USBD_INTSTS_EPEVT5_Msk (0x1ul << USBD_INTSTS_EPEVT5_Pos) /*!< USBD_T::INTSTS: EPEVT5 Mask */ 2016 2017 #define USBD_INTSTS_EPEVT6_Pos (22) /*!< USBD_T::INTSTS: EPEVT6 Position */ 2018 #define USBD_INTSTS_EPEVT6_Msk (0x1ul << USBD_INTSTS_EPEVT6_Pos) /*!< USBD_T::INTSTS: EPEVT6 Mask */ 2019 2020 #define USBD_INTSTS_EPEVT7_Pos (23) /*!< USBD_T::INTSTS: EPEVT7 Position */ 2021 #define USBD_INTSTS_EPEVT7_Msk (0x1ul << USBD_INTSTS_EPEVT7_Pos) /*!< USBD_T::INTSTS: EPEVT7 Mask */ 2022 2023 #define USBD_INTSTS_EPEVT8_Pos (24) /*!< USBD_T::INTSTS: EPEVT8 Position */ 2024 #define USBD_INTSTS_EPEVT8_Msk (0x1ul << USBD_INTSTS_EPEVT8_Pos) /*!< USBD_T::INTSTS: EPEVT8 Mask */ 2025 2026 #define USBD_INTSTS_EPEVT9_Pos (25) /*!< USBD_T::INTSTS: EPEVT9 Position */ 2027 #define USBD_INTSTS_EPEVT9_Msk (0x1ul << USBD_INTSTS_EPEVT9_Pos) /*!< USBD_T::INTSTS: EPEVT9 Mask */ 2028 2029 #define USBD_INTSTS_EPEVT10_Pos (26) /*!< USBD_T::INTSTS: EPEVT10 Position */ 2030 #define USBD_INTSTS_EPEVT10_Msk (0x1ul << USBD_INTSTS_EPEVT10_Pos) /*!< USBD_T::INTSTS: EPEVT10 Mask */ 2031 2032 #define USBD_INTSTS_EPEVT11_Pos (27) /*!< USBD_T::INTSTS: EPEVT11 Position */ 2033 #define USBD_INTSTS_EPEVT11_Msk (0x1ul << USBD_INTSTS_EPEVT11_Pos) /*!< USBD_T::INTSTS: EPEVT11 Mask */ 2034 2035 #define USBD_INTSTS_SETUP_Pos (31) /*!< USBD_T::INTSTS: SETUP Position */ 2036 #define USBD_INTSTS_SETUP_Msk (0x1ul << USBD_INTSTS_SETUP_Pos) /*!< USBD_T::INTSTS: SETUP Mask */ 2037 2038 #define USBD_FADDR_FADDR_Pos (0) /*!< USBD_T::FADDR: FADDR Position */ 2039 #define USBD_FADDR_FADDR_Msk (0x7ful << USBD_FADDR_FADDR_Pos) /*!< USBD_T::FADDR: FADDR Mask */ 2040 2041 #define USBD_EPSTS_OV_Pos (7) /*!< USBD_T::EPSTS: OV Position */ 2042 #define USBD_EPSTS_OV_Msk (0x1ul << USBD_EPSTS_OV_Pos) /*!< USBD_T::EPSTS: OV Mask */ 2043 2044 #define USBD_ATTR_USBRST_Pos (0) /*!< USBD_T::ATTR: USBRST Position */ 2045 #define USBD_ATTR_USBRST_Msk (0x1ul << USBD_ATTR_USBRST_Pos) /*!< USBD_T::ATTR: USBRST Mask */ 2046 2047 #define USBD_ATTR_SUSPEND_Pos (1) /*!< USBD_T::ATTR: SUSPEND Position */ 2048 #define USBD_ATTR_SUSPEND_Msk (0x1ul << USBD_ATTR_SUSPEND_Pos) /*!< USBD_T::ATTR: SUSPEND Mask */ 2049 2050 #define USBD_ATTR_RESUME_Pos (2) /*!< USBD_T::ATTR: RESUME Position */ 2051 #define USBD_ATTR_RESUME_Msk (0x1ul << USBD_ATTR_RESUME_Pos) /*!< USBD_T::ATTR: RESUME Mask */ 2052 2053 #define USBD_ATTR_TOUT_Pos (3) /*!< USBD_T::ATTR: TOUT Position */ 2054 #define USBD_ATTR_TOUT_Msk (0x1ul << USBD_ATTR_TOUT_Pos) /*!< USBD_T::ATTR: TOUT Mask */ 2055 2056 #define USBD_ATTR_PHYEN_Pos (4) /*!< USBD_T::ATTR: PHYEN Position */ 2057 #define USBD_ATTR_PHYEN_Msk (0x1ul << USBD_ATTR_PHYEN_Pos) /*!< USBD_T::ATTR: PHYEN Mask */ 2058 2059 #define USBD_ATTR_RWAKEUP_Pos (5) /*!< USBD_T::ATTR: RWAKEUP Position */ 2060 #define USBD_ATTR_RWAKEUP_Msk (0x1ul << USBD_ATTR_RWAKEUP_Pos) /*!< USBD_T::ATTR: RWAKEUP Mask */ 2061 2062 #define USBD_ATTR_USBEN_Pos (7) /*!< USBD_T::ATTR: USBEN Position */ 2063 #define USBD_ATTR_USBEN_Msk (0x1ul << USBD_ATTR_USBEN_Pos) /*!< USBD_T::ATTR: USBEN Mask */ 2064 2065 #define USBD_ATTR_DPPUEN_Pos (8) /*!< USBD_T::ATTR: DPPUEN Position */ 2066 #define USBD_ATTR_DPPUEN_Msk (0x1ul << USBD_ATTR_DPPUEN_Pos) /*!< USBD_T::ATTR: DPPUEN Mask */ 2067 2068 #define USBD_ATTR_PWRDN_Pos (9) /*!< USBD_T::ATTR: PWRDN Position */ 2069 #define USBD_ATTR_PWRDN_Msk (0x1ul << USBD_ATTR_PWRDN_Pos) /*!< USBD_T::ATTR: PWRDN Mask */ 2070 2071 #define USBD_ATTR_BYTEM_Pos (10) /*!< USBD_T::ATTR: BYTEM Position */ 2072 #define USBD_ATTR_BYTEM_Msk (0x1ul << USBD_ATTR_BYTEM_Pos) /*!< USBD_T::ATTR: BYTEM Mask */ 2073 2074 #define USBD_ATTR_LPMACK_Pos (11) /*!< USBD_T::ATTR: LPMACK Position */ 2075 #define USBD_ATTR_LPMACK_Msk (0x1ul << USBD_ATTR_LPMACK_Pos) /*!< USBD_T::ATTR: LPMACK Mask */ 2076 2077 #define USBD_ATTR_L1SUSPEND_Pos (12) /*!< USBD_T::ATTR: L1SUSPEND Position */ 2078 #define USBD_ATTR_L1SUSPEND_Msk (0x1ul << USBD_ATTR_L1SUSPEND_Pos) /*!< USBD_T::ATTR: L1SUSPEND Mask */ 2079 2080 #define USBD_ATTR_L1RESUME_Pos (13) /*!< USBD_T::ATTR: L1RESUME Position */ 2081 #define USBD_ATTR_L1RESUME_Msk (0x1ul << USBD_ATTR_L1RESUME_Pos) /*!< USBD_T::ATTR: L1RESUME Mask */ 2082 2083 #define USBD_VBUSDET_VBUSDET_Pos (0) /*!< USBD_T::VBUSDET: VBUSDET Position */ 2084 #define USBD_VBUSDET_VBUSDET_Msk (0x1ul << USBD_VBUSDET_VBUSDET_Pos) /*!< USBD_T::VBUSDET: VBUSDET Mask */ 2085 2086 #define USBD_STBUFSEG_STBUFSEG_Pos (3) /*!< USBD_T::STBUFSEG: STBUFSEG Position */ 2087 #define USBD_STBUFSEG_STBUFSEG_Msk (0xfful << USBD_STBUFSEG_STBUFSEG_Pos) /*!< USBD_T::STBUFSEG: STBUFSEG Mask */ 2088 #define USBD_EPSTS0_EPSTS0_Pos (0) /*!< USBD_T::EPSTS0: EPSTS0 Position */ 2089 #define USBD_EPSTS0_EPSTS0_Msk (0xful << USBD_EPSTS0_EPSTS0_Pos) /*!< USBD_T::EPSTS0: EPSTS0 Mask */ 2090 2091 #define USBD_EPSTS0_EPSTS1_Pos (4) /*!< USBD_T::EPSTS0: EPSTS1 Position */ 2092 #define USBD_EPSTS0_EPSTS1_Msk (0xful << USBD_EPSTS0_EPSTS1_Pos) /*!< USBD_T::EPSTS0: EPSTS1 Mask */ 2093 2094 #define USBD_EPSTS0_EPSTS2_Pos (8) /*!< USBD_T::EPSTS0: EPSTS2 Position */ 2095 #define USBD_EPSTS0_EPSTS2_Msk (0xful << USBD_EPSTS0_EPSTS2_Pos) /*!< USBD_T::EPSTS0: EPSTS2 Mask */ 2096 2097 #define USBD_EPSTS0_EPSTS3_Pos (12) /*!< USBD_T::EPSTS0: EPSTS3 Position */ 2098 #define USBD_EPSTS0_EPSTS3_Msk (0xful << USBD_EPSTS0_EPSTS3_Pos) /*!< USBD_T::EPSTS0: EPSTS3 Mask */ 2099 2100 #define USBD_EPSTS0_EPSTS4_Pos (16) /*!< USBD_T::EPSTS0: EPSTS4 Position */ 2101 #define USBD_EPSTS0_EPSTS4_Msk (0xful << USBD_EPSTS0_EPSTS4_Pos) /*!< USBD_T::EPSTS0: EPSTS4 Mask */ 2102 2103 #define USBD_EPSTS0_EPSTS5_Pos (20) /*!< USBD_T::EPSTS0: EPSTS5 Position */ 2104 #define USBD_EPSTS0_EPSTS5_Msk (0xful << USBD_EPSTS0_EPSTS5_Pos) /*!< USBD_T::EPSTS0: EPSTS5 Mask */ 2105 2106 #define USBD_EPSTS0_EPSTS6_Pos (24) /*!< USBD_T::EPSTS0: EPSTS6 Position */ 2107 #define USBD_EPSTS0_EPSTS6_Msk (0xful << USBD_EPSTS0_EPSTS6_Pos) /*!< USBD_T::EPSTS0: EPSTS6 Mask */ 2108 2109 #define USBD_EPSTS0_EPSTS7_Pos (28) /*!< USBD_T::EPSTS0: EPSTS7 Position */ 2110 #define USBD_EPSTS0_EPSTS7_Msk (0xful << USBD_EPSTS0_EPSTS7_Pos) /*!< USBD_T::EPSTS0: EPSTS7 Mask */ 2111 2112 #define USBD_EPSTS1_EPSTS8_Pos (0) /*!< USBD_T::EPSTS1: EPSTS8 Position */ 2113 #define USBD_EPSTS1_EPSTS8_Msk (0xful << USBD_EPSTS1_EPSTS8_Pos) /*!< USBD_T::EPSTS1: EPSTS8 Mask */ 2114 2115 #define USBD_EPSTS1_EPSTS9_Pos (4) /*!< USBD_T::EPSTS1: EPSTS9 Position */ 2116 #define USBD_EPSTS1_EPSTS9_Msk (0xful << USBD_EPSTS1_EPSTS9_Pos) /*!< USBD_T::EPSTS1: EPSTS9 Mask */ 2117 2118 #define USBD_EPSTS1_EPSTS10_Pos (8) /*!< USBD_T::EPSTS1: EPSTS10 Position */ 2119 #define USBD_EPSTS1_EPSTS10_Msk (0xful << USBD_EPSTS1_EPSTS10_Pos) /*!< USBD_T::EPSTS1: EPSTS10 Mask */ 2120 2121 #define USBD_EPSTS1_EPSTS11_Pos (12) /*!< USBD_T::EPSTS1: EPSTS11 Position */ 2122 #define USBD_EPSTS1_EPSTS11_Msk (0xful << USBD_EPSTS1_EPSTS11_Pos) /*!< USBD_T::EPSTS1: EPSTS11 Mask */ 2123 2124 #define USBD_EPSTS1_EPSTS12_Pos (16) /*!< USBD_T::EPSTS1: EPSTS12 Position */ 2125 #define USBD_EPSTS1_EPSTS12_Msk (0xful << USBD_EPSTS1_EPSTS12_Pos) /*!< USBD_T::EPSTS1: EPSTS12 Mask */ 2126 2127 #define USBD_EPSTS1_EPSTS13_Pos (20) /*!< USBD_T::EPSTS1: EPSTS13 Position */ 2128 #define USBD_EPSTS1_EPSTS13_Msk (0xful << USBD_EPSTS1_EPSTS13_Pos) /*!< USBD_T::EPSTS1: EPSTS13 Mask */ 2129 2130 #define USBD_EPSTS1_EPSTS14_Pos (24) /*!< USBD_T::EPSTS1: EPSTS14 Position */ 2131 #define USBD_EPSTS1_EPSTS14_Msk (0xful << USBD_EPSTS1_EPSTS14_Pos) /*!< USBD_T::EPSTS1: EPSTS14 Mask */ 2132 2133 #define USBD_EPSTS1_EPSTS15_Pos (28) /*!< USBD_T::EPSTS1: EPSTS15 Position */ 2134 #define USBD_EPSTS1_EPSTS15_Msk (0xful << USBD_EPSTS1_EPSTS15_Pos) /*!< USBD_T::EPSTS1: EPSTS15 Mask */ 2135 2136 #define USBD_EPSTS2_EPSTS16_Pos (0) /*!< USBD_T::EPSTS2: EPSTS16 Position */ 2137 #define USBD_EPSTS2_EPSTS16_Msk (0xful << USBD_EPSTS2_EPSTS16_Pos) /*!< USBD_T::EPSTS2: EPSTS16 Mask */ 2138 2139 #define USBD_EPSTS2_EPSTS17_Pos (4) /*!< USBD_T::EPSTS2: EPSTS17 Position */ 2140 #define USBD_EPSTS2_EPSTS17_Msk (0xful << USBD_EPSTS2_EPSTS17_Pos) /*!< USBD_T::EPSTS2: EPSTS17 Mask */ 2141 2142 #define USBD_EPSTS2_EPSTS18_Pos (8) /*!< USBD_T::EPSTS2: EPSTS18 Position */ 2143 #define USBD_EPSTS2_EPSTS18_Msk (0xful << USBD_EPSTS2_EPSTS18_Pos) /*!< USBD_T::EPSTS2: EPSTS18 Mask */ 2144 2145 #define USBD_EPINTSTS_EPEVT0_Pos (0) /*!< USBD_T::EPINTSTS: EPEVT0 Position */ 2146 #define USBD_EPINTSTS_EPEVT0_Msk (0x1ul << USBD_EPINTSTS_EPEVT0_Pos) /*!< USBD_T::EPINTSTS: EPEVT0 Mask */ 2147 2148 #define USBD_EPINTSTS_EPEVT1_Pos (1) /*!< USBD_T::EPINTSTS: EPEVT1 Position */ 2149 #define USBD_EPINTSTS_EPEVT1_Msk (0x1ul << USBD_EPINTSTS_EPEVT1_Pos) /*!< USBD_T::EPINTSTS: EPEVT1 Mask */ 2150 2151 #define USBD_EPINTSTS_EPEVT2_Pos (2) /*!< USBD_T::EPINTSTS: EPEVT2 Position */ 2152 #define USBD_EPINTSTS_EPEVT2_Msk (0x1ul << USBD_EPINTSTS_EPEVT2_Pos) /*!< USBD_T::EPINTSTS: EPEVT2 Mask */ 2153 2154 #define USBD_EPINTSTS_EPEVT3_Pos (3) /*!< USBD_T::EPINTSTS: EPEVT3 Position */ 2155 #define USBD_EPINTSTS_EPEVT3_Msk (0x1ul << USBD_EPINTSTS_EPEVT3_Pos) /*!< USBD_T::EPINTSTS: EPEVT3 Mask */ 2156 2157 #define USBD_EPINTSTS_EPEVT4_Pos (4) /*!< USBD_T::EPINTSTS: EPEVT4 Position */ 2158 #define USBD_EPINTSTS_EPEVT4_Msk (0x1ul << USBD_EPINTSTS_EPEVT4_Pos) /*!< USBD_T::EPINTSTS: EPEVT4 Mask */ 2159 2160 #define USBD_EPINTSTS_EPEVT5_Pos (5) /*!< USBD_T::EPINTSTS: EPEVT5 Position */ 2161 #define USBD_EPINTSTS_EPEVT5_Msk (0x1ul << USBD_EPINTSTS_EPEVT5_Pos) /*!< USBD_T::EPINTSTS: EPEVT5 Mask */ 2162 2163 #define USBD_EPINTSTS_EPEVT6_Pos (6) /*!< USBD_T::EPINTSTS: EPEVT6 Position */ 2164 #define USBD_EPINTSTS_EPEVT6_Msk (0x1ul << USBD_EPINTSTS_EPEVT6_Pos) /*!< USBD_T::EPINTSTS: EPEVT6 Mask */ 2165 2166 #define USBD_EPINTSTS_EPEVT7_Pos (7) /*!< USBD_T::EPINTSTS: EPEVT7 Position */ 2167 #define USBD_EPINTSTS_EPEVT7_Msk (0x1ul << USBD_EPINTSTS_EPEVT7_Pos) /*!< USBD_T::EPINTSTS: EPEVT7 Mask */ 2168 2169 #define USBD_EPINTSTS_EPEVT8_Pos (8) /*!< USBD_T::EPINTSTS: EPEVT8 Position */ 2170 #define USBD_EPINTSTS_EPEVT8_Msk (0x1ul << USBD_EPINTSTS_EPEVT8_Pos) /*!< USBD_T::EPINTSTS: EPEVT8 Mask */ 2171 2172 #define USBD_EPINTSTS_EPEVT9_Pos (9) /*!< USBD_T::EPINTSTS: EPEVT9 Position */ 2173 #define USBD_EPINTSTS_EPEVT9_Msk (0x1ul << USBD_EPINTSTS_EPEVT9_Pos) /*!< USBD_T::EPINTSTS: EPEVT9 Mask */ 2174 2175 #define USBD_EPINTSTS_EPEVT10_Pos (10) /*!< USBD_T::EPINTSTS: EPEVT10 Position */ 2176 #define USBD_EPINTSTS_EPEVT10_Msk (0x1ul << USBD_EPINTSTS_EPEVT10_Pos) /*!< USBD_T::EPINTSTS: EPEVT10 Mask */ 2177 2178 #define USBD_EPINTSTS_EPEVT11_Pos (11) /*!< USBD_T::EPINTSTS: EPEVT11 Position */ 2179 #define USBD_EPINTSTS_EPEVT11_Msk (0x1ul << USBD_EPINTSTS_EPEVT11_Pos) /*!< USBD_T::EPINTSTS: EPEVT11 Mask */ 2180 2181 #define USBD_EPINTSTS_EPEVT12_Pos (12) /*!< USBD_T::EPINTSTS: EPEVT12 Position */ 2182 #define USBD_EPINTSTS_EPEVT12_Msk (0x1ul << USBD_EPINTSTS_EPEVT12_Pos) /*!< USBD_T::EPINTSTS: EPEVT12 Mask */ 2183 2184 #define USBD_EPINTSTS_EPEVT13_Pos (13) /*!< USBD_T::EPINTSTS: EPEVT13 Position */ 2185 #define USBD_EPINTSTS_EPEVT13_Msk (0x1ul << USBD_EPINTSTS_EPEVT13_Pos) /*!< USBD_T::EPINTSTS: EPEVT13 Mask */ 2186 2187 #define USBD_EPINTSTS_EPEVT14_Pos (14) /*!< USBD_T::EPINTSTS: EPEVT14 Position */ 2188 #define USBD_EPINTSTS_EPEVT14_Msk (0x1ul << USBD_EPINTSTS_EPEVT14_Pos) /*!< USBD_T::EPINTSTS: EPEVT14 Mask */ 2189 2190 #define USBD_EPINTSTS_EPEVT15_Pos (15) /*!< USBD_T::EPINTSTS: EPEVT15 Position */ 2191 #define USBD_EPINTSTS_EPEVT15_Msk (0x1ul << USBD_EPINTSTS_EPEVT15_Pos) /*!< USBD_T::EPINTSTS: EPEVT15 Mask */ 2192 2193 #define USBD_EPINTSTS_EPEVT16_Pos (16) /*!< USBD_T::EPINTSTS: EPEVT16 Position */ 2194 #define USBD_EPINTSTS_EPEVT16_Msk (0x1ul << USBD_EPINTSTS_EPEVT16_Pos) /*!< USBD_T::EPINTSTS: EPEVT16 Mask */ 2195 2196 #define USBD_EPINTSTS_EPEVT17_Pos (17) /*!< USBD_T::EPINTSTS: EPEVT17 Position */ 2197 #define USBD_EPINTSTS_EPEVT17_Msk (0x1ul << USBD_EPINTSTS_EPEVT17_Pos) /*!< USBD_T::EPINTSTS: EPEVT17 Mask */ 2198 2199 #define USBD_EPINTSTS_EPEVT18_Pos (18) /*!< USBD_T::EPINTSTS: EPEVT18 Position */ 2200 #define USBD_EPINTSTS_EPEVT18_Msk (0x1ul << USBD_EPINTSTS_EPEVT18_Pos) /*!< USBD_T::EPINTSTS: EPEVT18 Mask */ 2201 2202 #define USBD_LPMATTR_LPMLINKSTS_Pos (0) /*!< USBD_T::LPMATTR: LPMLINKSTS Position */ 2203 #define USBD_LPMATTR_LPMLINKSTS_Msk (0xful << USBD_LPMATTR_LPMLINKSTS_Pos) /*!< USBD_T::LPMATTR: LPMLINKSTS Mask */ 2204 2205 #define USBD_LPMATTR_LPMBESL_Pos (4) /*!< USBD_T::LPMATTR: LPMBESL Position */ 2206 #define USBD_LPMATTR_LPMBESL_Msk (0xful << USBD_LPMATTR_LPMBESL_Pos) /*!< USBD_T::LPMATTR: LPMBESL Mask */ 2207 2208 #define USBD_LPMATTR_LPMRWAKUP_Pos (8) /*!< USBD_T::LPMATTR: LPMRWAKUP Position */ 2209 #define USBD_LPMATTR_LPMRWAKUP_Msk (0x1ul << USBD_LPMATTR_LPMRWAKUP_Pos) /*!< USBD_T::LPMATTR: LPMRWAKUP Mask */ 2210 2211 #define USBD_FN_FN_Pos (0) /*!< USBD_T::FN: FN Position */ 2212 #define USBD_FN_FN_Msk (0x7fful << USBD_FN_FN_Pos) /*!< USBD_T::FN: FN Mask */ 2213 2214 #define USBD_SE0_SE0_Pos (0) /*!< USBD_T::SE0: SE0 Position */ 2215 #define USBD_SE0_SE0_Msk (0x1ul << USBD_SE0_SE0_Pos) /*!< USBD_T::SE0: SE0 Mask */ 2216 2217 #define USBD_BUFSEG_BUFSEG_Pos (3) /*!< USBD_EP_T::BUFSEG: BUFSEG Position */ 2218 #define USBD_BUFSEG_BUFSEG_Msk (0x3ful << USBD_BUFSEG_BUFSEG_Pos) /*!< USBD_EP_T::BUFSEG: BUFSEG Mask */ 2219 2220 #define USBD_MXPLD_MXPLD_Pos (0) /*!< USBD_EP_T::MXPLD: MXPLD Position */ 2221 2222 2223 #define USBD_BUFSEG0_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG0: BUFSEG Position */ 2224 #define USBD_BUFSEG0_BUFSEG_Msk (0xfful << USBD_BUFSEG0_BUFSEG_Pos) /*!< USBD_T::BUFSEG0: BUFSEG Mask */ 2225 2226 #define USBD_MXPLD0_MXPLD_Pos (0) /*!< USBD_T::MXPLD0: MXPLD Position */ 2227 #define USBD_MXPLD0_MXPLD_Msk (0x7fful << USBD_MXPLD0_MXPLD_Pos) /*!< USBD_T::MXPLD0: MXPLD Mask */ 2228 2229 #define USBD_CFG0_EPNUM_Pos (0) /*!< USBD_T::CFG0: EPNUM Position */ 2230 #define USBD_CFG0_EPNUM_Msk (0xful << USBD_CFG0_EPNUM_Pos) /*!< USBD_T::CFG0: EPNUM Mask */ 2231 2232 #define USBD_CFG0_ISOCH_Pos (4) /*!< USBD_T::CFG0: ISOCH Position */ 2233 #define USBD_CFG0_ISOCH_Msk (0x1ul << USBD_CFG0_ISOCH_Pos) /*!< USBD_T::CFG0: ISOCH Mask */ 2234 2235 #define USBD_CFG0_STATE_Pos (5) /*!< USBD_T::CFG0: STATE Position */ 2236 #define USBD_CFG0_STATE_Msk (0x3ul << USBD_CFG0_STATE_Pos) /*!< USBD_T::CFG0: STATE Mask */ 2237 2238 #define USBD_CFG0_DSQSYNC_Pos (7) /*!< USBD_T::CFG0: DSQSYNC Position */ 2239 #define USBD_CFG0_DSQSYNC_Msk (0x1ul << USBD_CFG0_DSQSYNC_Pos) /*!< USBD_T::CFG0: DSQSYNC Mask */ 2240 2241 #define USBD_CFG0_CSTALL_Pos (9) /*!< USBD_T::CFG0: CSTALL Position */ 2242 #define USBD_CFG0_CSTALL_Msk (0x1ul << USBD_CFG0_CSTALL_Pos) /*!< USBD_T::CFG0: CSTALL Mask */ 2243 2244 #define USBD_CFG0_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG0: DBTGACTIVE Position */ 2245 #define USBD_CFG0_DBTGACTIVE_Msk (0x1ul << USBD_CFG0_DBTGACTIVE_Pos) /*!< USBD_T::CFG0: DBTGACTIVE Mask */ 2246 2247 #define USBD_CFG0_DBEN_Pos (11) /*!< USBD_T::CFG0: DBEN Position */ 2248 #define USBD_CFG0_DBEN_Msk (0x1ul << USBD_CFG0_DBEN_Pos) /*!< USBD_T::CFG0: DBEN Mask */ 2249 2250 #define USBD_CFGP0_CLRRDY_Pos (0) /*!< USBD_T::CFGP0: CLRRDY Position */ 2251 #define USBD_CFGP0_CLRRDY_Msk (0x1ul << USBD_CFGP0_CLRRDY_Pos) /*!< USBD_T::CFGP0: CLRRDY Mask */ 2252 2253 #define USBD_CFGP0_SSTALL_Pos (1) /*!< USBD_T::CFGP0: SSTALL Position */ 2254 #define USBD_CFGP0_SSTALL_Msk (0x1ul << USBD_CFGP0_SSTALL_Pos) /*!< USBD_T::CFGP0: SSTALL Mask */ 2255 2256 #define USBD_BUFSEG1_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG1: BUFSEG Position */ 2257 #define USBD_BUFSEG1_BUFSEG_Msk (0xfful << USBD_BUFSEG1_BUFSEG_Pos) /*!< USBD_T::BUFSEG1: BUFSEG Mask */ 2258 2259 #define USBD_MXPLD_MXPLD_Msk (0x1fful << USBD_MXPLD_MXPLD_Pos) /*!< USBD_EP_T::MXPLD: MXPLD Mask */ 2260 2261 #define USBD_CFG_EPNUM_Pos (0) /*!< USBD_EP_T::CFG: EPNUM Position */ 2262 #define USBD_CFG_EPNUM_Msk (0xful << USBD_CFG_EPNUM_Pos) /*!< USBD_EP_T::CFG: EPNUM Mask */ 2263 2264 #define USBD_CFG_ISOCH_Pos (4) /*!< USBD_EP_T::CFG: ISOCH Position */ 2265 #define USBD_CFG_ISOCH_Msk (0x1ul << USBD_CFG_ISOCH_Pos) /*!< USBD_EP_T::CFG: ISOCH Mask */ 2266 2267 #define USBD_CFG_STATE_Pos (5) /*!< USBD_EP_T::CFG: STATE Position */ 2268 #define USBD_CFG_STATE_Msk (0x3ul << USBD_CFG_STATE_Pos) /*!< USBD_EP_T::CFG: STATE Mask */ 2269 2270 #define USBD_CFG_DSQSYNC_Pos (7) /*!< USBD_EP_T::CFG: DSQSYNC Position */ 2271 #define USBD_CFG_DSQSYNC_Msk (0x1ul << USBD_CFG_DSQSYNC_Pos) /*!< USBD_EP_T::CFG: DSQSYNC Mask */ 2272 2273 #define USBD_CFG_CSTALL_Pos (9) /*!< USBD_EP_T::CFG: CSTALL Position */ 2274 #define USBD_CFG_CSTALL_Msk (0x1ul << USBD_CFG_CSTALL_Pos) /*!< USBD_EP_T::CFG: CSTALL Mask */ 2275 2276 #define USBD_CFG_DBTGACTIVE_Pos (10) /*!< USBD_EP_T::CFG: DBTGACTIVE Position */ 2277 #define USBD_CFG_DBTGACTIVE_Msk (0x1ul << USBD_CFG_DBTGACTIVE_Pos) /*!< USBD_EP_T::CFG: DBTGACTIVE Mask */ 2278 2279 #define USBD_CFG_DBEN_Pos (11) /*!< USBD_EP_T::CFG: DBEN Position */ 2280 #define USBD_CFG_DBEN_Msk (0x1ul << USBD_CFG_DBEN_Pos) /*!< USBD_EP_T::CFG: DBEN Mask */ 2281 2282 #define USBD_CFGP_CLRRDY_Pos (0) /*!< USBD_EP_T::CFGP: CLRRDY Position */ 2283 #define USBD_CFGP_CLRRDY_Msk (0x1ul << USBD_CFGP_CLRRDY_Pos) /*!< USBD_EP_T::CFGP: CLRRDY Mask */ 2284 2285 #define USBD_CFGP_SSTALL_Pos (1) /*!< USBD_EP_T::CFGP: SSTALL Position */ 2286 #define USBD_CFGP_SSTALL_Msk (0x1ul << USBD_CFGP_SSTALL_Pos) /*!< USBD_EP_T::CFGP: SSTALL Mask */ 2287 2288 2289 #define USBD_MXPLD1_MXPLD_Pos (0) /*!< USBD_T::MXPLD1: MXPLD Position */ 2290 #define USBD_MXPLD1_MXPLD_Msk (0x7fful << USBD_MXPLD1_MXPLD_Pos) /*!< USBD_T::MXPLD1: MXPLD Mask */ 2291 2292 #define USBD_CFG1_EPNUM_Pos (0) /*!< USBD_T::CFG1: EPNUM Position */ 2293 #define USBD_CFG1_EPNUM_Msk (0xful << USBD_CFG1_EPNUM_Pos) /*!< USBD_T::CFG1: EPNUM Mask */ 2294 2295 #define USBD_CFG1_ISOCH_Pos (4) /*!< USBD_T::CFG1: ISOCH Position */ 2296 #define USBD_CFG1_ISOCH_Msk (0x1ul << USBD_CFG1_ISOCH_Pos) /*!< USBD_T::CFG1: ISOCH Mask */ 2297 2298 #define USBD_CFG1_STATE_Pos (5) /*!< USBD_T::CFG1: STATE Position */ 2299 #define USBD_CFG1_STATE_Msk (0x3ul << USBD_CFG1_STATE_Pos) /*!< USBD_T::CFG1: STATE Mask */ 2300 2301 #define USBD_CFG1_DSQSYNC_Pos (7) /*!< USBD_T::CFG1: DSQSYNC Position */ 2302 #define USBD_CFG1_DSQSYNC_Msk (0x1ul << USBD_CFG1_DSQSYNC_Pos) /*!< USBD_T::CFG1: DSQSYNC Mask */ 2303 2304 #define USBD_CFG1_CSTALL_Pos (9) /*!< USBD_T::CFG1: CSTALL Position */ 2305 #define USBD_CFG1_CSTALL_Msk (0x1ul << USBD_CFG1_CSTALL_Pos) /*!< USBD_T::CFG1: CSTALL Mask */ 2306 2307 #define USBD_CFG1_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG1: DBTGACTIVE Position */ 2308 #define USBD_CFG1_DBTGACTIVE_Msk (0x1ul << USBD_CFG1_DBTGACTIVE_Pos) /*!< USBD_T::CFG1: DBTGACTIVE Mask */ 2309 2310 #define USBD_CFG1_DBEN_Pos (11) /*!< USBD_T::CFG1: DBEN Position */ 2311 #define USBD_CFG1_DBEN_Msk (0x1ul << USBD_CFG1_DBEN_Pos) /*!< USBD_T::CFG1: DBEN Mask */ 2312 2313 #define USBD_CFGP1_CLRRDY_Pos (0) /*!< USBD_T::CFGP1: CLRRDY Position */ 2314 #define USBD_CFGP1_CLRRDY_Msk (0x1ul << USBD_CFGP1_CLRRDY_Pos) /*!< USBD_T::CFGP1: CLRRDY Mask */ 2315 2316 #define USBD_CFGP1_SSTALL_Pos (1) /*!< USBD_T::CFGP1: SSTALL Position */ 2317 #define USBD_CFGP1_SSTALL_Msk (0x1ul << USBD_CFGP1_SSTALL_Pos) /*!< USBD_T::CFGP1: SSTALL Mask */ 2318 2319 #define USBD_BUFSEG2_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG2: BUFSEG Position */ 2320 #define USBD_BUFSEG2_BUFSEG_Msk (0xfful << USBD_BUFSEG2_BUFSEG_Pos) /*!< USBD_T::BUFSEG2: BUFSEG Mask */ 2321 2322 #define USBD_MXPLD2_MXPLD_Pos (0) /*!< USBD_T::MXPLD2: MXPLD Position */ 2323 #define USBD_MXPLD2_MXPLD_Msk (0x7fful << USBD_MXPLD2_MXPLD_Pos) /*!< USBD_T::MXPLD2: MXPLD Mask */ 2324 2325 #define USBD_CFG2_EPNUM_Pos (0) /*!< USBD_T::CFG2: EPNUM Position */ 2326 #define USBD_CFG2_EPNUM_Msk (0xful << USBD_CFG2_EPNUM_Pos) /*!< USBD_T::CFG2: EPNUM Mask */ 2327 2328 #define USBD_CFG2_ISOCH_Pos (4) /*!< USBD_T::CFG2: ISOCH Position */ 2329 #define USBD_CFG2_ISOCH_Msk (0x1ul << USBD_CFG2_ISOCH_Pos) /*!< USBD_T::CFG2: ISOCH Mask */ 2330 2331 #define USBD_CFG2_STATE_Pos (5) /*!< USBD_T::CFG2: STATE Position */ 2332 #define USBD_CFG2_STATE_Msk (0x3ul << USBD_CFG2_STATE_Pos) /*!< USBD_T::CFG2: STATE Mask */ 2333 2334 #define USBD_CFG2_DSQSYNC_Pos (7) /*!< USBD_T::CFG2: DSQSYNC Position */ 2335 #define USBD_CFG2_DSQSYNC_Msk (0x1ul << USBD_CFG2_DSQSYNC_Pos) /*!< USBD_T::CFG2: DSQSYNC Mask */ 2336 2337 #define USBD_CFG2_CSTALL_Pos (9) /*!< USBD_T::CFG2: CSTALL Position */ 2338 #define USBD_CFG2_CSTALL_Msk (0x1ul << USBD_CFG2_CSTALL_Pos) /*!< USBD_T::CFG2: CSTALL Mask */ 2339 2340 #define USBD_CFG2_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG2: DBTGACTIVE Position */ 2341 #define USBD_CFG2_DBTGACTIVE_Msk (0x1ul << USBD_CFG2_DBTGACTIVE_Pos) /*!< USBD_T::CFG2: DBTGACTIVE Mask */ 2342 2343 #define USBD_CFG2_DBEN_Pos (11) /*!< USBD_T::CFG2: DBEN Position */ 2344 #define USBD_CFG2_DBEN_Msk (0x1ul << USBD_CFG2_DBEN_Pos) /*!< USBD_T::CFG2: DBEN Mask */ 2345 2346 #define USBD_CFGP2_CLRRDY_Pos (0) /*!< USBD_T::CFGP2: CLRRDY Position */ 2347 #define USBD_CFGP2_CLRRDY_Msk (0x1ul << USBD_CFGP2_CLRRDY_Pos) /*!< USBD_T::CFGP2: CLRRDY Mask */ 2348 2349 #define USBD_CFGP2_SSTALL_Pos (1) /*!< USBD_T::CFGP2: SSTALL Position */ 2350 #define USBD_CFGP2_SSTALL_Msk (0x1ul << USBD_CFGP2_SSTALL_Pos) /*!< USBD_T::CFGP2: SSTALL Mask */ 2351 2352 #define USBD_BUFSEG3_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG3: BUFSEG Position */ 2353 #define USBD_BUFSEG3_BUFSEG_Msk (0xfful << USBD_BUFSEG3_BUFSEG_Pos) /*!< USBD_T::BUFSEG3: BUFSEG Mask */ 2354 2355 #define USBD_MXPLD3_MXPLD_Pos (0) /*!< USBD_T::MXPLD3: MXPLD Position */ 2356 #define USBD_MXPLD3_MXPLD_Msk (0x7fful << USBD_MXPLD3_MXPLD_Pos) /*!< USBD_T::MXPLD3: MXPLD Mask */ 2357 2358 #define USBD_CFG3_EPNUM_Pos (0) /*!< USBD_T::CFG3: EPNUM Position */ 2359 #define USBD_CFG3_EPNUM_Msk (0xful << USBD_CFG3_EPNUM_Pos) /*!< USBD_T::CFG3: EPNUM Mask */ 2360 2361 #define USBD_CFG3_ISOCH_Pos (4) /*!< USBD_T::CFG3: ISOCH Position */ 2362 #define USBD_CFG3_ISOCH_Msk (0x1ul << USBD_CFG3_ISOCH_Pos) /*!< USBD_T::CFG3: ISOCH Mask */ 2363 2364 #define USBD_CFG3_STATE_Pos (5) /*!< USBD_T::CFG3: STATE Position */ 2365 #define USBD_CFG3_STATE_Msk (0x3ul << USBD_CFG3_STATE_Pos) /*!< USBD_T::CFG3: STATE Mask */ 2366 2367 #define USBD_CFG3_DSQSYNC_Pos (7) /*!< USBD_T::CFG3: DSQSYNC Position */ 2368 #define USBD_CFG3_DSQSYNC_Msk (0x1ul << USBD_CFG3_DSQSYNC_Pos) /*!< USBD_T::CFG3: DSQSYNC Mask */ 2369 2370 #define USBD_CFG3_CSTALL_Pos (9) /*!< USBD_T::CFG3: CSTALL Position */ 2371 #define USBD_CFG3_CSTALL_Msk (0x1ul << USBD_CFG3_CSTALL_Pos) /*!< USBD_T::CFG3: CSTALL Mask */ 2372 2373 #define USBD_CFG3_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG3: DBTGACTIVE Position */ 2374 #define USBD_CFG3_DBTGACTIVE_Msk (0x1ul << USBD_CFG3_DBTGACTIVE_Pos) /*!< USBD_T::CFG3: DBTGACTIVE Mask */ 2375 2376 #define USBD_CFG3_DBEN_Pos (11) /*!< USBD_T::CFG3: DBEN Position */ 2377 #define USBD_CFG3_DBEN_Msk (0x1ul << USBD_CFG3_DBEN_Pos) /*!< USBD_T::CFG3: DBEN Mask */ 2378 2379 #define USBD_CFGP3_CLRRDY_Pos (0) /*!< USBD_T::CFGP3: CLRRDY Position */ 2380 #define USBD_CFGP3_CLRRDY_Msk (0x1ul << USBD_CFGP3_CLRRDY_Pos) /*!< USBD_T::CFGP3: CLRRDY Mask */ 2381 2382 #define USBD_CFGP3_SSTALL_Pos (1) /*!< USBD_T::CFGP3: SSTALL Position */ 2383 #define USBD_CFGP3_SSTALL_Msk (0x1ul << USBD_CFGP3_SSTALL_Pos) /*!< USBD_T::CFGP3: SSTALL Mask */ 2384 2385 #define USBD_BUFSEG4_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG4: BUFSEG Position */ 2386 #define USBD_BUFSEG4_BUFSEG_Msk (0xfful << USBD_BUFSEG4_BUFSEG_Pos) /*!< USBD_T::BUFSEG4: BUFSEG Mask */ 2387 2388 #define USBD_MXPLD4_MXPLD_Pos (0) /*!< USBD_T::MXPLD4: MXPLD Position */ 2389 #define USBD_MXPLD4_MXPLD_Msk (0x7fful << USBD_MXPLD4_MXPLD_Pos) /*!< USBD_T::MXPLD4: MXPLD Mask */ 2390 2391 #define USBD_CFG4_EPNUM_Pos (0) /*!< USBD_T::CFG4: EPNUM Position */ 2392 #define USBD_CFG4_EPNUM_Msk (0xful << USBD_CFG4_EPNUM_Pos) /*!< USBD_T::CFG4: EPNUM Mask */ 2393 2394 #define USBD_CFG4_ISOCH_Pos (4) /*!< USBD_T::CFG4: ISOCH Position */ 2395 #define USBD_CFG4_ISOCH_Msk (0x1ul << USBD_CFG4_ISOCH_Pos) /*!< USBD_T::CFG4: ISOCH Mask */ 2396 2397 #define USBD_CFG4_STATE_Pos (5) /*!< USBD_T::CFG4: STATE Position */ 2398 #define USBD_CFG4_STATE_Msk (0x3ul << USBD_CFG4_STATE_Pos) /*!< USBD_T::CFG4: STATE Mask */ 2399 2400 #define USBD_CFG4_DSQSYNC_Pos (7) /*!< USBD_T::CFG4: DSQSYNC Position */ 2401 #define USBD_CFG4_DSQSYNC_Msk (0x1ul << USBD_CFG4_DSQSYNC_Pos) /*!< USBD_T::CFG4: DSQSYNC Mask */ 2402 2403 #define USBD_CFG4_CSTALL_Pos (9) /*!< USBD_T::CFG4: CSTALL Position */ 2404 #define USBD_CFG4_CSTALL_Msk (0x1ul << USBD_CFG4_CSTALL_Pos) /*!< USBD_T::CFG4: CSTALL Mask */ 2405 2406 #define USBD_CFG4_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG4: DBTGACTIVE Position */ 2407 #define USBD_CFG4_DBTGACTIVE_Msk (0x1ul << USBD_CFG4_DBTGACTIVE_Pos) /*!< USBD_T::CFG4: DBTGACTIVE Mask */ 2408 2409 #define USBD_CFG4_DBEN_Pos (11) /*!< USBD_T::CFG4: DBEN Position */ 2410 #define USBD_CFG4_DBEN_Msk (0x1ul << USBD_CFG4_DBEN_Pos) /*!< USBD_T::CFG4: DBEN Mask */ 2411 2412 #define USBD_CFGP4_CLRRDY_Pos (0) /*!< USBD_T::CFGP4: CLRRDY Position */ 2413 #define USBD_CFGP4_CLRRDY_Msk (0x1ul << USBD_CFGP4_CLRRDY_Pos) /*!< USBD_T::CFGP4: CLRRDY Mask */ 2414 2415 #define USBD_CFGP4_SSTALL_Pos (1) /*!< USBD_T::CFGP4: SSTALL Position */ 2416 #define USBD_CFGP4_SSTALL_Msk (0x1ul << USBD_CFGP4_SSTALL_Pos) /*!< USBD_T::CFGP4: SSTALL Mask */ 2417 2418 #define USBD_BUFSEG5_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG5: BUFSEG Position */ 2419 #define USBD_BUFSEG5_BUFSEG_Msk (0xfful << USBD_BUFSEG5_BUFSEG_Pos) /*!< USBD_T::BUFSEG5: BUFSEG Mask */ 2420 2421 #define USBD_MXPLD5_MXPLD_Pos (0) /*!< USBD_T::MXPLD5: MXPLD Position */ 2422 #define USBD_MXPLD5_MXPLD_Msk (0x7fful << USBD_MXPLD5_MXPLD_Pos) /*!< USBD_T::MXPLD5: MXPLD Mask */ 2423 2424 #define USBD_CFG5_EPNUM_Pos (0) /*!< USBD_T::CFG5: EPNUM Position */ 2425 #define USBD_CFG5_EPNUM_Msk (0xful << USBD_CFG5_EPNUM_Pos) /*!< USBD_T::CFG5: EPNUM Mask */ 2426 2427 #define USBD_CFG5_ISOCH_Pos (4) /*!< USBD_T::CFG5: ISOCH Position */ 2428 #define USBD_CFG5_ISOCH_Msk (0x1ul << USBD_CFG5_ISOCH_Pos) /*!< USBD_T::CFG5: ISOCH Mask */ 2429 2430 #define USBD_CFG5_STATE_Pos (5) /*!< USBD_T::CFG5: STATE Position */ 2431 #define USBD_CFG5_STATE_Msk (0x3ul << USBD_CFG5_STATE_Pos) /*!< USBD_T::CFG5: STATE Mask */ 2432 2433 #define USBD_CFG5_DSQSYNC_Pos (7) /*!< USBD_T::CFG5: DSQSYNC Position */ 2434 #define USBD_CFG5_DSQSYNC_Msk (0x1ul << USBD_CFG5_DSQSYNC_Pos) /*!< USBD_T::CFG5: DSQSYNC Mask */ 2435 2436 #define USBD_CFG5_CSTALL_Pos (9) /*!< USBD_T::CFG5: CSTALL Position */ 2437 #define USBD_CFG5_CSTALL_Msk (0x1ul << USBD_CFG5_CSTALL_Pos) /*!< USBD_T::CFG5: CSTALL Mask */ 2438 2439 #define USBD_CFG5_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG5: DBTGACTIVE Position */ 2440 #define USBD_CFG5_DBTGACTIVE_Msk (0x1ul << USBD_CFG5_DBTGACTIVE_Pos) /*!< USBD_T::CFG5: DBTGACTIVE Mask */ 2441 2442 #define USBD_CFG5_DBEN_Pos (11) /*!< USBD_T::CFG5: DBEN Position */ 2443 #define USBD_CFG5_DBEN_Msk (0x1ul << USBD_CFG5_DBEN_Pos) /*!< USBD_T::CFG5: DBEN Mask */ 2444 2445 #define USBD_CFGP5_CLRRDY_Pos (0) /*!< USBD_T::CFGP5: CLRRDY Position */ 2446 #define USBD_CFGP5_CLRRDY_Msk (0x1ul << USBD_CFGP5_CLRRDY_Pos) /*!< USBD_T::CFGP5: CLRRDY Mask */ 2447 2448 #define USBD_CFGP5_SSTALL_Pos (1) /*!< USBD_T::CFGP5: SSTALL Position */ 2449 #define USBD_CFGP5_SSTALL_Msk (0x1ul << USBD_CFGP5_SSTALL_Pos) /*!< USBD_T::CFGP5: SSTALL Mask */ 2450 2451 #define USBD_BUFSEG6_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG6: BUFSEG Position */ 2452 #define USBD_BUFSEG6_BUFSEG_Msk (0xfful << USBD_BUFSEG6_BUFSEG_Pos) /*!< USBD_T::BUFSEG6: BUFSEG Mask */ 2453 2454 #define USBD_MXPLD6_MXPLD_Pos (0) /*!< USBD_T::MXPLD6: MXPLD Position */ 2455 #define USBD_MXPLD6_MXPLD_Msk (0x7fful << USBD_MXPLD6_MXPLD_Pos) /*!< USBD_T::MXPLD6: MXPLD Mask */ 2456 2457 #define USBD_CFG6_EPNUM_Pos (0) /*!< USBD_T::CFG6: EPNUM Position */ 2458 #define USBD_CFG6_EPNUM_Msk (0xful << USBD_CFG6_EPNUM_Pos) /*!< USBD_T::CFG6: EPNUM Mask */ 2459 2460 #define USBD_CFG6_ISOCH_Pos (4) /*!< USBD_T::CFG6: ISOCH Position */ 2461 #define USBD_CFG6_ISOCH_Msk (0x1ul << USBD_CFG6_ISOCH_Pos) /*!< USBD_T::CFG6: ISOCH Mask */ 2462 2463 #define USBD_CFG6_STATE_Pos (5) /*!< USBD_T::CFG6: STATE Position */ 2464 #define USBD_CFG6_STATE_Msk (0x3ul << USBD_CFG6_STATE_Pos) /*!< USBD_T::CFG6: STATE Mask */ 2465 2466 #define USBD_CFG6_DSQSYNC_Pos (7) /*!< USBD_T::CFG6: DSQSYNC Position */ 2467 #define USBD_CFG6_DSQSYNC_Msk (0x1ul << USBD_CFG6_DSQSYNC_Pos) /*!< USBD_T::CFG6: DSQSYNC Mask */ 2468 2469 #define USBD_CFG6_CSTALL_Pos (9) /*!< USBD_T::CFG6: CSTALL Position */ 2470 #define USBD_CFG6_CSTALL_Msk (0x1ul << USBD_CFG6_CSTALL_Pos) /*!< USBD_T::CFG6: CSTALL Mask */ 2471 2472 #define USBD_CFG6_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG6: DBTGACTIVE Position */ 2473 #define USBD_CFG6_DBTGACTIVE_Msk (0x1ul << USBD_CFG6_DBTGACTIVE_Pos) /*!< USBD_T::CFG6: DBTGACTIVE Mask */ 2474 2475 #define USBD_CFG6_DBEN_Pos (11) /*!< USBD_T::CFG6: DBEN Position */ 2476 #define USBD_CFG6_DBEN_Msk (0x1ul << USBD_CFG6_DBEN_Pos) /*!< USBD_T::CFG6: DBEN Mask */ 2477 2478 #define USBD_CFGP6_CLRRDY_Pos (0) /*!< USBD_T::CFGP6: CLRRDY Position */ 2479 #define USBD_CFGP6_CLRRDY_Msk (0x1ul << USBD_CFGP6_CLRRDY_Pos) /*!< USBD_T::CFGP6: CLRRDY Mask */ 2480 2481 #define USBD_CFGP6_SSTALL_Pos (1) /*!< USBD_T::CFGP6: SSTALL Position */ 2482 #define USBD_CFGP6_SSTALL_Msk (0x1ul << USBD_CFGP6_SSTALL_Pos) /*!< USBD_T::CFGP6: SSTALL Mask */ 2483 2484 #define USBD_BUFSEG7_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG7: BUFSEG Position */ 2485 #define USBD_BUFSEG7_BUFSEG_Msk (0xfful << USBD_BUFSEG7_BUFSEG_Pos) /*!< USBD_T::BUFSEG7: BUFSEG Mask */ 2486 2487 #define USBD_MXPLD7_MXPLD_Pos (0) /*!< USBD_T::MXPLD7: MXPLD Position */ 2488 #define USBD_MXPLD7_MXPLD_Msk (0x7fful << USBD_MXPLD7_MXPLD_Pos) /*!< USBD_T::MXPLD7: MXPLD Mask */ 2489 2490 #define USBD_CFG7_EPNUM_Pos (0) /*!< USBD_T::CFG7: EPNUM Position */ 2491 #define USBD_CFG7_EPNUM_Msk (0xful << USBD_CFG7_EPNUM_Pos) /*!< USBD_T::CFG7: EPNUM Mask */ 2492 2493 #define USBD_CFG7_ISOCH_Pos (4) /*!< USBD_T::CFG7: ISOCH Position */ 2494 #define USBD_CFG7_ISOCH_Msk (0x1ul << USBD_CFG7_ISOCH_Pos) /*!< USBD_T::CFG7: ISOCH Mask */ 2495 2496 #define USBD_CFG7_STATE_Pos (5) /*!< USBD_T::CFG7: STATE Position */ 2497 #define USBD_CFG7_STATE_Msk (0x3ul << USBD_CFG7_STATE_Pos) /*!< USBD_T::CFG7: STATE Mask */ 2498 2499 #define USBD_CFG7_DSQSYNC_Pos (7) /*!< USBD_T::CFG7: DSQSYNC Position */ 2500 #define USBD_CFG7_DSQSYNC_Msk (0x1ul << USBD_CFG7_DSQSYNC_Pos) /*!< USBD_T::CFG7: DSQSYNC Mask */ 2501 2502 #define USBD_CFG7_CSTALL_Pos (9) /*!< USBD_T::CFG7: CSTALL Position */ 2503 #define USBD_CFG7_CSTALL_Msk (0x1ul << USBD_CFG7_CSTALL_Pos) /*!< USBD_T::CFG7: CSTALL Mask */ 2504 2505 #define USBD_CFG7_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG7: DBTGACTIVE Position */ 2506 #define USBD_CFG7_DBTGACTIVE_Msk (0x1ul << USBD_CFG7_DBTGACTIVE_Pos) /*!< USBD_T::CFG7: DBTGACTIVE Mask */ 2507 2508 #define USBD_CFG7_DBEN_Pos (11) /*!< USBD_T::CFG7: DBEN Position */ 2509 #define USBD_CFG7_DBEN_Msk (0x1ul << USBD_CFG7_DBEN_Pos) /*!< USBD_T::CFG7: DBEN Mask */ 2510 2511 #define USBD_CFGP7_CLRRDY_Pos (0) /*!< USBD_T::CFGP7: CLRRDY Position */ 2512 #define USBD_CFGP7_CLRRDY_Msk (0x1ul << USBD_CFGP7_CLRRDY_Pos) /*!< USBD_T::CFGP7: CLRRDY Mask */ 2513 2514 #define USBD_CFGP7_SSTALL_Pos (1) /*!< USBD_T::CFGP7: SSTALL Position */ 2515 #define USBD_CFGP7_SSTALL_Msk (0x1ul << USBD_CFGP7_SSTALL_Pos) /*!< USBD_T::CFGP7: SSTALL Mask */ 2516 2517 #define USBD_BUFSEG8_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG8: BUFSEG Position */ 2518 #define USBD_BUFSEG8_BUFSEG_Msk (0xfful << USBD_BUFSEG8_BUFSEG_Pos) /*!< USBD_T::BUFSEG8: BUFSEG Mask */ 2519 2520 #define USBD_MXPLD8_MXPLD_Pos (0) /*!< USBD_T::MXPLD8: MXPLD Position */ 2521 #define USBD_MXPLD8_MXPLD_Msk (0x7fful << USBD_MXPLD8_MXPLD_Pos) /*!< USBD_T::MXPLD8: MXPLD Mask */ 2522 2523 #define USBD_CFG8_EPNUM_Pos (0) /*!< USBD_T::CFG8: EPNUM Position */ 2524 #define USBD_CFG8_EPNUM_Msk (0xful << USBD_CFG8_EPNUM_Pos) /*!< USBD_T::CFG8: EPNUM Mask */ 2525 2526 #define USBD_CFG8_ISOCH_Pos (4) /*!< USBD_T::CFG8: ISOCH Position */ 2527 #define USBD_CFG8_ISOCH_Msk (0x1ul << USBD_CFG8_ISOCH_Pos) /*!< USBD_T::CFG8: ISOCH Mask */ 2528 2529 #define USBD_CFG8_STATE_Pos (5) /*!< USBD_T::CFG8: STATE Position */ 2530 #define USBD_CFG8_STATE_Msk (0x3ul << USBD_CFG8_STATE_Pos) /*!< USBD_T::CFG8: STATE Mask */ 2531 2532 #define USBD_CFG8_DSQSYNC_Pos (7) /*!< USBD_T::CFG8: DSQSYNC Position */ 2533 #define USBD_CFG8_DSQSYNC_Msk (0x1ul << USBD_CFG8_DSQSYNC_Pos) /*!< USBD_T::CFG8: DSQSYNC Mask */ 2534 2535 #define USBD_CFG8_CSTALL_Pos (9) /*!< USBD_T::CFG8: CSTALL Position */ 2536 #define USBD_CFG8_CSTALL_Msk (0x1ul << USBD_CFG8_CSTALL_Pos) /*!< USBD_T::CFG8: CSTALL Mask */ 2537 2538 #define USBD_CFG8_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG8: DBTGACTIVE Position */ 2539 #define USBD_CFG8_DBTGACTIVE_Msk (0x1ul << USBD_CFG8_DBTGACTIVE_Pos) /*!< USBD_T::CFG8: DBTGACTIVE Mask */ 2540 2541 #define USBD_CFG8_DBEN_Pos (11) /*!< USBD_T::CFG8: DBEN Position */ 2542 #define USBD_CFG8_DBEN_Msk (0x1ul << USBD_CFG8_DBEN_Pos) /*!< USBD_T::CFG8: DBEN Mask */ 2543 2544 #define USBD_CFGP8_CLRRDY_Pos (0) /*!< USBD_T::CFGP8: CLRRDY Position */ 2545 #define USBD_CFGP8_CLRRDY_Msk (0x1ul << USBD_CFGP8_CLRRDY_Pos) /*!< USBD_T::CFGP8: CLRRDY Mask */ 2546 2547 #define USBD_CFGP8_SSTALL_Pos (1) /*!< USBD_T::CFGP8: SSTALL Position */ 2548 #define USBD_CFGP8_SSTALL_Msk (0x1ul << USBD_CFGP8_SSTALL_Pos) /*!< USBD_T::CFGP8: SSTALL Mask */ 2549 2550 #define USBD_BUFSEG9_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG9: BUFSEG Position */ 2551 #define USBD_BUFSEG9_BUFSEG_Msk (0xfful << USBD_BUFSEG9_BUFSEG_Pos) /*!< USBD_T::BUFSEG9: BUFSEG Mask */ 2552 2553 #define USBD_MXPLD9_MXPLD_Pos (0) /*!< USBD_T::MXPLD9: MXPLD Position */ 2554 #define USBD_MXPLD9_MXPLD_Msk (0x7fful << USBD_MXPLD9_MXPLD_Pos) /*!< USBD_T::MXPLD9: MXPLD Mask */ 2555 2556 #define USBD_CFG9_EPNUM_Pos (0) /*!< USBD_T::CFG9: EPNUM Position */ 2557 #define USBD_CFG9_EPNUM_Msk (0xful << USBD_CFG9_EPNUM_Pos) /*!< USBD_T::CFG9: EPNUM Mask */ 2558 2559 #define USBD_CFG9_ISOCH_Pos (4) /*!< USBD_T::CFG9: ISOCH Position */ 2560 #define USBD_CFG9_ISOCH_Msk (0x1ul << USBD_CFG9_ISOCH_Pos) /*!< USBD_T::CFG9: ISOCH Mask */ 2561 2562 #define USBD_CFG9_STATE_Pos (5) /*!< USBD_T::CFG9: STATE Position */ 2563 #define USBD_CFG9_STATE_Msk (0x3ul << USBD_CFG9_STATE_Pos) /*!< USBD_T::CFG9: STATE Mask */ 2564 2565 #define USBD_CFG9_DSQSYNC_Pos (7) /*!< USBD_T::CFG9: DSQSYNC Position */ 2566 #define USBD_CFG9_DSQSYNC_Msk (0x1ul << USBD_CFG9_DSQSYNC_Pos) /*!< USBD_T::CFG9: DSQSYNC Mask */ 2567 2568 #define USBD_CFG9_CSTALL_Pos (9) /*!< USBD_T::CFG9: CSTALL Position */ 2569 #define USBD_CFG9_CSTALL_Msk (0x1ul << USBD_CFG9_CSTALL_Pos) /*!< USBD_T::CFG9: CSTALL Mask */ 2570 2571 #define USBD_CFG9_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG9: DBTGACTIVE Position */ 2572 #define USBD_CFG9_DBTGACTIVE_Msk (0x1ul << USBD_CFG9_DBTGACTIVE_Pos) /*!< USBD_T::CFG9: DBTGACTIVE Mask */ 2573 2574 #define USBD_CFG9_DBEN_Pos (11) /*!< USBD_T::CFG9: DBEN Position */ 2575 #define USBD_CFG9_DBEN_Msk (0x1ul << USBD_CFG9_DBEN_Pos) /*!< USBD_T::CFG9: DBEN Mask */ 2576 2577 #define USBD_CFGP9_CLRRDY_Pos (0) /*!< USBD_T::CFGP9: CLRRDY Position */ 2578 #define USBD_CFGP9_CLRRDY_Msk (0x1ul << USBD_CFGP9_CLRRDY_Pos) /*!< USBD_T::CFGP9: CLRRDY Mask */ 2579 2580 #define USBD_CFGP9_SSTALL_Pos (1) /*!< USBD_T::CFGP9: SSTALL Position */ 2581 #define USBD_CFGP9_SSTALL_Msk (0x1ul << USBD_CFGP9_SSTALL_Pos) /*!< USBD_T::CFGP9: SSTALL Mask */ 2582 2583 #define USBD_BUFSEG10_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG10: BUFSEG Position */ 2584 #define USBD_BUFSEG10_BUFSEG_Msk (0xfful << USBD_BUFSEG10_BUFSEG_Pos) /*!< USBD_T::BUFSEG10: BUFSEG Mask */ 2585 2586 #define USBD_MXPLD10_MXPLD_Pos (0) /*!< USBD_T::MXPLD10: MXPLD Position */ 2587 #define USBD_MXPLD10_MXPLD_Msk (0x7fful << USBD_MXPLD10_MXPLD_Pos) /*!< USBD_T::MXPLD10: MXPLD Mask */ 2588 2589 #define USBD_CFG10_EPNUM_Pos (0) /*!< USBD_T::CFG10: EPNUM Position */ 2590 #define USBD_CFG10_EPNUM_Msk (0xful << USBD_CFG10_EPNUM_Pos) /*!< USBD_T::CFG10: EPNUM Mask */ 2591 2592 #define USBD_CFG10_ISOCH_Pos (4) /*!< USBD_T::CFG10: ISOCH Position */ 2593 #define USBD_CFG10_ISOCH_Msk (0x1ul << USBD_CFG10_ISOCH_Pos) /*!< USBD_T::CFG10: ISOCH Mask */ 2594 2595 #define USBD_CFG10_STATE_Pos (5) /*!< USBD_T::CFG10: STATE Position */ 2596 #define USBD_CFG10_STATE_Msk (0x3ul << USBD_CFG10_STATE_Pos) /*!< USBD_T::CFG10: STATE Mask */ 2597 2598 #define USBD_CFG10_DSQSYNC_Pos (7) /*!< USBD_T::CFG10: DSQSYNC Position */ 2599 #define USBD_CFG10_DSQSYNC_Msk (0x1ul << USBD_CFG10_DSQSYNC_Pos) /*!< USBD_T::CFG10: DSQSYNC Mask */ 2600 2601 #define USBD_CFG10_CSTALL_Pos (9) /*!< USBD_T::CFG10: CSTALL Position */ 2602 #define USBD_CFG10_CSTALL_Msk (0x1ul << USBD_CFG10_CSTALL_Pos) /*!< USBD_T::CFG10: CSTALL Mask */ 2603 2604 #define USBD_CFG10_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG10: DBTGACTIVE Position */ 2605 #define USBD_CFG10_DBTGACTIVE_Msk (0x1ul << USBD_CFG10_DBTGACTIVE_Pos) /*!< USBD_T::CFG10: DBTGACTIVE Mask */ 2606 2607 #define USBD_CFG10_DBEN_Pos (11) /*!< USBD_T::CFG10: DBEN Position */ 2608 #define USBD_CFG10_DBEN_Msk (0x1ul << USBD_CFG10_DBEN_Pos) /*!< USBD_T::CFG10: DBEN Mask */ 2609 2610 #define USBD_CFGP10_CLRRDY_Pos (0) /*!< USBD_T::CFGP10: CLRRDY Position */ 2611 #define USBD_CFGP10_CLRRDY_Msk (0x1ul << USBD_CFGP10_CLRRDY_Pos) /*!< USBD_T::CFGP10: CLRRDY Mask */ 2612 2613 #define USBD_CFGP10_SSTALL_Pos (1) /*!< USBD_T::CFGP10: SSTALL Position */ 2614 #define USBD_CFGP10_SSTALL_Msk (0x1ul << USBD_CFGP10_SSTALL_Pos) /*!< USBD_T::CFGP10: SSTALL Mask */ 2615 2616 #define USBD_BUFSEG11_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG11: BUFSEG Position */ 2617 #define USBD_BUFSEG11_BUFSEG_Msk (0xfful << USBD_BUFSEG11_BUFSEG_Pos) /*!< USBD_T::BUFSEG11: BUFSEG Mask */ 2618 2619 #define USBD_MXPLD11_MXPLD_Pos (0) /*!< USBD_T::MXPLD11: MXPLD Position */ 2620 #define USBD_MXPLD11_MXPLD_Msk (0x7fful << USBD_MXPLD11_MXPLD_Pos) /*!< USBD_T::MXPLD11: MXPLD Mask */ 2621 2622 #define USBD_CFG11_EPNUM_Pos (0) /*!< USBD_T::CFG11: EPNUM Position */ 2623 #define USBD_CFG11_EPNUM_Msk (0xful << USBD_CFG11_EPNUM_Pos) /*!< USBD_T::CFG11: EPNUM Mask */ 2624 2625 #define USBD_CFG11_ISOCH_Pos (4) /*!< USBD_T::CFG11: ISOCH Position */ 2626 #define USBD_CFG11_ISOCH_Msk (0x1ul << USBD_CFG11_ISOCH_Pos) /*!< USBD_T::CFG11: ISOCH Mask */ 2627 2628 #define USBD_CFG11_STATE_Pos (5) /*!< USBD_T::CFG11: STATE Position */ 2629 #define USBD_CFG11_STATE_Msk (0x3ul << USBD_CFG11_STATE_Pos) /*!< USBD_T::CFG11: STATE Mask */ 2630 2631 #define USBD_CFG11_DSQSYNC_Pos (7) /*!< USBD_T::CFG11: DSQSYNC Position */ 2632 #define USBD_CFG11_DSQSYNC_Msk (0x1ul << USBD_CFG11_DSQSYNC_Pos) /*!< USBD_T::CFG11: DSQSYNC Mask */ 2633 2634 #define USBD_CFG11_CSTALL_Pos (9) /*!< USBD_T::CFG11: CSTALL Position */ 2635 #define USBD_CFG11_CSTALL_Msk (0x1ul << USBD_CFG11_CSTALL_Pos) /*!< USBD_T::CFG11: CSTALL Mask */ 2636 2637 #define USBD_CFG11_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG11: DBTGACTIVE Position */ 2638 #define USBD_CFG11_DBTGACTIVE_Msk (0x1ul << USBD_CFG11_DBTGACTIVE_Pos) /*!< USBD_T::CFG11: DBTGACTIVE Mask */ 2639 2640 #define USBD_CFG11_DBEN_Pos (11) /*!< USBD_T::CFG11: DBEN Position */ 2641 #define USBD_CFG11_DBEN_Msk (0x1ul << USBD_CFG11_DBEN_Pos) /*!< USBD_T::CFG11: DBEN Mask */ 2642 2643 #define USBD_CFGP11_CLRRDY_Pos (0) /*!< USBD_T::CFGP11: CLRRDY Position */ 2644 #define USBD_CFGP11_CLRRDY_Msk (0x1ul << USBD_CFGP11_CLRRDY_Pos) /*!< USBD_T::CFGP11: CLRRDY Mask */ 2645 2646 #define USBD_CFGP11_SSTALL_Pos (1) /*!< USBD_T::CFGP11: SSTALL Position */ 2647 #define USBD_CFGP11_SSTALL_Msk (0x1ul << USBD_CFGP11_SSTALL_Pos) /*!< USBD_T::CFGP11: SSTALL Mask */ 2648 2649 #define USBD_BUFSEG12_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG12: BUFSEG Position */ 2650 #define USBD_BUFSEG12_BUFSEG_Msk (0xfful << USBD_BUFSEG12_BUFSEG_Pos) /*!< USBD_T::BUFSEG12: BUFSEG Mask */ 2651 2652 #define USBD_MXPLD12_MXPLD_Pos (0) /*!< USBD_T::MXPLD12: MXPLD Position */ 2653 #define USBD_MXPLD12_MXPLD_Msk (0x7fful << USBD_MXPLD12_MXPLD_Pos) /*!< USBD_T::MXPLD12: MXPLD Mask */ 2654 2655 #define USBD_CFG12_EPNUM_Pos (0) /*!< USBD_T::CFG12: EPNUM Position */ 2656 #define USBD_CFG12_EPNUM_Msk (0xful << USBD_CFG12_EPNUM_Pos) /*!< USBD_T::CFG12: EPNUM Mask */ 2657 2658 #define USBD_CFG12_ISOCH_Pos (4) /*!< USBD_T::CFG12: ISOCH Position */ 2659 #define USBD_CFG12_ISOCH_Msk (0x1ul << USBD_CFG12_ISOCH_Pos) /*!< USBD_T::CFG12: ISOCH Mask */ 2660 2661 #define USBD_CFG12_STATE_Pos (5) /*!< USBD_T::CFG12: STATE Position */ 2662 #define USBD_CFG12_STATE_Msk (0x3ul << USBD_CFG12_STATE_Pos) /*!< USBD_T::CFG12: STATE Mask */ 2663 2664 #define USBD_CFG12_DSQSYNC_Pos (7) /*!< USBD_T::CFG12: DSQSYNC Position */ 2665 #define USBD_CFG12_DSQSYNC_Msk (0x1ul << USBD_CFG12_DSQSYNC_Pos) /*!< USBD_T::CFG12: DSQSYNC Mask */ 2666 2667 #define USBD_CFG12_CSTALL_Pos (9) /*!< USBD_T::CFG12: CSTALL Position */ 2668 #define USBD_CFG12_CSTALL_Msk (0x1ul << USBD_CFG12_CSTALL_Pos) /*!< USBD_T::CFG12: CSTALL Mask */ 2669 2670 #define USBD_CFG12_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG12: DBTGACTIVE Position */ 2671 #define USBD_CFG12_DBTGACTIVE_Msk (0x1ul << USBD_CFG12_DBTGACTIVE_Pos) /*!< USBD_T::CFG12: DBTGACTIVE Mask */ 2672 2673 #define USBD_CFG12_DBEN_Pos (11) /*!< USBD_T::CFG12: DBEN Position */ 2674 #define USBD_CFG12_DBEN_Msk (0x1ul << USBD_CFG12_DBEN_Pos) /*!< USBD_T::CFG12: DBEN Mask */ 2675 2676 #define USBD_CFGP12_CLRRDY_Pos (0) /*!< USBD_T::CFGP12: CLRRDY Position */ 2677 #define USBD_CFGP12_CLRRDY_Msk (0x1ul << USBD_CFGP12_CLRRDY_Pos) /*!< USBD_T::CFGP12: CLRRDY Mask */ 2678 2679 #define USBD_CFGP12_SSTALL_Pos (1) /*!< USBD_T::CFGP12: SSTALL Position */ 2680 #define USBD_CFGP12_SSTALL_Msk (0x1ul << USBD_CFGP12_SSTALL_Pos) /*!< USBD_T::CFGP12: SSTALL Mask */ 2681 2682 #define USBD_BUFSEG13_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG13: BUFSEG Position */ 2683 #define USBD_BUFSEG13_BUFSEG_Msk (0xfful << USBD_BUFSEG13_BUFSEG_Pos) /*!< USBD_T::BUFSEG13: BUFSEG Mask */ 2684 2685 #define USBD_MXPLD13_MXPLD_Pos (0) /*!< USBD_T::MXPLD13: MXPLD Position */ 2686 #define USBD_MXPLD13_MXPLD_Msk (0x7fful << USBD_MXPLD13_MXPLD_Pos) /*!< USBD_T::MXPLD13: MXPLD Mask */ 2687 2688 #define USBD_CFG13_EPNUM_Pos (0) /*!< USBD_T::CFG13: EPNUM Position */ 2689 #define USBD_CFG13_EPNUM_Msk (0xful << USBD_CFG13_EPNUM_Pos) /*!< USBD_T::CFG13: EPNUM Mask */ 2690 2691 #define USBD_CFG13_ISOCH_Pos (4) /*!< USBD_T::CFG13: ISOCH Position */ 2692 #define USBD_CFG13_ISOCH_Msk (0x1ul << USBD_CFG13_ISOCH_Pos) /*!< USBD_T::CFG13: ISOCH Mask */ 2693 2694 #define USBD_CFG13_STATE_Pos (5) /*!< USBD_T::CFG13: STATE Position */ 2695 #define USBD_CFG13_STATE_Msk (0x3ul << USBD_CFG13_STATE_Pos) /*!< USBD_T::CFG13: STATE Mask */ 2696 2697 #define USBD_CFG13_DSQSYNC_Pos (7) /*!< USBD_T::CFG13: DSQSYNC Position */ 2698 #define USBD_CFG13_DSQSYNC_Msk (0x1ul << USBD_CFG13_DSQSYNC_Pos) /*!< USBD_T::CFG13: DSQSYNC Mask */ 2699 2700 #define USBD_CFG13_CSTALL_Pos (9) /*!< USBD_T::CFG13: CSTALL Position */ 2701 #define USBD_CFG13_CSTALL_Msk (0x1ul << USBD_CFG13_CSTALL_Pos) /*!< USBD_T::CFG13: CSTALL Mask */ 2702 2703 #define USBD_CFG13_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG13: DBTGACTIVE Position */ 2704 #define USBD_CFG13_DBTGACTIVE_Msk (0x1ul << USBD_CFG13_DBTGACTIVE_Pos) /*!< USBD_T::CFG13: DBTGACTIVE Mask */ 2705 2706 #define USBD_CFG13_DBEN_Pos (11) /*!< USBD_T::CFG13: DBEN Position */ 2707 #define USBD_CFG13_DBEN_Msk (0x1ul << USBD_CFG13_DBEN_Pos) /*!< USBD_T::CFG13: DBEN Mask */ 2708 2709 #define USBD_CFGP13_CLRRDY_Pos (0) /*!< USBD_T::CFGP13: CLRRDY Position */ 2710 #define USBD_CFGP13_CLRRDY_Msk (0x1ul << USBD_CFGP13_CLRRDY_Pos) /*!< USBD_T::CFGP13: CLRRDY Mask */ 2711 2712 #define USBD_CFGP13_SSTALL_Pos (1) /*!< USBD_T::CFGP13: SSTALL Position */ 2713 #define USBD_CFGP13_SSTALL_Msk (0x1ul << USBD_CFGP13_SSTALL_Pos) /*!< USBD_T::CFGP13: SSTALL Mask */ 2714 2715 #define USBD_BUFSEG14_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG14: BUFSEG Position */ 2716 #define USBD_BUFSEG14_BUFSEG_Msk (0xfful << USBD_BUFSEG14_BUFSEG_Pos) /*!< USBD_T::BUFSEG14: BUFSEG Mask */ 2717 2718 #define USBD_MXPLD14_MXPLD_Pos (0) /*!< USBD_T::MXPLD14: MXPLD Position */ 2719 #define USBD_MXPLD14_MXPLD_Msk (0x7fful << USBD_MXPLD14_MXPLD_Pos) /*!< USBD_T::MXPLD14: MXPLD Mask */ 2720 2721 #define USBD_CFG14_EPNUM_Pos (0) /*!< USBD_T::CFG14: EPNUM Position */ 2722 #define USBD_CFG14_EPNUM_Msk (0xful << USBD_CFG14_EPNUM_Pos) /*!< USBD_T::CFG14: EPNUM Mask */ 2723 2724 #define USBD_CFG14_ISOCH_Pos (4) /*!< USBD_T::CFG14: ISOCH Position */ 2725 #define USBD_CFG14_ISOCH_Msk (0x1ul << USBD_CFG14_ISOCH_Pos) /*!< USBD_T::CFG14: ISOCH Mask */ 2726 2727 #define USBD_CFG14_STATE_Pos (5) /*!< USBD_T::CFG14: STATE Position */ 2728 #define USBD_CFG14_STATE_Msk (0x3ul << USBD_CFG14_STATE_Pos) /*!< USBD_T::CFG14: STATE Mask */ 2729 2730 #define USBD_CFG14_DSQSYNC_Pos (7) /*!< USBD_T::CFG14: DSQSYNC Position */ 2731 #define USBD_CFG14_DSQSYNC_Msk (0x1ul << USBD_CFG14_DSQSYNC_Pos) /*!< USBD_T::CFG14: DSQSYNC Mask */ 2732 2733 #define USBD_CFG14_CSTALL_Pos (9) /*!< USBD_T::CFG14: CSTALL Position */ 2734 #define USBD_CFG14_CSTALL_Msk (0x1ul << USBD_CFG14_CSTALL_Pos) /*!< USBD_T::CFG14: CSTALL Mask */ 2735 2736 #define USBD_CFG14_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG14: DBTGACTIVE Position */ 2737 #define USBD_CFG14_DBTGACTIVE_Msk (0x1ul << USBD_CFG14_DBTGACTIVE_Pos) /*!< USBD_T::CFG14: DBTGACTIVE Mask */ 2738 2739 #define USBD_CFG14_DBEN_Pos (11) /*!< USBD_T::CFG14: DBEN Position */ 2740 #define USBD_CFG14_DBEN_Msk (0x1ul << USBD_CFG14_DBEN_Pos) /*!< USBD_T::CFG14: DBEN Mask */ 2741 2742 #define USBD_CFGP14_CLRRDY_Pos (0) /*!< USBD_T::CFGP14: CLRRDY Position */ 2743 #define USBD_CFGP14_CLRRDY_Msk (0x1ul << USBD_CFGP14_CLRRDY_Pos) /*!< USBD_T::CFGP14: CLRRDY Mask */ 2744 2745 #define USBD_CFGP14_SSTALL_Pos (1) /*!< USBD_T::CFGP14: SSTALL Position */ 2746 #define USBD_CFGP14_SSTALL_Msk (0x1ul << USBD_CFGP14_SSTALL_Pos) /*!< USBD_T::CFGP14: SSTALL Mask */ 2747 2748 #define USBD_BUFSEG15_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG15: BUFSEG Position */ 2749 #define USBD_BUFSEG15_BUFSEG_Msk (0xfful << USBD_BUFSEG15_BUFSEG_Pos) /*!< USBD_T::BUFSEG15: BUFSEG Mask */ 2750 2751 #define USBD_MXPLD15_MXPLD_Pos (0) /*!< USBD_T::MXPLD15: MXPLD Position */ 2752 #define USBD_MXPLD15_MXPLD_Msk (0x7fful << USBD_MXPLD15_MXPLD_Pos) /*!< USBD_T::MXPLD15: MXPLD Mask */ 2753 2754 #define USBD_CFG15_EPNUM_Pos (0) /*!< USBD_T::CFG15: EPNUM Position */ 2755 #define USBD_CFG15_EPNUM_Msk (0xful << USBD_CFG15_EPNUM_Pos) /*!< USBD_T::CFG15: EPNUM Mask */ 2756 2757 #define USBD_CFG15_ISOCH_Pos (4) /*!< USBD_T::CFG15: ISOCH Position */ 2758 #define USBD_CFG15_ISOCH_Msk (0x1ul << USBD_CFG15_ISOCH_Pos) /*!< USBD_T::CFG15: ISOCH Mask */ 2759 2760 #define USBD_CFG15_STATE_Pos (5) /*!< USBD_T::CFG15: STATE Position */ 2761 #define USBD_CFG15_STATE_Msk (0x3ul << USBD_CFG15_STATE_Pos) /*!< USBD_T::CFG15: STATE Mask */ 2762 2763 #define USBD_CFG15_DSQSYNC_Pos (7) /*!< USBD_T::CFG15: DSQSYNC Position */ 2764 #define USBD_CFG15_DSQSYNC_Msk (0x1ul << USBD_CFG15_DSQSYNC_Pos) /*!< USBD_T::CFG15: DSQSYNC Mask */ 2765 2766 #define USBD_CFG15_CSTALL_Pos (9) /*!< USBD_T::CFG15: CSTALL Position */ 2767 #define USBD_CFG15_CSTALL_Msk (0x1ul << USBD_CFG15_CSTALL_Pos) /*!< USBD_T::CFG15: CSTALL Mask */ 2768 2769 #define USBD_CFG15_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG15: DBTGACTIVE Position */ 2770 #define USBD_CFG15_DBTGACTIVE_Msk (0x1ul << USBD_CFG15_DBTGACTIVE_Pos) /*!< USBD_T::CFG15: DBTGACTIVE Mask */ 2771 2772 #define USBD_CFG15_DBEN_Pos (11) /*!< USBD_T::CFG15: DBEN Position */ 2773 #define USBD_CFG15_DBEN_Msk (0x1ul << USBD_CFG15_DBEN_Pos) /*!< USBD_T::CFG15: DBEN Mask */ 2774 2775 #define USBD_CFGP15_CLRRDY_Pos (0) /*!< USBD_T::CFGP15: CLRRDY Position */ 2776 #define USBD_CFGP15_CLRRDY_Msk (0x1ul << USBD_CFGP15_CLRRDY_Pos) /*!< USBD_T::CFGP15: CLRRDY Mask */ 2777 2778 #define USBD_CFGP15_SSTALL_Pos (1) /*!< USBD_T::CFGP15: SSTALL Position */ 2779 #define USBD_CFGP15_SSTALL_Msk (0x1ul << USBD_CFGP15_SSTALL_Pos) /*!< USBD_T::CFGP15: SSTALL Mask */ 2780 2781 #define USBD_BUFSEG16_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG16: BUFSEG Position */ 2782 #define USBD_BUFSEG16_BUFSEG_Msk (0xfful << USBD_BUFSEG16_BUFSEG_Pos) /*!< USBD_T::BUFSEG16: BUFSEG Mask */ 2783 2784 #define USBD_MXPLD16_MXPLD_Pos (0) /*!< USBD_T::MXPLD16: MXPLD Position */ 2785 #define USBD_MXPLD16_MXPLD_Msk (0x7fful << USBD_MXPLD16_MXPLD_Pos) /*!< USBD_T::MXPLD16: MXPLD Mask */ 2786 2787 #define USBD_CFG16_EPNUM_Pos (0) /*!< USBD_T::CFG16: EPNUM Position */ 2788 #define USBD_CFG16_EPNUM_Msk (0xful << USBD_CFG16_EPNUM_Pos) /*!< USBD_T::CFG16: EPNUM Mask */ 2789 2790 #define USBD_CFG16_ISOCH_Pos (4) /*!< USBD_T::CFG16: ISOCH Position */ 2791 #define USBD_CFG16_ISOCH_Msk (0x1ul << USBD_CFG16_ISOCH_Pos) /*!< USBD_T::CFG16: ISOCH Mask */ 2792 2793 #define USBD_CFG16_STATE_Pos (5) /*!< USBD_T::CFG16: STATE Position */ 2794 #define USBD_CFG16_STATE_Msk (0x3ul << USBD_CFG16_STATE_Pos) /*!< USBD_T::CFG16: STATE Mask */ 2795 2796 #define USBD_CFG16_DSQSYNC_Pos (7) /*!< USBD_T::CFG16: DSQSYNC Position */ 2797 #define USBD_CFG16_DSQSYNC_Msk (0x1ul << USBD_CFG16_DSQSYNC_Pos) /*!< USBD_T::CFG16: DSQSYNC Mask */ 2798 2799 #define USBD_CFG16_CSTALL_Pos (9) /*!< USBD_T::CFG16: CSTALL Position */ 2800 #define USBD_CFG16_CSTALL_Msk (0x1ul << USBD_CFG16_CSTALL_Pos) /*!< USBD_T::CFG16: CSTALL Mask */ 2801 2802 #define USBD_CFG16_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG16: DBTGACTIVE Position */ 2803 #define USBD_CFG16_DBTGACTIVE_Msk (0x1ul << USBD_CFG16_DBTGACTIVE_Pos) /*!< USBD_T::CFG16: DBTGACTIVE Mask */ 2804 2805 #define USBD_CFG16_DBEN_Pos (11) /*!< USBD_T::CFG16: DBEN Position */ 2806 #define USBD_CFG16_DBEN_Msk (0x1ul << USBD_CFG16_DBEN_Pos) /*!< USBD_T::CFG16: DBEN Mask */ 2807 2808 #define USBD_CFGP16_CLRRDY_Pos (0) /*!< USBD_T::CFGP16: CLRRDY Position */ 2809 #define USBD_CFGP16_CLRRDY_Msk (0x1ul << USBD_CFGP16_CLRRDY_Pos) /*!< USBD_T::CFGP16: CLRRDY Mask */ 2810 2811 #define USBD_CFGP16_SSTALL_Pos (1) /*!< USBD_T::CFGP16: SSTALL Position */ 2812 #define USBD_CFGP16_SSTALL_Msk (0x1ul << USBD_CFGP16_SSTALL_Pos) /*!< USBD_T::CFGP16: SSTALL Mask */ 2813 2814 #define USBD_BUFSEG17_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG17: BUFSEG Position */ 2815 #define USBD_BUFSEG17_BUFSEG_Msk (0xfful << USBD_BUFSEG17_BUFSEG_Pos) /*!< USBD_T::BUFSEG17: BUFSEG Mask */ 2816 2817 #define USBD_MXPLD17_MXPLD_Pos (0) /*!< USBD_T::MXPLD17: MXPLD Position */ 2818 #define USBD_MXPLD17_MXPLD_Msk (0x7fful << USBD_MXPLD17_MXPLD_Pos) /*!< USBD_T::MXPLD17: MXPLD Mask */ 2819 2820 #define USBD_CFG17_EPNUM_Pos (0) /*!< USBD_T::CFG17: EPNUM Position */ 2821 #define USBD_CFG17_EPNUM_Msk (0xful << USBD_CFG17_EPNUM_Pos) /*!< USBD_T::CFG17: EPNUM Mask */ 2822 2823 #define USBD_CFG17_ISOCH_Pos (4) /*!< USBD_T::CFG17: ISOCH Position */ 2824 #define USBD_CFG17_ISOCH_Msk (0x1ul << USBD_CFG17_ISOCH_Pos) /*!< USBD_T::CFG17: ISOCH Mask */ 2825 2826 #define USBD_CFG17_STATE_Pos (5) /*!< USBD_T::CFG17: STATE Position */ 2827 #define USBD_CFG17_STATE_Msk (0x3ul << USBD_CFG17_STATE_Pos) /*!< USBD_T::CFG17: STATE Mask */ 2828 2829 #define USBD_CFG17_DSQSYNC_Pos (7) /*!< USBD_T::CFG17: DSQSYNC Position */ 2830 #define USBD_CFG17_DSQSYNC_Msk (0x1ul << USBD_CFG17_DSQSYNC_Pos) /*!< USBD_T::CFG17: DSQSYNC Mask */ 2831 2832 #define USBD_CFG17_CSTALL_Pos (9) /*!< USBD_T::CFG17: CSTALL Position */ 2833 #define USBD_CFG17_CSTALL_Msk (0x1ul << USBD_CFG17_CSTALL_Pos) /*!< USBD_T::CFG17: CSTALL Mask */ 2834 2835 #define USBD_CFG17_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG17: DBTGACTIVE Position */ 2836 #define USBD_CFG17_DBTGACTIVE_Msk (0x1ul << USBD_CFG17_DBTGACTIVE_Pos) /*!< USBD_T::CFG17: DBTGACTIVE Mask */ 2837 2838 #define USBD_CFG17_DBEN_Pos (11) /*!< USBD_T::CFG17: DBEN Position */ 2839 #define USBD_CFG17_DBEN_Msk (0x1ul << USBD_CFG17_DBEN_Pos) /*!< USBD_T::CFG17: DBEN Mask */ 2840 2841 #define USBD_CFGP17_CLRRDY_Pos (0) /*!< USBD_T::CFGP17: CLRRDY Position */ 2842 #define USBD_CFGP17_CLRRDY_Msk (0x1ul << USBD_CFGP17_CLRRDY_Pos) /*!< USBD_T::CFGP17: CLRRDY Mask */ 2843 2844 #define USBD_CFGP17_SSTALL_Pos (1) /*!< USBD_T::CFGP17: SSTALL Position */ 2845 #define USBD_CFGP17_SSTALL_Msk (0x1ul << USBD_CFGP17_SSTALL_Pos) /*!< USBD_T::CFGP17: SSTALL Mask */ 2846 2847 #define USBD_BUFSEG18_BUFSEG_Pos (3) /*!< USBD_T::BUFSEG18: BUFSEG Position */ 2848 #define USBD_BUFSEG18_BUFSEG_Msk (0xfful << USBD_BUFSEG18_BUFSEG_Pos) /*!< USBD_T::BUFSEG18: BUFSEG Mask */ 2849 2850 #define USBD_MXPLD18_MXPLD_Pos (0) /*!< USBD_T::MXPLD18: MXPLD Position */ 2851 #define USBD_MXPLD18_MXPLD_Msk (0x7fful << USBD_MXPLD18_MXPLD_Pos) /*!< USBD_T::MXPLD18: MXPLD Mask */ 2852 2853 #define USBD_CFG18_EPNUM_Pos (0) /*!< USBD_T::CFG18: EPNUM Position */ 2854 #define USBD_CFG18_EPNUM_Msk (0xful << USBD_CFG18_EPNUM_Pos) /*!< USBD_T::CFG18: EPNUM Mask */ 2855 2856 #define USBD_CFG18_ISOCH_Pos (4) /*!< USBD_T::CFG18: ISOCH Position */ 2857 #define USBD_CFG18_ISOCH_Msk (0x1ul << USBD_CFG18_ISOCH_Pos) /*!< USBD_T::CFG18: ISOCH Mask */ 2858 2859 #define USBD_CFG18_STATE_Pos (5) /*!< USBD_T::CFG18: STATE Position */ 2860 #define USBD_CFG18_STATE_Msk (0x3ul << USBD_CFG18_STATE_Pos) /*!< USBD_T::CFG18: STATE Mask */ 2861 2862 #define USBD_CFG18_DSQSYNC_Pos (7) /*!< USBD_T::CFG18: DSQSYNC Position */ 2863 #define USBD_CFG18_DSQSYNC_Msk (0x1ul << USBD_CFG18_DSQSYNC_Pos) /*!< USBD_T::CFG18: DSQSYNC Mask */ 2864 2865 #define USBD_CFG18_CSTALL_Pos (9) /*!< USBD_T::CFG18: CSTALL Position */ 2866 #define USBD_CFG18_CSTALL_Msk (0x1ul << USBD_CFG18_CSTALL_Pos) /*!< USBD_T::CFG18: CSTALL Mask */ 2867 2868 #define USBD_CFG18_DBTGACTIVE_Pos (10) /*!< USBD_T::CFG18: DBTGACTIVE Position */ 2869 #define USBD_CFG18_DBTGACTIVE_Msk (0x1ul << USBD_CFG18_DBTGACTIVE_Pos) /*!< USBD_T::CFG18: DBTGACTIVE Mask */ 2870 2871 #define USBD_CFG18_DBEN_Pos (11) /*!< USBD_T::CFG18: DBEN Position */ 2872 #define USBD_CFG18_DBEN_Msk (0x1ul << USBD_CFG18_DBEN_Pos) /*!< USBD_T::CFG18: DBEN Mask */ 2873 2874 #define USBD_CFGP18_CLRRDY_Pos (0) /*!< USBD_T::CFGP18: CLRRDY Position */ 2875 #define USBD_CFGP18_CLRRDY_Msk (0x1ul << USBD_CFGP18_CLRRDY_Pos) /*!< USBD_T::CFGP18: CLRRDY Mask */ 2876 2877 #define USBD_CFGP18_SSTALL_Pos (1) /*!< USBD_T::CFGP18: SSTALL Position */ 2878 #define USBD_CFGP18_SSTALL_Msk (0x1ul << USBD_CFGP18_SSTALL_Pos) /*!< USBD_T::CFGP18: SSTALL Mask */ 2879 2880 /**@}*/ /* USBD_CONST */ 2881 /**@}*/ /* end of USBD register group */ 2882 2883 2884 /**@}*/ /* end of REGISTER group */ 2885