TMP92CZ26A
92CZ26A-417
3.16.5.2 Printer Class Request
UDC does not support “Automatic answer” of printer class request.
Transaction for Class request is the same as vendor request; answering to
INT_SETUP interrupt.
3.16.5.3 Vendor request (Class request)
UDC doesn’t support “Automatic answer” of Vendor request.
According to INT_SETUP interrupt, access register that device request is stored,
and discern receiving request. If this request is vendor request, control UDC from
external, and execute transaction for Vendor request.
Below is explanation for case of data phase is transmitting (Control read), and
case of data phase is receiving (Control write).
(a) Control Read request
bmRequestType bRequest wValue wIndex wLength Data
110000xxB Vender peculiar Vender peculiar Vender peculiar Vender peculiar
(Expire 0)
Vendor data
When INT_SETUP is received, judge contents of receiving request by
bmRequestType, bRequest, wValue, wIndex and wLength registers. And execute
transaction for each request. As application, access Setup_Received register after
request was judged. And it must inform that INT_SETUP interrupt was
recognized to UDC.
After transmitting data prepared in application, access DATASET register, and
confirm EP0_DSET_A bit is “0”. After confirming, write data FIFO of endpoint 0.
If transmitting data more than payload, write data after it confirmed whether a
bit of EP0_DSET_A in DATASET register is “0”. (INT_ENDPOINT0 interrupt is
can be used.) If writing all data finished, write “0” to EP0 bit of EOP register.
When UDC receive it, status stage finish automatically.
And when UDC finish status stage normally, INT_STATUS interrupt is
asserted. If finishing status stage normally is recognized to external application,
manage this stage by using this interrupt signal. If status stage cannot be
finished normally and during status stage, maybe new SETUP token is received.
In this case, when INT_SETUP interrupt signal is asserted, “1” is set to
STAGE_ERROR bit of EP0_STATUS register. And it informs it to external that
status stage cannot be finished normally.
And maybe dataphase finish in data number that is short than value showed
to wLength by protocol of control read transfer type in USB. If application
program is configured by using only wLength value, transaction for it cannot be
when host shift to status stage without arriving at expecting data number. At this
point, shifting to status stage can be confirmed by using INT_STATUSNAK
interrupt signal. (However, releasing mask of STATUS_NAK bit by using
interrupt control register is needed.) In Vendor Request, this problem will not
generate because of receiving buffer size is set to host controller by driver,
actually.
Note: In every host, data (data that is transmitted from device by payload of 8 bytes) may be
recognized to short packet until confirming payload size of device side. And it may become to above
case on the exterior. Therefore, if controlling standard request by using software, be careful.)