USBD — Universal serial bus device

The USB device (USBD) controller implements a full speed USB device function that meets 2.0 revision of the USB specification.

Figure 1. USB device block diagram
USB device block diagram

Listed here are the main features for USBD:

USB device states

The behavior of a USB device can be modelled through a state diagram.

The USB specification revision 2.0 (see Chapter 9 USB Device Framework) defines a number of states for a USB device, as illustrated below.

Figure 2. Device state diagram
Device state diagram

The device must change state according to host-initiated traffic and USB bus states. It is up to the software to implement a state machine that matches the above definition. To detect the presence or absence of USB supply (VBUS), the POWER chapter defines two events, USBDETECTED and USBREMOVED, which can be used to implement the state machine.

As a general rule when implementing the software, the host behavior shall never be assumed to be predictable. In particular the sequence of commands received during an enumeration. The software shall always react to the current bus conditions or commands sent by the host.

USB terminology

The USB specification defines bus states, rather than logic levels on the D+ and D- lines.

For a full speed device, the bus state where the D+ line is high and the D- line is low is defined as the J state. The bus state where D+ is low and D- high is called the K state.

An idle bus, where D+ and D- lines are only polarized through the pull-up on D+ and pull-downs on the host side, will be in J state.

Both lines low are called SE0 (single-ended 0), and both lines high SE1 (single-ended 1).

USB pins

The USBD peripheral features a number of dedicated pins.

The dedicated USB pins can be grouped in two categories, signal and power. The signal pins consist of the D+ and D- pins, which are to be connected to the USB host. They are dedicated pins, and not available as standard GPIOs. The USBD implements the 5V Short Circuit Withstand ECN meaning that these two pins are not 5 V tolerant.

The signal pins and the pull-up will operate only while VBUS is in its valid voltage range, and USBD is enabled through the ENABLE register. For details on the USB power supply and VBUS detection, see POWER.

See Pin assignments for more information about the pinout.

USBD power-up sequence

The physical layer interface (PHY)/USB transceiver is powered separately from the rest of the device (VBUS pin), which has some implications on the USBD power-up sequence.

The device is not able to properly signal its presence to the USB host and handle traffic from the host, unless the PHY's power supply is enabled and stable. Turning the PHY's power supply on/off is directly linked to register ENABLE. The device provides events that help synchronizing software to the various steps during the power-up sequence.

To make sure that all resources in USBD are available and the dedicated USB voltage regulator stabilized, the following is recommended:

  • Enable USBD after VBUS has been detected only
  • Turn the USB pull-up on after:
    • USBPWRRDY event has occurred
    • USBEVENT has occurred, with the READY condition flagged in EVENTCAUSE

The following sequence chart illustrates a typical handling of VBUS power-up:

Figure 3. VBUS power-up sequence
VBUS power-up sequence

Upon VBUS removal detection, signalled by the USBREMOVED event described in POWER, it is recommended to let on-going EasyDMA transfers finish (wait for the relevant ENDEPIN[n], ENDISOIN, ENDEPOUT[n] or ENDISOOUT event, see EasyDMA), before disabling USBD (by writing ENABLE=Disabled).

USB pull-up

The USB pull-up serves two purposes - it indicates to the host that the device is connected to the USB bus, and it indicates the device's speed capability.

When no pull-up is connected to the USB bus, the host sees both D+ and D- lines low, as they are pulled down on the host side by 15 kΩ resistors. The device is not seen by the host and hence in detached state, even though it could be physically connected to the host. USB specification does not allow to draw any current on VBUS in that situation.

When a full-speed device connects its 1.5 kΩ pull-up to D+, the host sees the corresponding line high. The device is then in the attached state. During the enumeration process, the host attempts to determine if the full-speed device also supports higher speeds and initiates communication with the device to further identify it. The USBD peripheral implemented in this device supports only full-speed (12 Mbps), and thus ignores the negotiation for higher speeds in accordance with the USB specification revision 2.0.

Register USBPULLUP provides means to connect or disconnect the pull-up on D+ under software control. This allows the software to control when USB enumeration takes place. It also allows to emulate a physical disconnect from the USB bus, for instance when re-enumeration is required. USBPULLUP has to be enabled to allow the USBD to handle USB traffic and generate appropriate events. This forbids the use of an external pull-up.

Note that disconnecting the pull-up through register USBPULLUP while connected to a host, will result in both D+ and D- lines to be pulled low by the host's pull-down resistors. However, as mentioned above, this will also inhibit the generation of the USBRESET event. The pull-up is disabled by default after a chip reset.

The pull-up shall only get connected after USBD has been enabled through register ENABLE. The USB pull-up value is automatically changed depending on the bus activity, as specified in Resistor ECN which amends the original USB specification version 2.0. The user does not have access to this function, it is handled in hardware.

While they should never be used in normal traffic activity, lines D+ and D- may at any time be forced into state specified in register DPDMVALUE by the task DPDMDRIVE. The DPDMNODRIVE task stops driving them, and PHY returns to normal operation.

USB reset

The USB specification defines a USB reset, which is not be confused with a chip reset. The USB reset is a normal USB bus condition, and is used as part of the enumeration sequence, it does not reset the chip.

The USB reset results from a single-ended low state (SE0) on lines D+/D- for a tUSB,DETRST amount of time. Only the host is allowed to drive a USB reset condition on the bus. The UBSD peripheral automatically interprets a SE0 longer than tUSB,DETRST as a USB reset. When the device detects a USB reset and generates a USBRESET event, the device USB stack and related parts of the application shall re-initialize themselves, and go back to the default state.

Some of the registers in the USBD peripheral get automatically reset to a known state, in particular all data endpoints are disabled and the USBADDR reset to 0.

After the device has connected to the USB bus (i.e. after VBUS is applied), the device shall not respond to any traffic from the time the pull-up is enabled until it has seen a USB reset condition. This is automatically ensured by the USBD.

After a USB reset, the device shall be fully responsive after at most TRSTRCY (according to chapter 7 in the USB specification). Software shall take into account this time that takes the hardware to recover from a USB reset condition.

USB suspend and resume

Normally, the host will maintain activity on the USB at least every millisecond according to USB specification. A USB device will enter suspend when there is no activity on the bus (idle) for a given time. The device will resume operation when it receives any non idle signalling.

To signal that the device shall go into low power mode (suspend), the host stops activity on the USB bus, which becomes idle. Only the device pull-up and host pull-downs act on D+ and D-, and the bus is thus kept at a constant J state. It is up to the device to detect this lack of activity, and enter the low power mode (suspend) within a specified time.

The USB host can decide to suspend or resume USB activity at any time. If remote wake-up is enabled, the device may signal to the host to resume from suspend.

Entering suspend

The USBD peripheral automatically detects lack of activity for more than a defined amount of time, and performs steps needed to enter suspend.

When no activity has been detected for longer than tUSB,SUSPEND, the USBD generates the USBEVENT event with SUSPEND bit set in register EVENTCAUSE. The software shall ensure that the current drawn from the USB supply line VBUS is within the specified limits before T2SUSP, as defined in chapter 7 of the USB specification. In order to reduce idle current of USBD, the software must explicitly place the USBD in low power mode through writing LowPower to register LOWPOWER.

In order to save power, and provided that no other peripheral needs it, the crystal oscillator (HFXO) in CLOCK may be disabled by software during the USB suspend, while the USB pull-up is disconnected, or when VBUS is not present. Software must explicitly enable it at any other time. The USBD will not be able to respond to USB traffic unless HFXO is enabled and stable.

Host-initiated resume

Once the host resumes the bus activity, it has to be responsive to incoming requests on the USB bus within the time TRSMRCY (as defined in chapter 7 of the USB specification) and revert to normal power consumption mode.

If the host resumes bus activity with or without a RESUME condition (in other words: bus activity is defined as any non-J state), the USBD peripheral will generate a USBEVENT event, with RESUME bit set in register EVENTCAUSE. If the host resumes bus activity simply by restarting sending frames, the USBD peripheral will generate SOF events.

Device-initiated remote wake-up

Assuming the remote wake-up is supported by the device and enabled by the host, the device can request the host to resume from suspend if wake-up condition is met.

To do so, the HFXO needs to be enabled first. After waking up the HFXO, the software must bring USBD out of the low power mode and into the normal power consumption mode through writing ForceNormal in register LOWPOWER. It can then instruct the USBD peripheral to drive a RESUME condition (K state) on the USB bus by triggering the DPDMDRIVE task, and hence attempt to wake up the host. By choosing Resume in DPDMVALUE, the duration of the RESUME state is under hardware control (tUSB,DRIVEK). By choosing J or K, the duration of that state is under software control (the J or K state is maintained until a DPDMNODRIVE task is triggered) and has to meet TDRSMUP as specified in USB specification chapter 7.

Upon writing the ForceNormal in register LOWPOWER, a USBEVENT event is generated with the USBWUALLOWED bit set in register EVENTCAUSE.

The value in register DPDMVALUE will only be captured and used when the DPDMDRIVE task is triggered. This value defines the state the bus will be forced into after the DPDMDRIVE task.

Note that the device shall ensure that it does not initiate a remote wake-up request before TWTRSM (according to USB specification chapter 7) after the bus has entered idle state. Using the recommended resume value in DPDMVALUE (rather than K) takes care of this, and postpones the RESUME state accordingly.

EasyDMA

The USBD peripheral includes EasyDMA, so USB buffers are located in Data RAM .

Each endpoint has an associated set of registers, tasks and events. EasyDMA and traffic on USB are tightly related. A number of events provide insight of what is happening on the USB bus, and a number of tasks allow to somewhat automate response to the traffic.

Note: Endpoint 0 (IN and OUT) are implemented as control endpoint. For more information, see Control transfers.

Registers

Enabling endpoints is controlled through the EPINEN and EPOUTEN registers.

The following registers define the address of the buffer in Data RAM for a specific IN or OUT endpoint:

The following registers define the amount of bytes to be sent on USB for next transaction:

The following registers define the length of the buffer (in bytes) for next transfer of incoming data:

Since the host decides how many bytes are sent over USB, the MAXCNT value can be copied from register SIZE.EPOUT[n] (n=1..7) or register SIZE.ISOOUT.

Register EPOUT[0].MAXCNT defines the length of the OUT buffer (in bytes) for the control endpoint 0. If the USB host does not misbehave, register SIZE.EPOUT[0] will indicate the same value as MaxPacketSize from the device descriptor or wLength from the SETUP command, whichever the smallest.

The .AMOUNT registers indicate how many bytes actually have been transferred over EasyDMA during the last transfer.

Stalling bulk/interrupt endpoints is controlled through the EPSTALL register.

Note: Due to USB specification requirements, the effect of the stalling control endpoint 0 may be overridden by hardware, in particular when a new SETUP token is received.

EasyDMA will not copy the SETUP data to Data RAM (it will only transfer data from the data stage). Setup data is available as separate registers in the USBD peripheral:

EVENTCAUSE register provides details on what caused a given USBEVENT event, for instance if a CRC error is detected during a transaction, or if bus activity stops or resumes.

Tasks

Tasks STARTEPIN[n], STARTEPOUT[n] (n=0..7), STARTISOIN and STARTISOOUT capture the values for .PTR and .MAXCNT registers. For IN endpoints, a transaction over USB gets automatically triggered when the EasyDMA transfer is complete. For OUT endpoints, it is up to software to allow the next transaction over USB. See the examples in Control transfers, Bulk and interrupt transactions and Isochronous transactions.

For the control endpoint 0, OUT transactions are allowed through the EP0RCVOUT task. The EP0STATUS task allows a status stage to be initiated, and the EP0STALL task allows stalling further traffic (data or status stage) on the control endpoint.

Events

The STARTED event confirms that the values of the .PTR and .MAXCNT registers of the endpoints flagged in register EPSTATUS have been captured. Those can then be modified by software for the next transfer.

Events ENDEPIN[n], ENDEPOUT[n] (n=0..7), ENDISOIN and ENDISOOUT events indicate that the whole buffer in Data RAM has been consumed. The buffer can be accessed safely by the software.

Only a single EasyDMA transfer can take place in USBD at any time. Software must ensure that tasks STARTEPIN[n] (n=0..7), STARTISOIN, STARTEPOUT[n] (n=0..7) or STARTISOOUT are not triggered before events ENDEPIN[n] (n=0..7), ENDISOIN, ENDEPOUT[n] (n=0..7) or ENDISOOUT are received from an on-going transfer.

The EPDATA event indicates that a successful (acknowledged) data transaction has occurred on the data endpoint(s) flagged in register EPDATASTATUS. A successful (acknowledged) data transaction on endpoint 0 is signalled by the EP0DATADONE event.

At any time a USBEVENT event may be sent, with details provided in EVENTCAUSE register.

EP0SETUP event indicates that a SETUP token has been received on the control endpoint 0, and that the setup data is available in registers.

Control transfers

The USB specification mandates every USB device to implement endpoint 0 IN and OUT as control endpoints.

A control transfer consists of two or three stages:

  • Setup stage
  • Data stage (optional)
  • Status stage

Each control transfer can be one of following types:

  • Control read
  • Control read no data
  • Control write
  • Control write no data

An EP0SETUP event indicates that the data in the setup stage (following the SETUP token) is available in registers.

The data in the data stage (following the IN or OUT token) is transferred from or to the desired location in Data RAM using EasyDMA.

Note: The control endpoint buffer size in Data RAM can be of any size in bytes, and there is no constraint to keep it 32-bit aligned.

After receiving the SETUP token, the USB controller will not accept (NAK) any incoming IN or OUT tokens until the software has finished decoding the command, determining the type of transfer, and preparing for the next stage (data or status) appropriately.

The software can choose to stall a command (in both data and status stages) through the EP0STALL task, for instance if the command is not supported, or its wValue, wIndex or wLength parameters are wrong. A stalled control read transfer is illustrated below, but the same mechanism (same tasks) applies to stalling a control write transfer (not illustrated):

Figure 4. Control read gets stalled
Control read gets stalled

See chapter 9 of the USB specification and relevant class specifications for rules on when to stall a command.

Note: The USBD peripheral handles the SetAddress transfer by itself. As a consequence, the software shall not process this command other than updating its state machine (see Device state diagram), nor initiate a status stage. If necessary, the address assigned by the host can be read out from the USBADDR register after the command has been processed.

Control read transfer

This section describes how the software behaves to respond to a control read transfer.

As mentioned earlier, the USB controller will not accept (NAK) any incoming IN tokens until software has finished decoding the command, determining the type of transfer, and preparing for the next stage (data or status) appropriately.

For a control read, transferring the data from Data RAM memory into USBD will trigger a valid, acknowledged (ACK) IN transaction on USB.

The software has to prepare EasyDMA by pointing to the buffer containing the data to be transferred. If no other EasyDMA transfers are on-going with USBD, the software can send the STARTEPIN0 task, which will initiate the data transfer and transaction on USB.

A STARTED event (with EPIN0 bit set in the EPSTATUS register) will be generated as soon as the EPIN[0].PTR and .MAXCNT registers have been captured. Software may then prepare them for the next data transaction.

An ENDEPIN[0] event will be generated when the data has been transferred from memory to the USBD peripheral.

Finally, an EP0DATADONE event will be generated when the data has been transmitted over USB and acknowledged by the host.

The software can then either prepare and transmit the next data transaction by repeating the above sequence, or initiate the status stage through the EP0STATUS task.

Figure 5. Control read transfer
Control read transfer

Note the possibility to enable a shortcut from the EP0DATADONE event to the EP0STATUS task, typically if the data stage is expected to take a single transfer. If there is no data stage, the software can initiate the status stage through the EP0STATUS task right away, as illustrated below:

Figure 6. Control read no data transfer
Control read no data transfer

Control write transfer

This section describes how the software responds to a control write transfer.

The software has to prepare EasyDMA by pointing to the buffer in Data RAM that shall contain the incoming data. If no other EasyDMA transfers are on-going with USBD, the software can then send the EP0RCVOUT task, which will make USBD acknowledge (ACK) the first OUT+DATA transaction from the host.

An EP0DATADONE event will be generated when a new OUT+DATA has been transmitted over USB, and is about to get acknowledged by the device.

A STARTED event (with EPOUT0 bit set in the EPSTATUS register) will be generated as soon as the EPOUT[0].PTR and .MAXCNT registers have been captured, after receiving the first transaction. Software may then prepare them for the next data transaction.

An ENDEPOUT[0] event will be generated when the data has been transferred from the USBD peripheral to Data RAM. The software can then either prepare to receive the next data transaction by repeating the above sequence, or initiate the status stage through the EP0STATUS task. Until then, further incoming OUT+DATA transactions get a NAK response by the device.

Figure 7. Control write transfer
Control write transfer

Figure 8. Control write no data transfer
Control write no data transfer

Bulk and interrupt transactions

The USBD peripheral implements seven pairs of bulk/interrupt endpoints.

The bulk/interrupt endpoints have a fixed USB endpoint number, summarized in the table below.

Table 1. Bulk/interrupt endpoint numbering
Bulk endpoint # USB IN endpoint USB OUT endpoint
[1] 0x81 0x01
[2] 0x82 0x02
[3] 0x83 0x03
[4] 0x84 0x04
[5] 0x85 0x05
[6] 0x86 0x06
[7] 0x87 0x07

A bulk/interrupt transaction consists of a single data stage. Two consecutive, successful transactions are distinguished through alternating leading process ID (PID): DATA0 follows DATA1, DATA1 follows DATA0, etc. A repeated transaction is detected by re-using the same PID as previous transaction, i.e DATA0 follows DATA0, or DATA1 follows DATA1.

The USBD controller automatically toggles DATA0/DATA1 PIDs for every bulk/interrupt transaction, and in general software does not need to care about it.

If an incoming data is corrupted (CRC does not match), the USBD controller automatically prevents DATA0/DATA1 from toggling, to request the host to resend the data.

In some specific cases, the software may want to force a data toggle (usually reset) on a specific IN endpoint, or force the expected toggle on an OUT endpoint, for instance as a consequence of the host issuing ClearFeature, SetInterface or selecting an alternate setting. Controlling the data toggle of data IN or OUT endpoint n (n=1..7) is done through register DTOGGLE.

The maximum size of a bulk/interrupt transaction in USB full-speed is 64 bytes, and it has to be a multiple of 4 bytes and 32-bit aligned in Data RAM. However, the amount of data bytes transmitted on the USB data endpoint can be of any size (up to 64 bytes).

When the transaction is done over USB, an EPDATA event is generated. The hardware will then automatically respond with NAK to all incoming IN tokens until the software is ready to send more data and has finished configuring the EasyDMA, started it, and the whole buffer content has been moved to USB controller (signalled by the ENDEPIN[n] event).

Each IN or OUT data endpoint has to be explicitly enabled by software through register EPINEN or EPOUTEN, according to the configuration declared by the device and selected by the host through the SetConfig command.

A disabled data endpoint will not respond to any traffic from the host. An enabled data endpoint will normally respond NAK or ACK (depending on the readiness of the buffers), or STALL (if configured in register EPSTALL), in which case the endpoint is asked to halt). The halted (or not) state of a given endpoint can be read back from register HALTED.EPIN[n] or HALTED.EPOUT[n]. The format of the returned 16-bit value can be copied as is as response to a GetStatusEndpoint request from the host.

Note that enabling or disabling an endpoint will not change its halted state. However, a USB reset will disable and clear the halted state of all data endpoints.

The control endpoint 0 IN and OUT can also be enabled and/or halted using the same mechanisms, but due to USB specification, receiving a SETUP will override its state.

Bulk and interrupt IN transaction

The host issues IN tokens to receive bulk/interrupt data. In order to send data, the software has to enable the endpoint and prepare an EasyDMA transfer on the desired endpoint.

Bulk/interrupt IN endpoints are enabled or disabled through their respective INn bit (n=1..7) in EPINEN register.

It is also possible to stall or un-stall an endpoint through the EPSTALL register.

Figure 9. Bulk/interrupt IN transaction
Bulk/interrupt IN transaction

It is possible (and in some situations it is required) to respond to an IN token with a zero-length data packet.

Note: On many USB hosts, not responding (DATA+ACK or NAK) to three IN tokens on an interrupt endpoint would have the host disable that endpoint as a consequence. Re-enumerating the device (unplug-replug) may be required to restore functionality. Make sure that the relevant data endpoints are enabled for normal operation as soon as the device gets configured through a SetConfig request.

Bulk and interrupt OUT transaction

When the host wants to transmit bulk/interrupt data, it issues an OUT token (packet) followed by a DATA packet on a given endpoint n (n=1..7).

A NAK is returned until the software writes any value to register SIZE.EPOUT[n], indicating that the content of the local buffer can be overwritten. Upon receiving the next OUT+DATA transaction, an ACK is returned to the host while an EPDATA event is generated (and the EPDATASTATUS register flags are set to indicate on which endpoint this happened). Once the EasyDMA is prepared and enabled, by writing the EPOUT[n] registers and triggering the STARTEPOUT[n] task, the incoming data will be transferred to Data RAM. Until that transfer is finished, the hardware will automatically NAK any other incoming OUT+DATA packets. Only when the EasyDMA transfer is done (signalled by the ENDEPOUT[n] event), or as soon as any values are written by the software in register SIZE.EPOUT[n], the endpoint n will accept incoming OUT+DATA again.

It is allowed for the host to send zero-length data packets.

Bulk/interrupt OUT endpoints are enabled or disabled through their respective OUTn bit (n=1..7) in the EPOUTEN register. It is also possible to stall or un-stall an endpoint through the EPSTALL register.

Figure 10. Bulk/interrupt OUT transaction
Bulk/interrupt OUT transaction

Isochronous transactions

The USBD peripheral implements isochronous (ISO) endpoints.

The ISO endpoints have a fixed USB endpoint number, summarized in the table below.

Table 2. Isochronous endpoint numbering
ISO endpoint # USB IN endpoint USB OUT endpoint
[0] 0x88 0x08

An isochronous transaction consists of a single, non-acknowledged data stage. The host sends out a start of frame at a regular interval (1 ms), and data follows IN or OUT tokens within each frame.

EasyDMA allows transferring ISO data directly from and to Data RAM. EasyDMA transfers must be initiated by the software, which can synchronize with the SOF (start of frame) events.

Because the timing of the start of frame is very accurate, the SOF event can be used for instance to synchronize a local timer through the SOF event and PPI. The SOF event gets synchronized to the 16 MHz clock prior to being made available to the PPI.

Every start of frame increments a free-running counter, which can be read by software through the FRAMECNTR register.

Each IN or OUT ISO data endpoint has to be explicitly enabled by software through register EPINEN or EPOUTEN, according to the configuration declared by the device and selected by the host through the SetConfig command. A disabled ISO IN data endpoint will not respond to any traffic from the host. A disabled ISO OUT data endpoint will ignore any incoming traffic from the host.

The USBD peripheral has an internal 1 kB buffer associated with ISO endpoints. The user can either allocate the full amount to the IN or the OUT endpoint, or split the buffer allocation between the two. This is done through register ISOSPLIT, which provides a number of pre-determined splits.

Isochronous IN transaction

When the host wants to receive isochronous (ISO) data, it issues an IN token on the isochronous endpoint.

After the data has been transferred using the EasyDMA, the USB controller on the isochronous IN endpoint responds to the IN token with the transferred data using the ISOIN.MAXCNT for the size of the packet.

The ISO IN data endpoint has to be explicitly enabled by software through the ISOIN0 bit in register EPINEN.

When an ISO IN endpoint is enabled and no data transferred with EasyDMA, the response of the USBD depends on the setting of the RESPONSE field in register ISOINCONFIG - it can either provide no response to an IN token or respond with a zero-length data.

Note: The maximum size of an ISO IN transfer in USB full-speed is 1023 bytes, and the data buffer in RAM has to be a multiple of 4 bytes 32-bit aligned in Data RAM. However, the amount of bytes transferred on the USB data endpoint can be of any size (up to 1023 bytes, if not shared with an OUT ISO endpoint).
Figure 11. Isochronous IN transfer
Isochronous IN transfer

Isochronous OUT transaction

When the host wants to send isochronous (ISO) data, it issues an OUT token on the isochronous endpoint, followed by data.

The ISO OUT data endpoint has to be explicitly enabled by software through the ISOOUT0 bit in register EPOUTEN.

The amount of last received ISO OUT data is provided in the SIZE.ISOOUT register. Software shall interpret the ZERO and SIZE fields as follows:

Table 3. ISO OUT incoming data size
ZERO SIZE Last received data size
Normal 0 No data received at all
Normal 1..1023 1..1023 bytes of data received
ZeroData (not of interest) Zero-length data packet received

When EasyDMA is prepared and started, triggering a STARTISOOUT task initiates an EasyDMA transfer to Data RAM. Software shall synchronize ISO OUT transfers with the SOF events. If OUT data is not consumed and processed until next SOF, it will be overwritten by more recent data. EasyDMA uses the address in ISOOUT.PTR and size in ISOOUT.MAXCNT for every new transfer.

Note: The maximum size of an isochronous OUT transfer in USB full-speed is 1023 bytes, and the data buffer in RAM has to be a multiple of 4 bytes and 32-bit aligned in Data RAM. However, the amount of bytes transferred on the USB data endpoint can be of any size (up to 1023 bytes if not shared with an IN ISO endpoint).

If the last received ISO data packet is corrupted (wrong CRC), the USB controller generates an USBEVENT event (at the same time as SOF) and indicates a CRC error on ISOOUTCRC in register EVENTCAUSE. EasyDMA will transfer the data anyway if it has been set up properly.

Figure 12. Isochronous OUT transfer
Isochronous OUT transfer

USB register access limitations

Some of the registers in USBD cannot be accessed in specific conditions.

This may be the case when USBD is not enabled (using the ENABLE register) and ready (signalled by the READY bit in EVENTCAUSE after a USBEVENT event), or when USBD is in low power mode while the USB bus is suspended.

Triggering any tasks, including the tasks triggered through the PPI, is affected by this behavior. In addition, the following registers are affected:
  • HALTED.EPIN[0..7]
  • HALTED.EPOUT[0..7]
  • USBADDR
  • BMREQUESTTYPE
  • BREQUEST
  • WVALUEL
  • WVALUEH
  • WINDEXL
  • WINDEXH
  • WLENGTHL
  • WLENGTHH
  • SIZE.EPOUT[0..7]
  • SIZE.ISOOUT
  • USBPULLUP
  • DTOGGLE
  • EPINEN
  • EPOUTEN
  • EPSTALL
  • ISOSPLIT
  • FRAMECNTR

Registers

Table 4. Instances
Base address Peripheral Instance Description Configuration
0x40027000 USBD USBD

Universal serial bus device

   
Table 5. Register overview
Register Offset Description
TASKS_STARTEPIN[0] 0x004

Captures the EPIN[0].PTR and EPIN[0].MAXCNT registers values, and enables endpoint IN 0 to respond to traffic from host

 
TASKS_STARTEPIN[1] 0x008

Captures the EPIN[1].PTR and EPIN[1].MAXCNT registers values, and enables endpoint IN 1 to respond to traffic from host

 
TASKS_STARTEPIN[2] 0x00C

Captures the EPIN[2].PTR and EPIN[2].MAXCNT registers values, and enables endpoint IN 2 to respond to traffic from host

 
TASKS_STARTEPIN[3] 0x010

Captures the EPIN[3].PTR and EPIN[3].MAXCNT registers values, and enables endpoint IN 3 to respond to traffic from host

 
TASKS_STARTEPIN[4] 0x014

Captures the EPIN[4].PTR and EPIN[4].MAXCNT registers values, and enables endpoint IN 4 to respond to traffic from host

 
TASKS_STARTEPIN[5] 0x018

Captures the EPIN[5].PTR and EPIN[5].MAXCNT registers values, and enables endpoint IN 5 to respond to traffic from host

 
TASKS_STARTEPIN[6] 0x01C

Captures the EPIN[6].PTR and EPIN[6].MAXCNT registers values, and enables endpoint IN 6 to respond to traffic from host

 
TASKS_STARTEPIN[7] 0x020

Captures the EPIN[7].PTR and EPIN[7].MAXCNT registers values, and enables endpoint IN 7 to respond to traffic from host

 
TASKS_STARTISOIN 0x024

Captures the ISOIN.PTR and ISOIN.MAXCNT registers values, and enables sending data on ISO endpoint

 
TASKS_STARTEPOUT[0] 0x028

Captures the EPOUT[0].PTR and EPOUT[0].MAXCNT registers values, and enables endpoint 0 to respond to traffic from host

 
TASKS_STARTEPOUT[1] 0x02C

Captures the EPOUT[1].PTR and EPOUT[1].MAXCNT registers values, and enables endpoint 1 to respond to traffic from host

 
TASKS_STARTEPOUT[2] 0x030

Captures the EPOUT[2].PTR and EPOUT[2].MAXCNT registers values, and enables endpoint 2 to respond to traffic from host

 
TASKS_STARTEPOUT[3] 0x034

Captures the EPOUT[3].PTR and EPOUT[3].MAXCNT registers values, and enables endpoint 3 to respond to traffic from host

 
TASKS_STARTEPOUT[4] 0x038

Captures the EPOUT[4].PTR and EPOUT[4].MAXCNT registers values, and enables endpoint 4 to respond to traffic from host

 
TASKS_STARTEPOUT[5] 0x03C

Captures the EPOUT[5].PTR and EPOUT[5].MAXCNT registers values, and enables endpoint 5 to respond to traffic from host

 
TASKS_STARTEPOUT[6] 0x040

Captures the EPOUT[6].PTR and EPOUT[6].MAXCNT registers values, and enables endpoint 6 to respond to traffic from host

 
TASKS_STARTEPOUT[7] 0x044

Captures the EPOUT[7].PTR and EPOUT[7].MAXCNT registers values, and enables endpoint 7 to respond to traffic from host

 
TASKS_STARTISOOUT 0x048

Captures the ISOOUT.PTR and ISOOUT.MAXCNT registers values, and enables receiving of data on ISO endpoint

 
TASKS_EP0RCVOUT 0x04C

Allows OUT data stage on control endpoint 0

 
TASKS_EP0STATUS 0x050

Allows status stage on control endpoint 0

 
TASKS_EP0STALL 0x054

Stalls data and status stage on control endpoint 0

 
TASKS_DPDMDRIVE 0x058

Forces D+ and D- lines into the state defined in the DPDMVALUE register

 
TASKS_DPDMNODRIVE 0x05C

Stops forcing D+ and D- lines into any state (USB engine takes control)

 
EVENTS_USBRESET 0x100

Signals that a USB reset condition has been detected on USB lines

 
EVENTS_STARTED 0x104

Confirms that the EPIN[n].PTR and EPIN[n].MAXCNT, or EPOUT[n].PTR and EPOUT[n].MAXCNT registers have been captured on all endpoints reported in the EPSTATUS register

 
EVENTS_ENDEPIN[0] 0x108

The whole EPIN[0] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPIN[1] 0x10C

The whole EPIN[1] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPIN[2] 0x110

The whole EPIN[2] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPIN[3] 0x114

The whole EPIN[3] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPIN[4] 0x118

The whole EPIN[4] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPIN[5] 0x11C

The whole EPIN[5] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPIN[6] 0x120

The whole EPIN[6] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPIN[7] 0x124

The whole EPIN[7] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_EP0DATADONE 0x128

An acknowledged data transfer has taken place on the control endpoint

 
EVENTS_ENDISOIN 0x12C

The whole ISOIN buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[0] 0x130

The whole EPOUT[0] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[1] 0x134

The whole EPOUT[1] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[2] 0x138

The whole EPOUT[2] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[3] 0x13C

The whole EPOUT[3] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[4] 0x140

The whole EPOUT[4] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[5] 0x144

The whole EPOUT[5] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[6] 0x148

The whole EPOUT[6] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDEPOUT[7] 0x14C

The whole EPOUT[7] buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_ENDISOOUT 0x150

The whole ISOOUT buffer has been consumed. The RAM buffer can be accessed safely by software.

 
EVENTS_SOF 0x154

Signals that a SOF (start of frame) condition has been detected on USB lines

 
EVENTS_USBEVENT 0x158

An event or an error not covered by specific events has occurred. Check EVENTCAUSE register to find the cause.

 
EVENTS_EP0SETUP 0x15C

A valid SETUP token has been received (and acknowledged) on the control endpoint

 
EVENTS_EPDATA 0x160

A data transfer has occurred on a data endpoint, indicated by the EPDATASTATUS register

 
SHORTS 0x200

Shortcut register

 
INTEN 0x300

Enable or disable interrupt

 
INTENSET 0x304

Enable interrupt

 
INTENCLR 0x308

Disable interrupt

 
EVENTCAUSE 0x400

Details on what caused the USBEVENT event

 
HALTED.EPIN[0] 0x420

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPIN[1] 0x424

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPIN[2] 0x428

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPIN[3] 0x42C

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPIN[4] 0x430

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPIN[5] 0x434

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPIN[6] 0x438

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPIN[7] 0x43C

IN endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[0] 0x444

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[1] 0x448

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[2] 0x44C

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[3] 0x450

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[4] 0x454

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[5] 0x458

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[6] 0x45C

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
HALTED.EPOUT[7] 0x460

OUT endpoint halted status. Can be used as is as response to a GetStatus() request to endpoint.

 
EPSTATUS 0x468

Provides information on which endpoint's EasyDMA registers have been captured

 
EPDATASTATUS 0x46C

Provides information on which endpoint(s) an acknowledged data transfer has occurred (EPDATA event)

 
USBADDR 0x470

Device USB address

 
BMREQUESTTYPE 0x480

SETUP data, byte 0, bmRequestType

 
BREQUEST 0x484

SETUP data, byte 1, bRequest

 
WVALUEL 0x488

SETUP data, byte 2, LSB of wValue

 
WVALUEH 0x48C

SETUP data, byte 3, MSB of wValue

 
WINDEXL 0x490

SETUP data, byte 4, LSB of wIndex

 
WINDEXH 0x494

SETUP data, byte 5, MSB of wIndex

 
WLENGTHL 0x498

SETUP data, byte 6, LSB of wLength

 
WLENGTHH 0x49C

SETUP data, byte 7, MSB of wLength

 
SIZE.EPOUT[0] 0x4A0

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.EPOUT[1] 0x4A4

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.EPOUT[2] 0x4A8

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.EPOUT[3] 0x4AC

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.EPOUT[4] 0x4B0

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.EPOUT[5] 0x4B4

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.EPOUT[6] 0x4B8

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.EPOUT[7] 0x4BC

Number of bytes received last in the data stage of this OUT endpoint

 
SIZE.ISOOUT 0x4C0

Number of bytes received last on this ISO OUT data endpoint

 
ENABLE 0x500

Enable USB

 
USBPULLUP 0x504

Control of the USB pull-up

 
DPDMVALUE 0x508

State D+ and D- lines will be forced into by the DPDMDRIVE task. The DPDMNODRIVE task reverts the control of the lines to MAC IP (no forcing).

 
DTOGGLE 0x50C

Data toggle control and status

 
EPINEN 0x510

Endpoint IN enable

 
EPOUTEN 0x514

Endpoint OUT enable

 
EPSTALL 0x518

STALL endpoints

 
ISOSPLIT 0x51C

Controls the split of ISO buffers

 
FRAMECNTR 0x520

Returns the current value of the start of frame counter

 
LOWPOWER 0x52C

Controls USBD peripheral low power mode during USB suspend

 
ISOINCONFIG 0x530

Controls the response of the ISO IN endpoint to an IN token when no data is ready to be sent

 
EPIN[0].PTR 0x600

Data pointer

 
EPIN[0].MAXCNT 0x604

Maximum number of bytes to transfer

 
EPIN[0].AMOUNT 0x608

Number of bytes transferred in the last transaction

 
EPIN[1].PTR 0x614

Data pointer

 
EPIN[1].MAXCNT 0x618

Maximum number of bytes to transfer

 
EPIN[1].AMOUNT 0x61C

Number of bytes transferred in the last transaction

 
EPIN[2].PTR 0x628

Data pointer

 
EPIN[2].MAXCNT 0x62C

Maximum number of bytes to transfer

 
EPIN[2].AMOUNT 0x630

Number of bytes transferred in the last transaction

 
EPIN[3].PTR 0x63C

Data pointer

 
EPIN[3].MAXCNT 0x640

Maximum number of bytes to transfer

 
EPIN[3].AMOUNT 0x644

Number of bytes transferred in the last transaction

 
EPIN[4].PTR 0x650

Data pointer

 
EPIN[4].MAXCNT 0x654

Maximum number of bytes to transfer

 
EPIN[4].AMOUNT 0x658

Number of bytes transferred in the last transaction

 
EPIN[5].PTR 0x664

Data pointer

 
EPIN[5].MAXCNT 0x668

Maximum number of bytes to transfer

 
EPIN[5].AMOUNT 0x66C

Number of bytes transferred in the last transaction

 
EPIN[6].PTR 0x678

Data pointer

 
EPIN[6].MAXCNT 0x67C

Maximum number of bytes to transfer

 
EPIN[6].AMOUNT 0x680

Number of bytes transferred in the last transaction

 
EPIN[7].PTR 0x68C

Data pointer

 
EPIN[7].MAXCNT 0x690

Maximum number of bytes to transfer

 
EPIN[7].AMOUNT 0x694

Number of bytes transferred in the last transaction

 
ISOIN.PTR 0x6A0

Data pointer

 
ISOIN.MAXCNT 0x6A4

Maximum number of bytes to transfer

 
ISOIN.AMOUNT 0x6A8

Number of bytes transferred in the last transaction

 
EPOUT[0].PTR 0x700

Data pointer

 
EPOUT[0].MAXCNT 0x704

Maximum number of bytes to transfer

 
EPOUT[0].AMOUNT 0x708

Number of bytes transferred in the last transaction

 
EPOUT[1].PTR 0x714

Data pointer

 
EPOUT[1].MAXCNT 0x718

Maximum number of bytes to transfer

 
EPOUT[1].AMOUNT 0x71C

Number of bytes transferred in the last transaction

 
EPOUT[2].PTR 0x728

Data pointer

 
EPOUT[2].MAXCNT 0x72C

Maximum number of bytes to transfer

 
EPOUT[2].AMOUNT 0x730

Number of bytes transferred in the last transaction

 
EPOUT[3].PTR 0x73C

Data pointer

 
EPOUT[3].MAXCNT 0x740

Maximum number of bytes to transfer

 
EPOUT[3].AMOUNT 0x744

Number of bytes transferred in the last transaction

 
EPOUT[4].PTR 0x750

Data pointer

 
EPOUT[4].MAXCNT 0x754

Maximum number of bytes to transfer

 
EPOUT[4].AMOUNT 0x758

Number of bytes transferred in the last transaction

 
EPOUT[5].PTR 0x764

Data pointer

 
EPOUT[5].MAXCNT 0x768

Maximum number of bytes to transfer

 
EPOUT[5].AMOUNT 0x76C

Number of bytes transferred in the last transaction

 
EPOUT[6].PTR 0x778

Data pointer

 
EPOUT[6].MAXCNT 0x77C

Maximum number of bytes to transfer

 
EPOUT[6].AMOUNT 0x780

Number of bytes transferred in the last transaction

 
EPOUT[7].PTR 0x78C

Data pointer

 
EPOUT[7].MAXCNT 0x790

Maximum number of bytes to transfer

 
EPOUT[7].AMOUNT 0x794

Number of bytes transferred in the last transaction

 
ISOOUT.PTR 0x7A0

Data pointer

 
ISOOUT.MAXCNT 0x7A4

Maximum number of bytes to transfer

 
ISOOUT.AMOUNT 0x7A8

Number of bytes transferred in the last transaction

 

SHORTS

Address offset: 0x200

Shortcut register

Bit number 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ID                                               E D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ID RW Field Value ID Value Description
A RW

EP0DATADONE_STARTEPIN0

   

Shortcut between EP0DATADONE event and STARTEPIN[0] task

See EVENTS_EP0DATADONE and TASKS_STARTEPIN[0]

     

Disabled

0

Disable shortcut

     

Enabled

1

Enable shortcut

B RW

EP0DATADONE_STARTEPOUT0

   

Shortcut between EP0DATADONE event and STARTEPOUT[0] task

See EVENTS_EP0DATADONE and TASKS_STARTEPOUT[0]

     

Disabled

0

Disable shortcut

     

Enabled

1

Enable shortcut

C RW

EP0DATADONE_EP0STATUS

   

Shortcut between EP0DATADONE event and EP0STATUS task

See EVENTS_EP0DATADONE and TASKS_EP0STATUS

     

Disabled

0

Disable shortcut

     

Enabled

1

Enable shortcut

D RW

ENDEPOUT0_EP0STATUS

   

Shortcut between ENDEPOUT[0] event and EP0STATUS task

See EVENTS_ENDEPOUT[0] and TASKS_EP0STATUS

     

Disabled

0

Disable shortcut

     

Enabled

1

Enable shortcut

E RW

ENDEPOUT0_EP0RCVOUT

   

Shortcut between ENDEPOUT[0] event and EP0RCVOUT task

See EVENTS_ENDEPOUT[0] and TASKS_EP0RCVOUT

     

Disabled

0

Disable shortcut

     

Enabled

1

Enable shortcut

INTEN

Address offset: 0x300

Enable or disable interrupt

Bit number 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ID             Y X W V U T S R Q P O N M L K J I H G F E D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ID RW Field Value ID Value Description
A RW

USBRESET

   

Enable or disable interrupt for USBRESET event

See EVENTS_USBRESET

     

Disabled

0

Disable

     

Enabled

1

Enable

B RW

STARTED

   

Enable or disable interrupt for STARTED event

See EVENTS_STARTED

     

Disabled

0

Disable

     

Enabled

1

Enable

C RW

ENDEPIN0

   

Enable or disable interrupt for ENDEPIN[0] event

See EVENTS_ENDEPIN[0]

     

Disabled

0

Disable

     

Enabled

1

Enable

D RW

ENDEPIN1

   

Enable or disable interrupt for ENDEPIN[1] event

See EVENTS_ENDEPIN[1]

     

Disabled

0

Disable

     

Enabled

1

Enable

E RW

ENDEPIN2

   

Enable or disable interrupt for ENDEPIN[2] event

See EVENTS_ENDEPIN[2]

     

Disabled

0

Disable

     

Enabled

1

Enable

F RW

ENDEPIN3

   

Enable or disable interrupt for ENDEPIN[3] event

See EVENTS_ENDEPIN[3]

     

Disabled

0

Disable

     

Enabled

1

Enable

G RW

ENDEPIN4

   

Enable or disable interrupt for ENDEPIN[4] event

See EVENTS_ENDEPIN[4]

     

Disabled

0

Disable

     

Enabled

1

Enable

H RW

ENDEPIN5

   

Enable or disable interrupt for ENDEPIN[5] event

See EVENTS_ENDEPIN[5]

     

Disabled

0

Disable

     

Enabled

1

Enable

I RW

ENDEPIN6

   

Enable or disable interrupt for ENDEPIN[6] event

See EVENTS_ENDEPIN[6]

     

Disabled

0

Disable

     

Enabled

1

Enable

J RW

ENDEPIN7

   

Enable or disable interrupt for ENDEPIN[7] event

See EVENTS_ENDEPIN[7]

     

Disabled

0

Disable

     

Enabled

1

Enable

K RW

EP0DATADONE

   

Enable or disable interrupt for EP0DATADONE event

See EVENTS_EP0DATADONE

     

Disabled

0

Disable

     

Enabled

1

Enable

L RW

ENDISOIN

   

Enable or disable interrupt for ENDISOIN event

See EVENTS_ENDISOIN

     

Disabled

0

Disable

     

Enabled

1

Enable

M RW

ENDEPOUT0

   

Enable or disable interrupt for ENDEPOUT[0] event

See EVENTS_ENDEPOUT[0]

     

Disabled

0

Disable

     

Enabled

1

Enable

N RW

ENDEPOUT1

   

Enable or disable interrupt for ENDEPOUT[1] event

See EVENTS_ENDEPOUT[1]

     

Disabled

0

Disable

     

Enabled

1

Enable

O RW

ENDEPOUT2

   

Enable or disable interrupt for ENDEPOUT[2] event

See EVENTS_ENDEPOUT[2]

     

Disabled

0

Disable

     

Enabled

1

Enable

P RW

ENDEPOUT3

   

Enable or disable interrupt for ENDEPOUT[3] event

See EVENTS_ENDEPOUT[3]

     

Disabled

0

Disable

     

Enabled

1

Enable

Q RW

ENDEPOUT4

   

Enable or disable interrupt for ENDEPOUT[4] event

See EVENTS_ENDEPOUT[4]

     

Disabled

0

Disable

     

Enabled

1

Enable

R RW

ENDEPOUT5

   

Enable or disable interrupt for ENDEPOUT[5] event

See EVENTS_ENDEPOUT[5]

     

Disabled

0

Disable

     

Enabled

1

Enable

S RW

ENDEPOUT6

   

Enable or disable interrupt for ENDEPOUT[6] event

See EVENTS_ENDEPOUT[6]

     

Disabled

0

Disable

     

Enabled

1

Enable

T RW

ENDEPOUT7

   

Enable or disable interrupt for ENDEPOUT[7] event

See EVENTS_ENDEPOUT[7]

     

Disabled

0

Disable

     

Enabled

1

Enable

U RW

ENDISOOUT

   

Enable or disable interrupt for ENDISOOUT event

See EVENTS_ENDISOOUT

     

Disabled

0

Disable

     

Enabled

1

Enable

V RW

SOF

   

Enable or disable interrupt for SOF event

See EVENTS_SOF

     

Disabled

0

Disable

     

Enabled

1

Enable

W RW

USBEVENT

   

Enable or disable interrupt for USBEVENT event

See EVENTS_USBEVENT

     

Disabled

0

Disable

     

Enabled

1

Enable

X RW

EP0SETUP

   

Enable or disable interrupt for EP0SETUP event

See EVENTS_EP0SETUP

     

Disabled

0

Disable

     

Enabled

1

Enable

Y RW

EPDATA

   

Enable or disable interrupt for EPDATA event

See EVENTS_EPDATA

     

Disabled

0

Disable

     

Enabled

1

Enable

INTENSET

Address offset: 0x304

Enable interrupt

Bit number 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ID             Y X W V U T S R Q P O N M L K J I H G F E D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ID RW Field Value ID Value Description
A RW

USBRESET

   

Write '1' to enable interrupt for USBRESET event

See EVENTS_USBRESET

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

B RW

STARTED

   

Write '1' to enable interrupt for STARTED event

See EVENTS_STARTED

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

C RW

ENDEPIN0

   

Write '1' to enable interrupt for ENDEPIN[0] event

See EVENTS_ENDEPIN[0]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

D RW

ENDEPIN1

   

Write '1' to enable interrupt for ENDEPIN[1] event

See EVENTS_ENDEPIN[1]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

E RW

ENDEPIN2

   

Write '1' to enable interrupt for ENDEPIN[2] event

See EVENTS_ENDEPIN[2]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

F RW

ENDEPIN3

   

Write '1' to enable interrupt for ENDEPIN[3] event

See EVENTS_ENDEPIN[3]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

G RW

ENDEPIN4

   

Write '1' to enable interrupt for ENDEPIN[4] event

See EVENTS_ENDEPIN[4]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

H RW

ENDEPIN5

   

Write '1' to enable interrupt for ENDEPIN[5] event

See EVENTS_ENDEPIN[5]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

I RW

ENDEPIN6

   

Write '1' to enable interrupt for ENDEPIN[6] event

See EVENTS_ENDEPIN[6]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

J RW

ENDEPIN7

   

Write '1' to enable interrupt for ENDEPIN[7] event

See EVENTS_ENDEPIN[7]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

K RW

EP0DATADONE

   

Write '1' to enable interrupt for EP0DATADONE event

See EVENTS_EP0DATADONE

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

L RW

ENDISOIN

   

Write '1' to enable interrupt for ENDISOIN event

See EVENTS_ENDISOIN

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

M RW

ENDEPOUT0

   

Write '1' to enable interrupt for ENDEPOUT[0] event

See EVENTS_ENDEPOUT[0]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

N RW

ENDEPOUT1

   

Write '1' to enable interrupt for ENDEPOUT[1] event

See EVENTS_ENDEPOUT[1]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

O RW

ENDEPOUT2

   

Write '1' to enable interrupt for ENDEPOUT[2] event

See EVENTS_ENDEPOUT[2]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

P RW

ENDEPOUT3

   

Write '1' to enable interrupt for ENDEPOUT[3] event

See EVENTS_ENDEPOUT[3]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

Q RW

ENDEPOUT4

   

Write '1' to enable interrupt for ENDEPOUT[4] event

See EVENTS_ENDEPOUT[4]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

R RW

ENDEPOUT5

   

Write '1' to enable interrupt for ENDEPOUT[5] event

See EVENTS_ENDEPOUT[5]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

S RW

ENDEPOUT6

   

Write '1' to enable interrupt for ENDEPOUT[6] event

See EVENTS_ENDEPOUT[6]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

T RW

ENDEPOUT7

   

Write '1' to enable interrupt for ENDEPOUT[7] event

See EVENTS_ENDEPOUT[7]

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

U RW

ENDISOOUT

   

Write '1' to enable interrupt for ENDISOOUT event

See EVENTS_ENDISOOUT

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

V RW

SOF

   

Write '1' to enable interrupt for SOF event

See EVENTS_SOF

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

W RW

USBEVENT

   

Write '1' to enable interrupt for USBEVENT event

See EVENTS_USBEVENT

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

X RW

EP0SETUP

   

Write '1' to enable interrupt for EP0SETUP event

See EVENTS_EP0SETUP

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

Y RW

EPDATA

   

Write '1' to enable interrupt for EPDATA event

See EVENTS_EPDATA

     

Set

1

Enable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

INTENCLR

Address offset: 0x308

Disable interrupt

Bit number 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
ID             Y X W V U T S R Q P O N M L K J I H G F E D C B A
Reset 0x00000000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ID RW Field Value ID Value Description
A RW

USBRESET

   

Write '1' to disable interrupt for USBRESET event

See EVENTS_USBRESET

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

B RW

STARTED

   

Write '1' to disable interrupt for STARTED event

See EVENTS_STARTED

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

C RW

ENDEPIN0

   

Write '1' to disable interrupt for ENDEPIN[0] event

See EVENTS_ENDEPIN[0]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

D RW

ENDEPIN1

   

Write '1' to disable interrupt for ENDEPIN[1] event

See EVENTS_ENDEPIN[1]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

E RW

ENDEPIN2

   

Write '1' to disable interrupt for ENDEPIN[2] event

See EVENTS_ENDEPIN[2]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

F RW

ENDEPIN3

   

Write '1' to disable interrupt for ENDEPIN[3] event

See EVENTS_ENDEPIN[3]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

G RW

ENDEPIN4

   

Write '1' to disable interrupt for ENDEPIN[4] event

See EVENTS_ENDEPIN[4]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

H RW

ENDEPIN5

   

Write '1' to disable interrupt for ENDEPIN[5] event

See EVENTS_ENDEPIN[5]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

I RW

ENDEPIN6

   

Write '1' to disable interrupt for ENDEPIN[6] event

See EVENTS_ENDEPIN[6]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

J RW

ENDEPIN7

   

Write '1' to disable interrupt for ENDEPIN[7] event

See EVENTS_ENDEPIN[7]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

K RW

EP0DATADONE

   

Write '1' to disable interrupt for EP0DATADONE event

See EVENTS_EP0DATADONE

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

L RW

ENDISOIN

   

Write '1' to disable interrupt for ENDISOIN event

See EVENTS_ENDISOIN

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

M RW

ENDEPOUT0

   

Write '1' to disable interrupt for ENDEPOUT[0] event

See EVENTS_ENDEPOUT[0]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

N RW

ENDEPOUT1

   

Write '1' to disable interrupt for ENDEPOUT[1] event

See EVENTS_ENDEPOUT[1]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

O RW

ENDEPOUT2

   

Write '1' to disable interrupt for ENDEPOUT[2] event

See EVENTS_ENDEPOUT[2]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

P RW

ENDEPOUT3

   

Write '1' to disable interrupt for ENDEPOUT[3] event

See EVENTS_ENDEPOUT[3]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

Q RW

ENDEPOUT4

   

Write '1' to disable interrupt for ENDEPOUT[4] event

See EVENTS_ENDEPOUT[4]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

R RW

ENDEPOUT5

   

Write '1' to disable interrupt for ENDEPOUT[5] event

See EVENTS_ENDEPOUT[5]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

S RW

ENDEPOUT6

   

Write '1' to disable interrupt for ENDEPOUT[6] event

See EVENTS_ENDEPOUT[6]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

T RW

ENDEPOUT7

   

Write '1' to disable interrupt for ENDEPOUT[7] event

See EVENTS_ENDEPOUT[7]

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

U RW

ENDISOOUT

   

Write '1' to disable interrupt for ENDISOOUT event

See EVENTS_ENDISOOUT

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

V RW

SOF

   

Write '1' to disable interrupt for SOF event

See EVENTS_SOF

     

Clear

1

Disable

     

Disabled

0

Read: Disabled

     

Enabled

1

Read: Enabled

W RW

USBEVENT

   

Write '1' to disable interrupt for USBEVENT event

See EVENTS_USBEVENT

     

Clear

1

Disable

     

Disabled

0

Read: Disabled