The USB module provides a communication connection between the PC host and the microcontroller according to the USB specification. The data transmission between PC and microcontroller is accomplished by sharing a special data buffer which can be accessed directly by USB peripheral. The size of this dedicated data buffer is determined by the number of endpoints used and the maximum data packet size per end point, with a maximum of 512-byte buffers per end point and a maximum of 16 one-way or 8 two-way endpoints. The USB module communicates with PC, and realizes the detection of card grouping, the place of sending / receiving data and the place of shaking hands grouping according to USB specification. The format of the entire transmission is done by the hardware, including CRC Generation and verification.