RM0367 Rev 7 35/1043
RM0367 Contents
40
31.7 SPI and I
2
S registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 913
31.7.1 SPI control register 1 (SPI_CR1) (not used in I
2
S mode) . . . . . . . . . . 913
31.7.2 SPI control register 2 (SPI_CR2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
31.7.3 SPI status register (SPI_SR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916
31.7.4 SPI data register (SPI_DR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
31.7.5 SPI CRC polynomial register (SPI_CRCPR) (not used in I
2
S
mode) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918
31.7.6 SPI RX CRC register (SPI_RXCRCR) (not used in I
2
S mode) . . . . . . 919
31.7.7 SPI TX CRC register (SPI_TXCRCR) (not used in I
2
S mode) . . . . . . . 919
31.7.8 SPI_I
2
S configuration register (SPI_I2SCFGR) . . . . . . . . . . . . . . . . . . 920
31.7.9 SPI_I
2
S prescaler register (SPI_I2SPR) . . . . . . . . . . . . . . . . . . . . . . . 921
31.7.10 SPI register map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 922
32 Universal serial bus full-speed device interface (USB) . . . . . . . . . . . 923
32.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
32.2 USB main features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
32.3 USB implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923
32.4 USB functional description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 924
32.4.1 Description of USB blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925
32.5 Programming considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
32.5.1 Generic USB device programming . . . . . . . . . . . . . . . . . . . . . . . . . . . 926
32.5.2 System and power-on reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
USB reset (RESET interrupt) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .927
Structure and usage of packet buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .927
Endpoint initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .929
IN packets (data transmission) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .929
OUT and SETUP packets (data reception) . . . . . . . . . . . . . . . . . . . . . . . . . . . .930
Control transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .931
32.5.3 Double-buffered endpoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932
32.5.4 Isochronous transfers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 934
32.5.5 Suspend/Resume events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
32.6 USB and USB SRAM registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
32.6.1 Common registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 938
USB control register (USB_CNTR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .938
USB interrupt status register (USB_ISTR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .940
USB frame number register (USB_FNR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .943
USB device address (USB_DADDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .943
Buffer table address (USB_BTABLE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .944