Datasheet

Section 16 USB Function Module (USB)
Page 1014 of 1408 R01UH0309EJ0500 Rev. 5.00
Sep 24, 2012
H8S/2456, H8S/2456R, H8S/2454 Group
16.8.4 DMA Transfer for Endpoints 2
When the transmit data at EP2 is transferred by the DMAC, the USB function module
automatically performs the same processing as writing 1 to the PKTE bit in TRG1 if the currently
selected FIFO (64 bytes) becomes full. Accordingly, to transfer data of a multiple of 64 bytes, the
user need not write 1 to the PKTE bit in TRG1. To transfer data of less than 64 bytes, the user
must write 1 to the PKTE bit using the DMA transfer end interrupt of the on-chip DMAC. If the
user writes 1 to the PKTE bit in TRG1 when the maximum number of bytes (64 bytes) are
transferred, correct operation cannot be guaranteed.
Figure 16.22 shows an example for transmitting 150 bytes of data to the host. In this case, internal
processing which is the same as writing 1 to the PKTE bit in TRG1 is automatically performed
twice. This internal processing is performed when the currently selected data FIFO becomes full.
Accordingly, this processing is automatically performed only when 64-byte data is sent.
When the last 22 bytes are sent, the internal processing for writing 1 to the PKTE bit in TRG1 is
not performed, and the user must write 1 to the PKTE bit by software. In this case, the application
has no more data to transfer but the USB function module continues to output DMA requests for
EP2 as long as the FIFO has an empty space. When all data has been transferred, write 0 to the
EP2 DMAE bit in DMAR to cancel DMA requests for EP2.
PKTE
(Automatically
performed)
PKTE
(Automatically
performed)
PKTE is
not performed
Execute by DMA transfer
end interrupt (user)
64 bytes 64 bytes
22 bytes
Figure 16.22 PKTE Bit Operation for EP2