STM32G0C1 1.5 STM32G0C1 CM0 r0p1 little true false 4 false 8 32 0x20 0x0 0xFFFFFFFF AES Advanced Encryption Standard AES 0x40026000 0x0 0x400 registers AES_CR AES_CR AES control register 0x0 0x20 0x00000000 0xFFFFFFFF EN AES enable This bit enables/disables the AES peripheral: At any moment, clearing then setting the bit re-initializes the AES peripheral. This bit is automatically cleared by hardware upon the completion of the key preparation (Mode 2) and upon the completion of GCM/GMAC/CCM initial phase. 0 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 DATATYPE Data type selection This bitfield defines the format of data written in the AES_DINR register or read from the AES_DOUTR register, through selecting the mode of data swapping: For more details, refer to . Attempts to write the bitfield are ignored when the EN bit of the AES_CR register is set before the write access and it is not cleared by that write access. 1 2 read-write B_0x0 None 0x0 B_0x1 Half-word (16-bit) 0x1 B_0x2 Byte (8-bit) 0x2 B_0x3 Bit 0x3 MODE AES operating mode This bitfield selects the AES operating mode: Attempts to write the bitfield are ignored when the EN bit of the AES_CR register is set before the write access and it is not cleared by that write access. Any attempt to selecting Mode 4 while either ECB or CBC chaining mode is not selected, defaults to effective selection of Mode 3. It is not possible to select a Mode 3 following a Mode 4. 3 2 read-write B_0x0 Mode 1: encryption 0x0 B_0x1 Mode 2: key derivation (or key preparation for ECB/CBC decryption) 0x1 B_0x2 Mode 3: decryption 0x2 B_0x3 Mode 4: key derivation then single decryption 0x3 CHMOD1 Chaining mode selection, bit [2] Refer to the bits [5:6] of the register for the description of the CHMOD[2:0] bitfield CHMOD[1:0]: Chaining mode selection, bits [1:0] This bitfield, together with the bit CHMOD[2] forming CHMOD[2:0], selects the AES chaining mode: others: Reserved Attempts to write the bitfield are ignored when the EN bit of the AES_CR register is set before the write access and it is not cleared by that write access. 5 2 read-write B_0x0 Electronic codebook (ECB) 0x0 B_0x1 Cipher-Block Chaining (CBC) 0x1 B_0x2 Counter Mode (CTR) 0x2 B_0x3 Galois Counter Mode (GCM) and Galois Message Authentication Code (GMAC) 0x3 B_0x4 Counter with CBC-MAC (CCM) 0x4 CCFC Computation complete flag clear Upon written to 1, this bit clears the computation complete flag (CCF) in the AES_SR register: Reading the flag always returns zero. 7 1 read-write B_0x0 No effect 0x0 B_0x1 Clear CCF 0x1 ERRC Error flag clear Upon written to 1, this bit clears the RDERR and WRERR error flags in the AES_SR register: Reading the flag always returns zero. 8 1 read-write B_0x0 No effect 0x0 B_0x1 Clear RDERR and WRERR flags 0x1 CCFIE CCF interrupt enable This bit enables or disables (masks) the AES interrupt generation when CCF (computation complete flag) is set: 9 1 read-write B_0x0 Disable (mask) 0x0 B_0x1 Enable 0x1 ERRIE Error interrupt enable This bit enables or disables (masks) the AES interrupt generation when RDERR and/or WRERR is set: 10 1 read-write B_0x0 Disable (mask) 0x0 B_0x1 Enable 0x1 DMAINEN DMA input enable This bit enables/disables data transferring with DMA, in the input phase: When the bit is set, DMA requests are automatically generated by AES during the input data phase. This feature is only effective when Mode 1 or Mode 3 is selected through the MODE[1:0] bitfield. It is not effective for Mode 2 (key derivation). Usage of DMA with Mode 4 (single decryption) is not recommended. 11 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 DMAOUTEN DMA output enable This bit enables/disables data transferring with DMA, in the output phase: When the bit is set, DMA requests are automatically generated by AES during the output data phase. This feature is only effective when Mode 1 or Mode 3 is selected through the MODE[1:0] bitfield. It is not effective for Mode 2 (key derivation). Usage of DMA with Mode 4 (single decryption) is not recommended. 12 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 GCMPH GCM or CCM phase selection This bitfield selects the phase of GCM, GMAC or CCM algorithm: The bitfield has no effect if other than GCM, GMAC or CCM algorithms are selected (through the ALGOMODE bitfield). 13 2 read-write B_0x0 Init phase 0x0 B_0x1 Header phase 0x1 B_0x2 Payload phase 0x2 B_0x3 Final phase 0x3 CHMOD2 Chaining mode selection, bit [2] Refer to the bits [5:6] of the register for the description of the CHMOD[2:0] bitfield CHMOD[1:0]: Chaining mode selection, bits [1:0] This bitfield, together with the bit CHMOD[2] forming CHMOD[2:0], selects the AES chaining mode: others: Reserved Attempts to write the bitfield are ignored when the EN bit of the AES_CR register is set before the write access and it is not cleared by that write access. 16 1 read-write B_0x0 Electronic codebook (ECB) 0x0 B_0x1 Cipher-Block Chaining (CBC) 0x1 B_0x2 Counter Mode (CTR) 0x2 B_0x3 Galois Counter Mode (GCM) and Galois Message Authentication Code (GMAC) 0x3 B_0x4 Counter with CBC-MAC (CCM) 0x4 KEYSIZE Key size selection This bitfield defines the length of the key used in the AES cryptographic core, in bits: Attempts to write the bit are ignored when the EN bit of the AES_CR register is set before the write access and it is not cleared by that write access. 18 1 read-write B_0x0 128 0x0 B_0x1 256 0x1 NPBLB Number of padding bytes in last block The bitfield sets the number of padding bytes in last block of payload: ... 20 4 read-write B_0x0 All bytes are valid (no padding) 0x0 B_0x1 Padding for one least-significant byte of last block 0x1 B_0xF Padding for 15 least-significant bytes of last block 0xF AES_SR AES_SR AES status register 0x4 0x20 0x00000000 0xFFFFFFFF CCF Computation completed flag This flag indicates whether the computation is completed: The flag is set by hardware upon the completion of the computation. It is cleared by software, upon setting the CCFC bit of the AES_CR register. Upon the flag setting, an interrupt is generated if enabled through the CCFIE bit of the AES_CR register. The flag is significant only when the DMAOUTEN bit is 0. It may stay high when DMA_EN is 1. 0 1 read-only B_0x0 Not completed 0x0 B_0x1 Completed 0x1 RDERR Read error flag This flag indicates the detection of an unexpected read operation from the AES_DOUTR register (during computation or data input phase): The flag is set by hardware. It is cleared by software upon setting the ERRC bit of the AES_CR register. Upon the flag setting, an interrupt is generated if enabled through the ERRIE bit of the AES_CR register. The flag setting has no impact on the AES operation. Unexpected read returns zero. 1 1 read-only B_0x0 Not detected 0x0 B_0x1 Detected 0x1 WRERR Write error This flag indicates the detection of an unexpected write operation to the AES_DINR register (during computation or data output phase): The flag is set by hardware. It is cleared by software upon setting the ERRC bit of the AES_CR register. Upon the flag setting, an interrupt is generated if enabled through the ERRIE bit of the AES_CR register. The flag setting has no impact on the AES operation. Unexpected write is ignored. 2 1 read-only B_0x0 Not detected 0x0 B_0x1 Detected 0x1 BUSY Busy This flag indicates whether AES is idle or busy during GCM payload encryption phase: When the flag indicates “idle”, the current GCM encryption processing may be suspended to process a higher-priority message. In other chaining modes, or in GCM phases other than payload encryption, the flag must be ignored for the suspend process. 3 1 read-only B_0x0 Idle 0x0 B_0x1 Busy 0x1 AES_DINR AES_DINR AES data input register 0x8 0x20 0x00000000 0xFFFFFFFF DIN Input data word A four-fold sequential write to this bitfield during the input phase results in writing a complete 128-bit block of input data to the AES peripheral. From the first to the fourth write, the corresponding data weights are [127:96], [95:64], [63:32], and [31:0]. Upon each write, the data from the 32-bit input buffer are handled by the data swap block according to the DATATYPE[1:0] bitfield, then written into the AES core 128-bit input buffer. The data signification of the input data block depends on the AES operating mode: - Mode 1 (encryption): plaintext - Mode 2 (key derivation): the bitfield is not used (AES_KEYRx registers used for input) - Mode 3 (decryption) and Mode 4 (key derivation then single decryption): ciphertext The data swap operation is described in page 499. 0 32 read-write AES_DOUTR AES_DOUTR AES data output register 0xc 0x20 0x00000000 0xFFFFFFFF DOUT Output data word This read-only bitfield fetches a 32-bit output buffer. A four-fold sequential read of this bitfield, upon the computation completion (CCF set), virtually reads a complete 128-bit block of output data from the AES peripheral. Before reaching the output buffer, the data produced by the AES core are handled by the data swap block according to the DATATYPE[1:0] bitfield. Data weights from the first to the fourth read operation are: [127:96], [95:64], [63:32], and [31:0]. The data signification of the output data block depends on the AES operating mode: - Mode 1 (encryption): ciphertext - Mode 2 (key derivation): the bitfield is not used (AES_KEYRx registers used for output) - Mode 3 (decryption) and Mode 4 (key derivation then single decryption): plaintext The data swap operation is described in page 499. 0 32 read-only AES_KEYR0 AES_KEYR0 AES key register 0 0x10 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [31:0] This bitfield contains the bits [31:0] of the AES encryption or decryption key, depending on the operating mode: - In Mode 1 (encryption), Mode 2 (key derivation) and Mode 4 (key derivation then single decryption): the value to write into the bitfield is the encryption key. - In Mode 3 (decryption): the value to write into the bitfield is the encryption key to be derived before being used for decryption. After writing the encryption key into the bitfield, its reading before enabling AES returns the same value. Its reading after enabling AES and after the CCF flag is set returns the decryption key derived from the encryption key. Note: In mode 4 (key derivation then single decryption) the bitfield always contains the encryption key. The AES_KEYRx registers may be written only when KEYSIZE value is correct and when the AES peripheral is disabled (EN bit of the AES_CR register cleared). Note that, if, the key is directly loaded to AES_KEYRx registers (hence writes to key register is ignored and KEIF is set). Refer to for more details. 0 32 read-write AES_KEYR1 AES_KEYR1 AES key register 1 0x14 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [63:32] Refer to the AES_KEYR0 register for description of the KEY[255:0] bitfield. 0 32 read-write AES_KEYR2 AES_KEYR2 AES key register 2 0x18 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [95:64] Refer to the AES_KEYR0 register for description of the KEY[255:0] bitfield. 0 32 read-write AES_KEYR3 AES_KEYR3 AES key register 3 0x1c 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [127:96] Refer to the AES_KEYR0 register for description of the KEY[255:0] bitfield. 0 32 read-write AES_IVR0 AES_IVR0 AES initialization vector register 0 0x20 0x20 0x00000000 0xFFFFFFFF IVI Initialization vector input, bits [31:0] Refer to for description of the IVI[127:0] bitfield. The initialization vector is only used in chaining modes other than ECB. The AES_IVRx registers may be written only when the AES peripheral is disabled 0 32 read-write AES_IVR1 AES_IVR1 AES initialization vector register 1 0x24 0x20 0x00000000 0xFFFFFFFF IVI Initialization vector input, bits [63:32] Refer to the AES_IVR0 register for description of the IVI[128:0] bitfield. 0 32 read-write AES_IVR2 AES_IVR2 AES initialization vector register 2 0x28 0x20 0x00000000 0xFFFFFFFF IVI Initialization vector input, bits [95:64] Refer to the AES_IVR0 register for description of the IVI[128:0] bitfield. 0 32 read-write AES_IVR3 AES_IVR3 AES initialization vector register 3 0x2c 0x20 0x00000000 0xFFFFFFFF IVI Initialization vector input, bits [127:96] Refer to the AES_IVR0 register for description of the IVI[128:0] bitfield. 0 32 read-write AES_KEYR4 AES_KEYR4 AES key register 4 0x30 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [159:128] Refer to the AES_KEYR0 register for description of the KEY[255:0] bitfield. 0 32 read-write AES_KEYR5 AES_KEYR5 AES key register 5 0x34 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [191:160] Refer to the AES_KEYR0 register for description of the KEY[255:0] bitfield. 0 32 read-write AES_KEYR6 AES_KEYR6 AES key register 6 0x38 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [223:192] Refer to the AES_KEYR0 register for description of the KEY[255:0] bitfield. 0 32 read-write AES_KEYR7 AES_KEYR7 AES key register 7 0x3c 0x20 0x00000000 0xFFFFFFFF KEY Cryptographic key, bits [255:224] Refer to the AES_KEYR0 register for description of the KEY[255:0] bitfield. 0 32 read-write AES_SUSP0R AES_SUSP0R AES suspend registers 0x40 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write AES_SUSP1R AES_SUSP1R AES suspend registers 0x44 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write AES_SUSP2R AES_SUSP2R AES suspend registers 0x48 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write AES_SUSP3R AES_SUSP3R AES suspend registers 0x4c 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write AES_SUSP4R AES_SUSP4R AES suspend registers 0x50 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write AES_SUSP5R AES_SUSP5R AES suspend registers 0x54 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write AES_SUSP6R AES_SUSP6R AES suspend registers 0x58 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write AES_SUSP7R AES_SUSP7R AES suspend registers 0x5c 0x20 0x00000000 0xFFFFFFFF SUSP AES suspend Upon suspend operation, this bitfield of every AES_SUSPxR register takes the value of one of internal AES registers. 0 32 read-write ADC Analog to Digital Converter ADC 0x40012400 0x0 0x400 registers ADC_COMP ADC and COMP interrupts (ADC combined with EXTI 17 and 18) 12 ADC_ISR ADC_ISR ADC interrupt and status register 0x0 0x20 0x00000000 0xFFFFFFFF ADRDY ADC ready This bit is set by hardware after the ADC has been enabled (ADEN = 1) and when the ADC reaches a state where it is ready to accept conversion requests. It is cleared by software writing 1 to it. 0 1 read-write B_0x0 ADC not yet ready to start conversion (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 ADC is ready to start conversion 0x1 EOSMP End of sampling flag This bit is set by hardware during the conversion, at the end of the sampling phase.It is cleared by software by programming it to '1’. 1 1 read-write B_0x0 Not at the end of the sampling phase (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 End of sampling phase reached 0x1 EOC End of conversion flag This bit is set by hardware at the end of each conversion of a channel when a new data result is available in the ADC_DR register. It is cleared by software writing 1 to it or by reading the ADC_DR register. 2 1 read-write B_0x0 Channel conversion not complete (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 Channel conversion complete 0x1 EOS End of sequence flag This bit is set by hardware at the end of the conversion of a sequence of channels selected by the CHSEL bits. It is cleared by software writing 1 to it. 3 1 read-write B_0x0 Conversion sequence not complete (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 Conversion sequence complete 0x1 OVR ADC overrun This bit is set by hardware when an overrun occurs, meaning that a new conversion has complete while the EOC flag was already set. It is cleared by software writing 1 to it. 4 1 read-write B_0x0 No overrun occurred (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 Overrun has occurred 0x1 AWD1 Analog watchdog 1 flag This bit is set by hardware when the converted voltage crosses the values programmed in ADC_TR1 and ADC_HR1 registers. It is cleared by software by programming it to 1. 7 1 read-write B_0x0 No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 Analog watchdog event occurred 0x1 AWD2 Analog watchdog 2 flag This bit is set by hardware when the converted voltage crosses the values programmed in ADC_AWD2TR and ADC_AWD2TR registers. It is cleared by software programming it it. 8 1 read-write B_0x0 No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 Analog watchdog event occurred 0x1 AWD3 Analog watchdog 3 flag This bit is set by hardware when the converted voltage crosses the values programmed in ADC_AWD3TR and ADC_AWD3TR registers. It is cleared by software by programming it to 1. 9 1 read-write B_0x0 No analog watchdog event occurred (or the flag event was already acknowledged and cleared by software) 0x0 B_0x1 Analog watchdog event occurred 0x1 EOCAL End Of Calibration flag This bit is set by hardware when calibration is complete. It is cleared by software writing 1 to it. 11 1 read-write B_0x0 Calibration is not complete 0x0 B_0x1 Calibration is complete 0x1 CCRDY Channel Configuration Ready flag This flag bit is set by hardware when the channel configuration is applied after programming to ADC_CHSELR register or changing CHSELRMOD or SCANDIR. It is cleared by software by programming it to it. Note: When the software configures the channels (by programming ADC_CHSELR or changing CHSELRMOD or SCANDIR), it must wait until the CCRDY flag rises before configuring again or starting conversions, otherwise the new configuration (or the START bit) is ignored. Once the flag is asserted, if the software needs to configure again the channels, it must clear the CCRDY flag before proceeding with a new configuration. 13 1 read-write B_0x0 Channel configuration update not applied. 0x0 B_0x1 Channel configuration update is applied. 0x1 ADC_IER ADC_IER ADC interrupt enable register 0x4 0x20 0x00000000 0xFFFFFFFF ADRDYIE ADC ready interrupt enable This bit is set and cleared by software to enable/disable the ADC Ready interrupt. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 0 1 read-write B_0x0 ADRDY interrupt disabled. 0x0 B_0x1 ADRDY interrupt enabled. An interrupt is generated when the ADRDY bit is set. 0x1 EOSMPIE End of sampling flag interrupt enable This bit is set and cleared by software to enable/disable the end of the sampling phase interrupt. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 1 1 read-write B_0x0 EOSMP interrupt disabled. 0x0 B_0x1 EOSMP interrupt enabled. An interrupt is generated when the EOSMP bit is set. 0x1 EOCIE End of conversion interrupt enable This bit is set and cleared by software to enable/disable the end of conversion interrupt. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 2 1 read-write B_0x0 EOC interrupt disabled 0x0 B_0x1 EOC interrupt enabled. An interrupt is generated when the EOC bit is set. 0x1 EOSIE End of conversion sequence interrupt enable This bit is set and cleared by software to enable/disable the end of sequence of conversions interrupt. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 3 1 read-write B_0x0 EOS interrupt disabled 0x0 B_0x1 EOS interrupt enabled. An interrupt is generated when the EOS bit is set. 0x1 OVRIE Overrun interrupt enable This bit is set and cleared by software to enable/disable the overrun interrupt. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 4 1 read-write B_0x0 Overrun interrupt disabled 0x0 B_0x1 Overrun interrupt enabled. An interrupt is generated when the OVR bit is set. 0x1 AWD1IE Analog watchdog 1 interrupt enable This bit is set and cleared by software to enable/disable the analog watchdog interrupt. Note: The Software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 7 1 read-write B_0x0 Analog watchdog interrupt disabled 0x0 B_0x1 Analog watchdog interrupt enabled 0x1 AWD2IE Analog watchdog 2 interrupt enable This bit is set and cleared by software to enable/disable the analog watchdog interrupt. Note: The Software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 8 1 read-write B_0x0 Analog watchdog interrupt disabled 0x0 B_0x1 Analog watchdog interrupt enabled 0x1 AWD3IE Analog watchdog 3 interrupt enable This bit is set and cleared by software to enable/disable the analog watchdog interrupt. Note: The Software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 9 1 read-write B_0x0 Analog watchdog interrupt disabled 0x0 B_0x1 Analog watchdog interrupt enabled 0x1 EOCALIE End of calibration interrupt enable This bit is set and cleared by software to enable/disable the end of calibration interrupt. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 11 1 read-write B_0x0 End of calibration interrupt disabled 0x0 B_0x1 End of calibration interrupt enabled 0x1 CCRDYIE Channel Configuration Ready Interrupt enable This bit is set and cleared by software to enable/disable the channel configuration ready interrupt. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 13 1 read-write B_0x0 Channel configuration ready interrupt disabled 0x0 B_0x1 Channel configuration ready interrupt enabled 0x1 ADC_CR ADC_CR ADC control register 0x8 0x20 0x00000000 0xFFFFFFFF ADEN ADC enable command This bit is set by software to enable the ADC. The ADC is effectively ready to operate once the ADRDY flag has been set. It is cleared by hardware when the ADC is disabled, after the execution of the ADDIS command. Note: The software is allowed to set ADEN only when all bits of ADC_CR registers are 0 (ADCAL = 0, ADSTP = 0, ADSTART = 0, ADDIS = 0 and ADEN = 0) 0 1 read-write B_0x0 ADC is disabled (OFF state) 0x0 B_0x1 Write 1 to enable the ADC. 0x1 ADDIS ADC disable command This bit is set by software to disable the ADC (ADDIS command) and put it into power-down state (OFF state). It is cleared by hardware once the ADC is effectively disabled (ADEN is also cleared by hardware at this time). Note: Setting ADDIS to '1’ is only effective when ADEN = 1 and ADSTART = 0 (which ensures that no conversion is ongoing) 1 1 read-write B_0x0 No ADDIS command ongoing 0x0 B_0x1 Write 1 to disable the ADC. Read 1 means that an ADDIS command is in progress. 0x1 ADSTART ADC start conversion command This bit is set by software to start ADC conversion. Depending on the EXTEN [1:0] configuration bits, a conversion either starts immediately (software trigger configuration) or once a hardware trigger event occurs (hardware trigger configuration). It is cleared by hardware: In single conversion mode (CONT = 0, DISCEN = 0), when software trigger is selected (EXTEN = 00): at the assertion of the end of Conversion Sequence (EOS) flag. In discontinuous conversion mode(CONT = 0, DISCEN = 1), when the software trigger is selected (EXTEN = 00): at the assertion of the end of Conversion (EOC) flag. In all other cases: after the execution of the ADSTP command, at the same time as the ADSTP bit is cleared by hardware. Note: The software is allowed to set ADSTART only when ADEN = 1 and ADDIS = 0 (ADC is enabled and there is no pending request to disable the ADC). After writing to ADC_CHSELR register or changing CHSELRMOD or SCANDIRW, it is mandatory to wait until CCRDY flag is asserted before setting ADSTART, otherwise, the value written to ADSTART is ignored. 2 1 read-write B_0x0 No ADC conversion is ongoing. 0x0 B_0x1 Write 1 to start the ADC. Read 1 means that the ADC is operating and may be converting. 0x1 ADSTP ADC stop conversion command This bit is set by software to stop and discard an ongoing conversion (ADSTP Command). It is cleared by hardware when the conversion is effectively discarded and the ADC is ready to accept a new start conversion command. Note: Setting ADSTP to '1’ is only effective when ADSTART = 1 and ADDIS = 0 (ADC is enabled and may be converting and there is no pending request to disable the ADC) 4 1 read-write B_0x0 No ADC stop conversion command ongoing 0x0 B_0x1 Write 1 to stop the ADC. Read 1 means that an ADSTP command is in progress. 0x1 ADVREGEN ADC Voltage Regulator Enable This bit is set by software, to enable the ADC internal voltage regulator. The voltage regulator output is available after tADCVREG_SETUP. It is cleared by software to disable the voltage regulator. It can be cleared only if ADEN is et to 0. Note: The software is allowed to program this bit field only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0). 28 1 read-write B_0x0 ADC voltage regulator disabled 0x0 B_0x1 ADC voltage regulator enabled 0x1 ADCAL ADC calibration This bit is set by software to start the calibration of the ADC. It is cleared by hardware after calibration is complete. Note: The software is allowed to set ADCAL only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0). The software is allowed to update the calibration factor by writing ADC_CALFACT only when ADEN = 1 and ADSTART = 0 (ADC enabled and no conversion is ongoing). 31 1 read-write B_0x0 Calibration complete 0x0 B_0x1 Write 1 to calibrate the ADC. Read at 1 means that a calibration is in progress. 0x1 ADC_CFGR1 ADC_CFGR1 ADC configuration register 1 0xc 0x20 0x00000000 0xFFFFFFFF DMAEN Direct memory access enable This bit is set and cleared by software to enable the generation of DMA requests. This allows the DMA controller to be used to manage automatically the converted data. For more details, refer to . Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 0 1 read-write B_0x0 DMA disabled 0x0 B_0x1 DMA enabled 0x1 DMACFG Direct memory access configuration This bit is set and cleared by software to select between two DMA modes of operation and is effective only when DMAEN = 1. For more details, refer to page 403 Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 1 1 read-write B_0x0 DMA one shot mode selected 0x0 B_0x1 DMA circular mode selected 0x1 SCANDIR Scan sequence direction This bit is set and cleared by software to select the direction in which the channels is scanned in the sequence. It is effective only if CHSELMOD bit is cleared to 0. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 2 1 read-write B_0x0 Upward scan (from CHSEL0 to CHSEL18) 0x0 B_0x1 Backward scan (from CHSEL18 to CHSEL0) 0x1 RES Data resolution These bits are written by software to select the resolution of the conversion. Note: The software is allowed to write these bits only when ADEN = 0. 3 2 read-write B_0x0 12 bits 0x0 B_0x1 10 bits 0x1 B_0x2 8 bits 0x2 B_0x3 6 bits 0x3 ALIGN Data alignment This bit is set and cleared by software to select right or left alignment. Refer to Data alignment and resolution (oversampling disabled: OVSE = 0) on page 401 Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 5 1 read-write B_0x0 Right alignment 0x0 B_0x1 Left alignment 0x1 EXTSEL External trigger selection These bits select the external event used to trigger the start of conversion (refer to External triggers for details): Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 6 3 read-write B_0x0 TRG0 0x0 B_0x1 TRG1 0x1 B_0x2 TRG2 0x2 B_0x3 TRG3 0x3 B_0x4 TRG4 0x4 B_0x5 TRG5 0x5 B_0x6 TRG6 0x6 B_0x7 TRG7 0x7 EXTEN External trigger enable and polarity selection These bits are set and cleared by software to select the external trigger polarity and enable the trigger. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 10 2 read-write B_0x0 Hardware trigger detection disabled (conversions can be started by software) 0x0 B_0x1 Hardware trigger detection on the rising edge 0x1 B_0x2 Hardware trigger detection on the falling edge 0x2 B_0x3 Hardware trigger detection on both the rising and falling edges 0x3 OVRMOD Overrun management mode This bit is set and cleared by software and configure the way data overruns are managed. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 12 1 read-write B_0x0 ADC_DR register is preserved with the old data when an overrun is detected. 0x0 B_0x1 ADC_DR register is overwritten with the last conversion result when an overrun is detected. 0x1 CONT Single / continuous conversion mode This bit is set and cleared by software. If it is set, conversion takes place continuously until it is cleared. Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1. The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 13 1 read-write B_0x0 Single conversion mode 0x0 B_0x1 Continuous conversion mode 0x1 WAIT Wait conversion mode This bit is set and cleared by software to enable/disable wait conversion mode.. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 14 1 read-write B_0x0 Wait conversion mode off 0x0 B_0x1 Wait conversion mode on 0x1 AUTOFF Auto-off mode This bit is set and cleared by software to enable/disable auto-off mode.. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 15 1 read-write B_0x0 Auto-off mode disabled 0x0 B_0x1 Auto-off mode enabled 0x1 DISCEN Discontinuous mode This bit is set and cleared by software to enable/disable discontinuous mode. Note: It is not possible to have both discontinuous mode and continuous mode enabled: it is forbidden to set both bits DISCEN = 1 and CONT = 1. The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 16 1 read-write B_0x0 Discontinuous mode disabled 0x0 B_0x1 Discontinuous mode enabled 0x1 CHSELRMOD Mode selection of the ADC_CHSELR register This bit is set and cleared by software to control the ADC_CHSELR feature: Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 21 1 read-write B_0x0 Each bit of the ADC_CHSELR register enables an input 0x0 B_0x1 ADC_CHSELR register is able to sequence up to 8 channels 0x1 AWD1SGL Enable the watchdog on a single channel or on all channels This bit is set and cleared by software to enable the analog watchdog on the channel identified by the AWDCH[4:0] bits or on all the channels Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 22 1 read-write B_0x0 Analog watchdog 1 enabled on all channels 0x0 B_0x1 Analog watchdog 1 enabled on a single channel 0x1 AWD1EN Analog watchdog enable This bit is set and cleared by software. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 23 1 read-write B_0x0 Analog watchdog 1 disabled 0x0 B_0x1 Analog watchdog 1 enabled 0x1 AWD1CH Analog watchdog channel selection These bits are set and cleared by software. They select the input channel to be guarded by the analog watchdog. ..... Others: Reserved Note: The channel selected by the AWDCH[4:0] bits must be also set into the CHSELR register. The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 26 5 read-write B_0x0 ADC analog input Channel 0 monitored by AWD 0x0 B_0x1 ADC analog input Channel 1 monitored by AWD 0x1 B_0x11 ADC analog input Channel 17 monitored by AWD 0x11 B_0x12 ADC analog input Channel 18 monitored by AWD 0x12 ADC_CFGR2 ADC_CFGR2 ADC configuration register 2 0x10 0x20 0x00000000 0xFFFFFFFF OVSE Oversampler Enable This bit is set and cleared by software. Note: Software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 0 1 read-write B_0x0 Oversampler disabled 0x0 B_0x1 Oversampler enabled 0x1 OVSR Oversampling ratio This bit filed defines the number of oversampling ratio. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 2 3 read-write B_0x0 2x 0x0 B_0x1 4x 0x1 B_0x2 8x 0x2 B_0x3 16x 0x3 B_0x4 32x 0x4 B_0x5 64x 0x5 B_0x6 128x 0x6 B_0x7 256x 0x7 OVSS Oversampling shift This bit is set and cleared by software. Others: Reserved Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 5 4 read-write B_0x0 No shift 0x0 B_0x1 Shift 1-bit 0x1 B_0x2 Shift 2-bits 0x2 B_0x3 Shift 3-bits 0x3 B_0x4 Shift 4-bits 0x4 B_0x5 Shift 5-bits 0x5 B_0x6 Shift 6-bits 0x6 B_0x7 Shift 7-bits 0x7 B_0x8 Shift 8-bits 0x8 TOVS Triggered Oversampling This bit is set and cleared by software. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 9 1 read-write B_0x0 All oversampled conversions for a channel are done consecutively after a trigger 0x0 B_0x1 Each oversampled conversion for a channel needs a trigger 0x1 LFTRIG Low frequency trigger mode enable This bit is set and cleared by software. Note: The software is allowed to write this bit only when ADSTART bit is cleared to 0 (this ensures that no conversion is ongoing). 29 1 read-write B_0x0 Low Frequency Trigger Mode disabled 0x0 B_0x1 Low Frequency Trigger Mode enabled 0x1 CKMODE ADC clock mode These bits are set and cleared by software to define how the analog ADC is clocked: In all synchronous clock modes, there is no jitter in the delay from a timer trigger to the start of a conversion. Note: The software is allowed to write these bits only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0). 30 2 read-write B_0x0 ADCCLK (Asynchronous clock mode), generated at product level (refer to RCC section) 0x0 B_0x1 PCLK/2 (Synchronous clock mode) 0x1 B_0x2 PCLK/4 (Synchronous clock mode) 0x2 B_0x3 PCLK (Synchronous clock mode). This configuration must be enabled only if PCLK has a 50% duty clock cycle (APB prescaler configured inside the RCC must be bypassed and the system clock must by 50% duty cycle) 0x3 ADC_SMPR ADC_SMPR ADC sampling time register 0x14 0x20 0x00000000 0xFFFFFFFF SMP1 Sampling time selection 1 These bits are written by software to select the sampling time that applies to all channels. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 0 3 read-write B_0x0 1.5 ADC clock cycles 0x0 B_0x1 3.5 ADC clock cycles 0x1 B_0x2 7.5 ADC clock cycles 0x2 B_0x3 12.5 ADC clock cycles 0x3 B_0x4 19.5 ADC clock cycles 0x4 B_0x5 39.5 ADC clock cycles 0x5 B_0x6 79.5 ADC clock cycles 0x6 B_0x7 160.5 ADC clock cycles 0x7 SMP2 Sampling time selection 2 These bits are written by software to select the sampling time that applies to all channels. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 4 3 read-write B_0x0 1.5 ADC clock cycles 0x0 B_0x1 3.5 ADC clock cycles 0x1 B_0x2 7.5 ADC clock cycles 0x2 B_0x3 12.5 ADC clock cycles 0x3 B_0x4 19.5 ADC clock cycles 0x4 B_0x5 39.5 ADC clock cycles 0x5 B_0x6 79.5 ADC clock cycles 0x6 B_0x7 160.5 ADC clock cycles 0x7 SMPSEL0 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 8 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL1 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 9 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL2 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 10 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL3 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 11 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL4 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 12 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL5 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 13 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL6 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 14 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL7 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 15 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL8 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 16 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL9 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 17 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL10 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 18 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL11 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 19 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL12 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 20 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL13 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 21 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL14 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 22 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL15 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 23 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL16 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 24 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL17 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 25 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 SMPSEL18 Channel-x sampling time selection These bits are written by software to define which sampling time is used. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 26 1 read-write B_0x0 Sampling time of CHANNELx use the setting of SMP1[2:0] register. 0x0 B_0x1 Sampling time of CHANNELx use the setting of SMP2[2:0] register. 0x1 ADC_AWD1TR ADC_AWD1TR ADC watchdog threshold register 0x20 0x20 0x0FFF0000 0xFFFFFFFF LT1 Analog watchdog 1 lower threshold These bits are written by software to define the lower threshold for the analog watchdog. Refer to ADC_AWDxTR) on page 407. 0 12 read-write HT1 Analog watchdog 1 higher threshold These bits are written by software to define the higher threshold for the analog watchdog. Refer to ADC_AWDxTR) on page 407. 16 12 read-write ADC_AWD2TR ADC_AWD2TR ADC watchdog threshold register 0x24 0x20 0x0FFF0000 0xFFFFFFFF LT2 Analog watchdog 2 lower threshold These bits are written by software to define the lower threshold for the analog watchdog. Refer to ADC_AWDxTR) on page 407. 0 12 read-write HT2 Analog watchdog 2 higher threshold These bits are written by software to define the higher threshold for the analog watchdog. Refer to ADC_AWDxTR) on page 407. 16 12 read-write ADC_CHSELR ADC_CHSELR ADC channel selection register [alternate] 0x28 0x20 0x00000000 0xFFFFFFFF CHSEL0 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 0 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL1 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 1 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL2 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 2 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL3 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 3 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL4 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 4 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL5 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 5 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL6 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 6 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL7 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 7 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL8 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 8 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL9 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 9 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL10 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 10 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL11 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 11 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL12 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 12 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL13 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 13 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL14 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 14 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL15 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 15 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL16 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 16 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL17 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 17 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSEL18 Channel-x selection These bits are written by software and define which channels are part of the sequence of channels to be converted. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). If CCRDY is not yet asserted after channel configuration (writing ADC_CHSELR register or changing CHSELRMOD or SCANDIR), the value written to this bit is ignored. 18 1 read-write B_0x0 Input Channel-x is not selected for conversion 0x0 B_0x1 Input Channel-x is selected for conversion 0x1 CHSELR_1 CHSELR_1 channel selection register CHSELRMOD = 1 in ADC_CFGR1 ADC_CHSELR 0x28 0x20 0x00000000 0xFFFFFFFF SQ1 1st conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. Refer to SQ8[3:0] for a definition of channel selection. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 0 4 read-write SQ2 2nd conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. Refer to SQ8[3:0] for a definition of channel selection. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 4 4 read-write SQ3 3rd conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. Refer to SQ8[3:0] for a definition of channel selection. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 8 4 read-write SQ4 4th conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. Refer to SQ8[3:0] for a definition of channel selection. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 12 4 read-write SQ5 5th conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. Refer to SQ8[3:0] for a definition of channel selection. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 16 4 read-write SQ6 6th conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. Refer to SQ8[3:0] for a definition of channel selection. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 20 4 read-write SQ7 7th conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. Refer to SQ8[3:0] for a definition of channel selection. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 24 4 read-write SQ8 8th conversion of the sequence These bits are programmed by software with the channel number (0...14) assigned to the 8th conversion of the sequence. 0b1111 indicates the end of the sequence. When 0b1111 (end of sequence) is programmed to the lower sequence channels, these bits are ignored. ... Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 28 4 read-write B_0x0 CH0 0x0 B_0x1 CH1 0x1 B_0xC CH12 0xC B_0xD CH13 0xD B_0xE CH14 0xE B_0xF No channel selected (End of sequence) 0xF ADC_AWD3TR ADC_AWD3TR ADC watchdog threshold register 0x2c 0x20 0x0FFF0000 0xFFFFFFFF LT3 Analog watchdog 3lower threshold These bits are written by software to define the lower threshold for the analog watchdog. Refer to ADC_AWDxTR) on page 407. 0 12 read-write HT3 Analog watchdog 3 higher threshold These bits are written by software to define the higher threshold for the analog watchdog. Refer to ADC_AWDxTR) on page 407. 16 12 read-write ADC_DR ADC_DR ADC data register 0x40 0x20 0x00000000 0xFFFFFFFF DATA Converted data These bits are read-only. They contain the conversion result from the last converted channel. The data are left- or right-aligned as shown in OVSE = 0) on page 401. Just after a calibration is complete, DATA[6:0] contains the calibration factor. 0 16 read-only ADC_AWD2CR ADC_AWD2CR ADC Analog Watchdog 2 Configuration register 0xa0 0x20 0x00000000 0xFFFFFFFF AWD2CH0 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 0 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH1 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 1 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH2 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 2 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH3 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 3 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH4 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 4 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH5 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 5 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH6 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 6 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH7 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 7 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH8 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 8 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH9 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 9 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH10 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 10 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH11 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 11 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH12 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 12 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH13 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 13 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH14 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 14 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH15 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 15 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH16 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 16 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH17 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 17 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 AWD2CH18 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 2 (AWD2). Note: The channels selected through ADC_AWD2CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 18 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD2 0x0 B_0x1 ADC analog channel-x is monitored by AWD2 0x1 ADC_AWD3CR ADC_AWD3CR ADC Analog Watchdog 3 Configuration register 0xa4 0x20 0x00000000 0xFFFFFFFF AWD3CH0 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 0 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH1 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 1 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH2 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 2 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH3 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 3 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH4 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 4 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH5 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 5 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH6 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 6 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH7 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 7 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH8 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 8 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH9 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 9 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH10 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 10 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH11 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 11 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH12 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 12 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH13 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 13 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH14 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 14 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH15 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 15 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH16 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 16 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH17 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 17 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 AWD3CH18 Analog watchdog channel selection These bits are set and cleared by software. They enable and select the input channels to be guarded by analog watchdog 3 (AWD3). Note: The channels selected through ADC_AWD3CR must be also configured into the ADC_CHSELR registers. Refer to SQ8[3:0] for a definition of channel selection. The software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing). 18 1 read-write B_0x0 ADC analog channel-x is not monitored by AWD3 0x0 B_0x1 ADC analog channel-x is monitored by AWD3 0x1 ADC_CALFACT ADC_CALFACT ADC Calibration factor 0xb4 0x20 0x00000000 0xFFFFFFFF CALFACT Calibration factor These bits are written by hardware or by software. Once a calibration is complete, they are updated by hardware with the calibration factors. Software can write these bits with a new calibration factor. If the new calibration factor is different from the current one stored into the analog ADC, it is then applied once a new calibration is launched. Just after a calibration is complete, DATA[6:0] contains the calibration factor. Note: Software can write these bits only when ADEN=1 (ADC is enabled and no calibration is ongoing and no conversion is ongoing). Refer to SQ8[3:0] for a definition of channel selection. 0 7 read-write ADC_CCR ADC_CCR ADC common configuration register 0x308 0x20 0x00000000 0xFFFFFFFF PRESC ADC prescaler Set and cleared by software to select the frequency of the clock to the ADC. Other: Reserved Note: Software is allowed to write these bits only when the ADC is disabled (ADCAL = 0, ADSTART = 0, ADSTP = 0, ADDIS = 0 and ADEN = 0). 18 4 read-write B_0x0 input ADC clock not divided 0x0 B_0x1 input ADC clock divided by 2 0x1 B_0x2 input ADC clock divided by 4 0x2 B_0x3 input ADC clock divided by 6 0x3 B_0x4 input ADC clock divided by 8 0x4 B_0x5 input ADC clock divided by 10 0x5 B_0x6 input ADC clock divided by 12 0x6 B_0x7 input ADC clock divided by 16 0x7 B_0x8 input ADC clock divided by 32 0x8 B_0x9 input ADC clock divided by 64 0x9 B_0xA input ADC clock divided by 128 0xA B_0xB input ADC clock divided by 256 0xB VREFEN VREFINT enable This bit is set and cleared by software to enable/disable the VREFINT. Note: Software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 22 1 read-write B_0x0 VREFINT disabled 0x0 B_0x1 VREFINT enabled 0x1 TSEN Temperature sensor enable This bit is set and cleared by software to enable/disable the temperature sensor. Note: Software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing). 23 1 read-write B_0x0 Temperature sensor disabled, DAC_OUT1 connected to ADC channel 12 0x0 B_0x1 Temperature sensor enabled 0x1 VBATEN VBAT enable This bit is set and cleared by software to enable/disable the VBAT channel. Note: The software is allowed to write this bit only when ADSTART = 0 (which ensures that no conversion is ongoing) 24 1 read-write B_0x0 VBAT channel disabled, DAC_OUT2 connected to ADC channel 14 0x0 B_0x1 VBAT channel enabled 0x1 COMP Comparator COMP 0x40010200 0x0 0x400 registers COMP1_CSR COMP1_CSR Comparator 1 control and status register 0x0 0x20 0x00000000 0xFFFFFFFF EN Comparator 1 enable bit This bit is controlled by software (if not locked). It enables the comparator 1: 0 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 INMSEL Comparator 1 signal selector for inverting input INM This bitfield is controlled by software (if not locked). It selects the signal for the inverting input COMP1_INM of the comparator 1: > 1000: 1/4 VREFINT 4 4 read-write B_0x0 1/4 VREFINT 0x0 B_0x1 1/2 VREFINT 0x1 B_0x2 3/4 VREFINT 0x2 B_0x3 VREFINT 0x3 B_0x4 DAC channel 1 0x4 B_0x5 DAC channel 2 0x5 B_0x6 PB1 0x6 B_0x7 PC4 0x7 B_0x8 PA0 0x8 INPSEL Comparator 1 signal selector for non-inverting input This bitfield is controlled by software (if not locked). It selects the signal for the non-inverting input COMP1_INP of the comparator 1 (also see the WINMODE bit): 8 2 read-write B_0x0 PC5 0x0 B_0x1 PB2 0x1 B_0x2 PA1 0x2 B_0x3 None (open) 0x3 WINMODE Comparator 1 non-inverting input selector for window mode This bit is controlled by software (if not locked). It selects the signal for COMP1_INP input of the comparator 1: 11 1 read-write B_0x0 Signal selected with INPSEL[1:0] bitfield of this register 0x0 B_0x1 COMP2_INP signal of the comparator 2 (required for window mode, see Figure 64) 0x1 WINOUT Comparator 1 output selector This bit is controlled by software (if not locked). It selects the comparator 1 output: 14 1 read-write B_0x0 COMP1_VALUE 0x0 B_0x1 COMP1_VALUE XOR COMP2_VALUE (required for window mode, see Figure 64) 0x1 POLARITY Comparator 1 polarity selector This bit is controlled by software (if not locked). It selects the comparator 1 output polarity: 15 1 read-write B_0x0 Non-inverted 0x0 B_0x1 Inverted 0x1 HYST Comparator 1 hysteresis selector This bitfield is controlled by software (if not locked). It selects the hysteresis of the comparator 1: 16 2 read-write B_0x0 None 0x0 B_0x1 Low 0x1 B_0x2 Medium 0x2 B_0x3 High 0x3 PWRMODE Comparator 1 power mode selector This bitfield is controlled by software (if not locked). It selects the power consumption and as a consequence the speed of the comparator 1: others: Reserved 18 2 read-write B_0x0 High speed 0x0 B_0x1 Medium speed 0x1 BLANKSEL Comparator 1 blanking source selector This bitfield is controlled by software (if not locked). It selects the blanking source: xxxx1: TIM1 OC4 xxx1x: TIM1 OC5 xx1xx: TIM2 OC3 x1xxx: TIM3 OC3 1xxxx: TIM15 OC2 20 5 read-write B_0x0 None (no blanking) 0x0 VALUE Comparator 1 output status This bit is read-only. It reflects the level of the comparator 1 output after the polarity selector and blanking, as indicated in . 30 1 read-only LOCK COMP1_CSR register lock This bit is set by software and cleared by a system reset. It locks the whole content of the comparator 1 control register COMP1_CSR[31:0]: 31 1 read-write B_0x0 COMP1_CSR[31:0] register read/write bits can be written by software 0x0 B_0x1 COMP1_CSR[31:0] register bits can be read but not written by software 0x1 COMP2_CSR COMP2_CSR Comparator 2 control and status register 0x4 0x20 0x00000000 0xFFFFFFFF EN Comparator 2 enable bit This bit is controlled by software (if not locked). It enables the comparator 2: 0 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 INMSEL Comparator 2 signal selector for inverting input INM This bitfield is controlled by software (if not locked). It selects the signal for the inverting input COMP2_INM of the comparator 2: > 1000: 1/4 VREFINT 4 4 read-write B_0x0 1/4 VREFINT 0x0 B_0x1 1/2 VREFINT 0x1 B_0x2 3/4 VREFINT 0x2 B_0x3 VREFINT 0x3 B_0x4 DAC channel 1 0x4 B_0x5 DAC channel 2 0x5 B_0x6 PB3 0x6 B_0x7 PB7 0x7 B_0x8 PA2 0x8 INPSEL Comparator 2 signal selector for non-inverting input This bitfield is controlled by software (if not locked). It selects the signal for the non-inverting input COMP2_INP of the comparator 2 (also see the WINMODE bit): 8 2 read-write B_0x0 PB4 0x0 B_0x1 PB6 0x1 B_0x2 PA3 0x2 B_0x3 None (open) 0x3 WINMODE Comparator 2 non-inverting input selector for window mode This bit is controlled by software (if not locked). It selects the signal for COMP2_INP input of the comparator 2: 11 1 read-write B_0x0 Signal selected with INPSEL[1:0] bitfield of this register 0x0 B_0x1 COMP1_INP signal of the comparator 1 (required for window mode, see Figure 64) 0x1 WINOUT Comparator 2 output selector This bit is controlled by software (if not locked). It selects the comparator 2 output: 14 1 read-write B_0x0 COMP2_VALUE 0x0 B_0x1 COMP1_VALUE XOR COMP2_VALUE (required for window mode, see Figure 64) 0x1 POLARITY Comparator 2 polarity selector This bit is controlled by software (if not locked). It selects the comparator 2 output polarity: 15 1 read-write B_0x0 Non-inverted 0x0 B_0x1 Inverted 0x1 HYST Comparator 2 hysteresis selector This bitfield is controlled by software (if not locked). It selects the hysteresis of the comparator 2: 16 2 read-write B_0x0 None 0x0 B_0x1 Low 0x1 B_0x2 Medium 0x2 B_0x3 High 0x3 PWRMODE Comparator 2 power mode selector This bitfield is controlled by software (if not locked). It selects the power consumption and as a consequence the speed of the comparator 2: others: Reserved 18 2 read-write B_0x0 High speed 0x0 B_0x1 Medium speed 0x1 BLANKSEL Comparator 2 blanking source selector This bitfield is controlled by software (if not locked). It selects the blanking source: xxxx1: TIM1 OC4 xxx1x: TIM1 OC5 xx1xx: TIM2 OC3 x1xxx: TIM3 OC3 1xxxx: TIM15 OC2 20 5 read-write B_0x0 None (no blanking) 0x0 VALUE Comparator 2 output status This bit is read-only. It reflects the level of the comparator 2 output after the polarity selector and blanking, as indicated in . 30 1 read-only LOCK COMP2_CSR register lock This bit is set by software and cleared by a system reset. It locks the whole content of the comparator 2 control register COMP2_CSR[31:0]: 31 1 read-write B_0x0 COMP2_CSR[31:0] register read/write bits can be written by software 0x0 B_0x1 COMP2_CSR[31:0] register bits can be read but not written by software 0x1 COMP3_CSR COMP2_CSR Comparator 2 control and status register 0x8 0x20 0x00000000 0xFFFFFFFF EN Comparator 3 enable bit This bit is controlled by software (if not locked). It enables the comparator 3: 0 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 INMSEL Comparator 3 signal selector for inverting input INM This bitfield is controlled by software (if not locked). It selects the signal for the inverting input COMP3_INM of the comparator 3: > 1000: 1/4 VREFINT 4 4 read-write B_0x0 1/4 VREFINT 0x0 B_0x1 1/2 VREFINT 0x1 B_0x2 3/4 VREFINT 0x2 B_0x3 VREFINT 0x3 B_0x4 DAC channel 1 0x4 B_0x5 DAC channel 2 0x5 B_0x6 PB3 0x6 B_0x7 PB7 0x7 B_0x8 PA2 0x8 INPSEL Comparator 3 signal selector for non-inverting input This bitfield is controlled by software (if not locked). It selects the signal for the non-inverting input COMP3_INP of the comparator 3 (also see the WINMODE bit): 8 2 read-write B_0x0 PB4 0x0 B_0x1 PB6 0x1 B_0x2 PA3 0x2 B_0x3 None (open) 0x3 WINMODE Comparator 3 non-inverting input selector for window mode This bit is controlled by software (if not locked). It selects the signal for COMP3_INP input of the comparator 3: 11 1 read-write B_0x0 Signal selected with INPSEL[1:0] bitfield of this register 0x0 B_0x1 COMP1_INP signal of the comparator 1 (required for window mode, see Figure 64) 0x1 WINOUT Comparator 3 output selector This bit is controlled by software (if not locked). It selects the comparator 3 output: 14 1 read-write B_0x0 COMP2_VALUE 0x0 B_0x1 COMP1_VALUE XOR COMP3_VALUE (required for window mode, see Figure 64) 0x1 POLARITY Comparator 2 polarity selector This bit is controlled by software (if not locked). It selects the comparator 3 output polarity: 15 1 read-write B_0x0 Non-inverted 0x0 B_0x1 Inverted 0x1 HYST Comparator 3 hysteresis selector This bitfield is controlled by software (if not locked). It selects the hysteresis of the comparator 3: 16 2 read-write B_0x0 None 0x0 B_0x1 Low 0x1 B_0x2 Medium 0x2 B_0x3 High 0x3 PWRMODE Comparator 3 power mode selector This bitfield is controlled by software (if not locked). It selects the power consumption and as a consequence the speed of the comparator 3: others: Reserved 18 2 read-write B_0x0 High speed 0x0 B_0x1 Medium speed 0x1 BLANKSEL Comparator 3 blanking source selector This bitfield is controlled by software (if not locked). It selects the blanking source: xxxx1: TIM1 OC4 xxx1x: TIM1 OC5 xx1xx: TIM2 OC3 x1xxx: TIM3 OC3 1xxxx: TIM15 OC2 20 5 read-write B_0x0 None (no blanking) 0x0 VALUE Comparator 3 output status This bit is read-only. It reflects the level of the comparator 2 output after the polarity selector and blanking, as indicated in . 30 1 read-only LOCK COMP3_CSR register lock This bit is set by software and cleared by a system reset. It locks the whole content of the comparator 3 control register COMP3_CSR[31:0]: 31 1 read-write B_0x0 COMP3_CSR[31:0] register read/write bits can be written by software 0x0 B_0x1 COMP3_CSR[31:0] register bits can be read but not written by software 0x1 CRC Cyclic redundancy check calculation unit CRC 0x40023000 0x0 0x400 registers CRC_DR CRC_DR Data register 0x0 0x20 read-write 0xFFFFFFFF DR Data register bits 0 32 CRC_IDR CRC_IDR Independent data register 0x4 0x20 read-write 0x00000000 IDR General-purpose 32-bit data register bits 0 32 CRC_CR CRC_CR Control register 0x8 0x20 0x00000000 REV_OUT Reverse output data This bit controls the reversal of the bit order of the output data. 7 1 read-write B_0x0 Bit order not affected 0x0 B_0x1 Bit-reversed output format 0x1 REV_IN Reverse input data These bits control the reversal of the bit order of the input data 5 2 read-write B_0x0 Bit order not affected 0x0 B_0x1 Bit reversal done by byte 0x1 B_0x2 Bit reversal done by half-word 0x2 B_0x3 Bit reversal done by word 0x3 POLYSIZE Polynomial size These bits control the size of the polynomial. 3 2 read-write B_0x0 32 bit polynomial 0x0 B_0x1 16 bit polynomial 0x1 B_0x2 8 bit polynomial 0x2 B_0x3 7 bit polynomial 0x3 RESET RESET bit 0 1 write-only CRC_INIT CRC_INIT Initial CRC value 0x10 0x20 read-write 0xFFFFFFFF CRC_INIT Programmable initial CRC value 0 32 CRC_POL CRC_POL polynomial 0x14 0x20 read-write 0x04C11DB7 POL Programmable polynomial 0 32 DAC DAC DAC 0x40007400 0x0 0x400 registers DAC_CR DAC_CR DAC control register 0x0 0x20 read-write 0x00000000 EN1 DAC channel1 enable This bit is set and cleared by software to enable/disable DAC channel1. 0 1 read-write B_0x0 DAC channel1 disabled 0x0 B_0x1 DAC channel1 enabled 0x1 TEN1 DAC channel1 trigger enable This bit is set and cleared by software to enable/disable DAC channel1 trigger. Note: When software trigger is selected, the transfer from the DAC_DHR1 register to the DAC_DOR1 register takes only one dac_pclk clock cycle. 1 1 read-write B_0x0 DAC channel1 trigger disabled and data written into the DAC_DHR1 register are transferred one dac_pclk clock cycle later to the DAC_DOR1 register 0x0 B_0x1 DAC channel1 trigger enabled and data from the DAC_DHR1 register are transferred three dac_pclk clock cycles later to the DAC_DOR1 register 0x1 TSEL1 DAC channel1 trigger selection These bits select the external event used to trigger DAC channel1 ... Refer to the trigger selection tables in for details on trigger configuration and mapping. Note: Only used if bit TEN1 = 1 (DAC channel1 trigger enabled). 2 4 read-write B_0x0 SWTRIG1 0x0 B_0x1 dac_ch1_trg1 0x1 B_0x2 dac_ch1_trg2 0x2 B_0xF dac_ch1_trg15 0xF WAVE1 DAC channel1 noise/triangle wave generation enable These bits are set and cleared by software. 1x: Triangle wave generation enabled Only used if bit TEN1 = 1 (DAC channel1 trigger enabled). 6 2 read-write B_0x0 wave generation disabled 0x0 B_0x1 Noise wave generation enabled 0x1 MAMP1 DAC channel1 mask/amplitude selector These bits are written by software to select mask in wave generation mode or amplitude in triangle generation mode. ≥ 1011: Unmask bits[11:0] of LFSR/ triangle amplitude equal to 4095 8 4 read-write B_0x0 Unmask bit0 of LFSR/ triangle amplitude equal to 1 0x0 B_0x1 Unmask bits[1:0] of LFSR/ triangle amplitude equal to 3 0x1 B_0x2 Unmask bits[2:0] of LFSR/ triangle amplitude equal to 7 0x2 B_0x3 Unmask bits[3:0] of LFSR/ triangle amplitude equal to 15 0x3 B_0x4 Unmask bits[4:0] of LFSR/ triangle amplitude equal to 31 0x4 B_0x5 Unmask bits[5:0] of LFSR/ triangle amplitude equal to 63 0x5 B_0x6 Unmask bits[6:0] of LFSR/ triangle amplitude equal to 127 0x6 B_0x7 Unmask bits[7:0] of LFSR/ triangle amplitude equal to 255 0x7 B_0x8 Unmask bits[8:0] of LFSR/ triangle amplitude equal to 511 0x8 B_0x9 Unmask bits[9:0] of LFSR/ triangle amplitude equal to 1023 0x9 B_0xA Unmask bits[10:0] of LFSR/ triangle amplitude equal to 2047 0xA DMAEN1 DAC channel1 DMA enable This bit is set and cleared by software. 12 1 read-write B_0x0 DAC channel1 DMA mode disabled 0x0 B_0x1 DAC channel1 DMA mode enabled 0x1 DMAUDRIE1 DAC channel1 DMA Underrun Interrupt enable This bit is set and cleared by software. 13 1 read-write B_0x0 DAC channel1 DMA Underrun Interrupt disabled 0x0 B_0x1 DAC channel1 DMA Underrun Interrupt enabled 0x1 CEN1 DAC channel1 calibration enable This bit is set and cleared by software to enable/disable DAC channel1 calibration, it can be written only if bit EN1=0 into DAC_CR (the calibration mode can be entered/exit only when the DAC channel is disabled) Otherwise, the write operation is ignored. 14 1 read-write B_0x0 DAC channel1 in Normal operating mode 0x0 B_0x1 DAC channel1 in calibration mode 0x1 EN2 DAC channel2 enable This bit is set and cleared by software to enable/disable DAC channel2. Note: These bits are available only on dual-channel DACs. Refer to implementation. 16 1 read-write B_0x0 DAC channel2 disabled 0x0 B_0x1 DAC channel2 enabled 0x1 TEN2 DAC channel2 trigger enable This bit is set and cleared by software to enable/disable DAC channel2 trigger Note: When software trigger is selected, the transfer from the DAC_DHR2 register to the DAC_DOR2 register takes only one dac_pclk clock cycle. These bits are available only on dual-channel DACs. Refer to implementation. 17 1 read-write B_0x0 DAC channel2 trigger disabled and data written into the DAC_DHR2 register are transferred one dac_pclk clock cycle later to the DAC_DOR2 register 0x0 B_0x1 DAC channel2 trigger enabled and data from the DAC_DHR2 register are transferred three dac_pclk clock cycles later to the DAC_DOR2 register 0x1 TSEL2 DAC channel2 trigger selection These bits select the external event used to trigger DAC channel2 ... Refer to the trigger selection tables in for details on trigger configuration and mapping. Note: Only used if bit TEN2 = 1 (DAC channel2 trigger enabled). These bits are available only on dual-channel DACs. Refer to implementation. 18 4 read-write B_0x0 SWTRIG2 0x0 B_0x1 dac_ch2_trg1 0x1 B_0x2 dac_ch2_trg2 0x2 B_0xF dac_ch2_trg15 0xF WAVE2 DAC channel2 noise/triangle wave generation enable These bits are set/reset by software. 1x: Triangle wave generation enabled Note: Only used if bit TEN2 = 1 (DAC channel2 trigger enabled) These bits are available only on dual-channel DACs. Refer to implementation. 22 2 read-write B_0x0 wave generation disabled 0x0 B_0x1 Noise wave generation enabled 0x1 MAMP2 DAC channel2 mask/amplitude selector These bits are written by software to select mask in wave generation mode or amplitude in triangle generation mode. ≥ 1011: Unmask bits[11:0] of LFSR/ triangle amplitude equal to 4095 Note: These bits are available only on dual-channel DACs. Refer to implementation. 24 4 read-write B_0x0 Unmask bit0 of LFSR/ triangle amplitude equal to 1 0x0 B_0x1 Unmask bits[1:0] of LFSR/ triangle amplitude equal to 3 0x1 B_0x2 Unmask bits[2:0] of LFSR/ triangle amplitude equal to 7 0x2 B_0x3 Unmask bits[3:0] of LFSR/ triangle amplitude equal to 15 0x3 B_0x4 Unmask bits[4:0] of LFSR/ triangle amplitude equal to 31 0x4 B_0x5 Unmask bits[5:0] of LFSR/ triangle amplitude equal to 63 0x5 B_0x6 Unmask bits[6:0] of LFSR/ triangle amplitude equal to 127 0x6 B_0x7 Unmask bits[7:0] of LFSR/ triangle amplitude equal to 255 0x7 B_0x8 Unmask bits[8:0] of LFSR/ triangle amplitude equal to 511 0x8 B_0x9 Unmask bits[9:0] of LFSR/ triangle amplitude equal to 1023 0x9 B_0xA Unmask bits[10:0] of LFSR/ triangle amplitude equal to 2047 0xA DMAEN2 DAC channel2 DMA enable This bit is set and cleared by software. Note: This bit is available only on dual-channel DACs. Refer to implementation. 28 1 read-write B_0x0 DAC channel2 DMA mode disabled 0x0 B_0x1 DAC channel2 DMA mode enabled 0x1 DMAUDRIE2 DAC channel2 DMA underrun interrupt enable This bit is set and cleared by software. Note: This bit is available only on dual-channel DACs. Refer to implementation. 29 1 read-write B_0x0 DAC channel2 DMA underrun interrupt disabled 0x0 B_0x1 DAC channel2 DMA underrun interrupt enabled 0x1 CEN2 DAC channel2 calibration enable This bit is set and cleared by software to enable/disable DAC channel2 calibration, it can be written only if EN2 bit is set to 0 into DAC_CR (the calibration mode can be entered/exit only when the DAC channel is disabled) Otherwise, the write operation is ignored. Note: This bit is available only on dual-channel DACs. Refer to implementation. 30 1 read-write B_0x0 DAC channel2 in Normal operating mode 0x0 B_0x1 DAC channel2 in calibration mode 0x1 DAC_SWTRGR DAC_SWTRGR DAC software trigger register 0x4 0x20 write-only 0x00000000 SWTRIG1 DAC channel1 software trigger This bit is set by software to trigger the DAC in software trigger mode. Note: This bit is cleared by hardware (one dac_pclk clock cycle later) once the DAC_DHR1 register value has been loaded into the DAC_DOR1 register. 0 1 write-only B_0x0 No trigger 0x0 B_0x1 Trigger 0x1 SWTRIG2 DAC channel2 software trigger This bit is set by software to trigger the DAC in software trigger mode. Note: This bit is cleared by hardware (one dac_pclk clock cycle later) once the DAC_DHR2 register value has been loaded into the DAC_DOR2 register. This bit is available only on dual-channel DACs. Refer to implementation. 1 1 write-only B_0x0 No trigger 0x0 B_0x1 Trigger 0x1 DAC_DHR12R1 DAC_DHR12R1 DAC channel1 12-bit right-aligned data holding register 0x8 0x20 read-write 0x00000000 DACC1DHR DAC channel1 12-bit right-aligned data These bits are written by software. They specify 12-bit data for DAC channel1. 0 12 read-write DAC_DHR12L1 DAC_DHR12L1 DAC channel1 12-bit left aligned data holding register 0xC 0x20 read-write 0x00000000 DACC1DHR DAC channel1 12-bit left-aligned data These bits are written by software. They specify 12-bit data for DAC channel1. 4 12 read-write DAC_DHR8R1 DAC_DHR8R1 DAC channel1 8-bit right aligned data holding register 0x10 0x20 read-write 0x00000000 DACC1DHR DAC channel1 8-bit right-aligned data These bits are written by software. They specify 8-bit data for DAC channel1. 0 8 read-write DAC_DHR12R2 DAC_DHR12R2 DAC channel2 12-bit right aligned data holding register 0x14 0x20 read-write 0x00000000 DACC2DHR DAC channel2 12-bit right-aligned data These bits are written by software. They specify 12-bit data for DAC channel2. 0 12 read-write DAC_DHR12L2 DAC_DHR12L2 DAC channel2 12-bit left aligned data holding register 0x18 0x20 read-write 0x00000000 DACC2DHR DAC channel2 12-bit left-aligned data These bits are written by software which specify 12-bit data for DAC channel2. 4 12 read-write DAC_DHR8R2 DAC_DHR8R2 DAC channel2 8-bit right-aligned data holding register 0x1C 0x20 read-write 0x00000000 DACC2DHR DAC channel2 8-bit right-aligned data These bits are written by software which specifies 8-bit data for DAC channel2. 0 8 read-write DAC_DHR12RD DAC_DHR12RD Dual DAC 12-bit right-aligned data holding register 0x20 0x20 read-write 0x00000000 DACC1DHR DAC channel1 12-bit right-aligned data These bits are written by software which specifies 12-bit data for DAC channel1. 0 12 read-write DACC2DHR DAC channel2 12-bit right-aligned data These bits are written by software which specifies 12-bit data for DAC channel2. 16 12 read-write DAC_DHR12LD DAC_DHR12LD DUAL DAC 12-bit left aligned data holding register 0x24 0x20 read-write 0x00000000 DACC1DHR DAC channel1 12-bit left-aligned data These bits are written by software which specifies 12-bit data for DAC channel1. 4 12 read-write DACC2DHR DAC channel2 12-bit left-aligned data These bits are written by software which specifies 12-bit data for DAC channel2. 20 12 read-write DAC_DHR8RD DAC_DHR8RD DUAL DAC 8-bit right aligned data holding register 0x28 0x20 read-write 0x00000000 DACC1DHR DAC channel1 8-bit right-aligned data These bits are written by software which specifies 8-bit data for DAC channel1. 0 8 read-write DACC2DHR DAC channel2 8-bit right-aligned data These bits are written by software which specifies 8-bit data for DAC channel2. 8 8 read-write DAC_DOR1 DAC_DOR1 DAC channel1 data output register 0x2C 0x20 read-only 0x00000000 DACC1DOR DAC channel1 data output These bits are read-only, they contain data output for DAC channel1. 0 12 read-only DAC_DOR2 DAC_DOR2 DAC channel2 data output register 0x30 0x20 read-only 0x00000000 DACC2DOR DAC channel2 data output These bits are read-only, they contain data output for DAC channel2. 0 12 read-only DAC_SR DAC_SR DAC status register 0x34 0x20 0x00000000 DMAUDR1 DAC channel1 DMA underrun flag This bit is set by hardware and cleared by software (by writing it to 1). 13 1 read-write B_0x0 No DMA underrun error condition occurred for DAC channel1 0x0 B_0x1 DMA underrun error condition occurred for DAC channel1 (the currently selected trigger is driving DAC channel1 conversion at a frequency higher than the DMA service capability rate) 0x1 CAL_FLAG1 DAC channel1 calibration offset status This bit is set and cleared by hardware 14 1 read-only B_0x0 calibration trimming value is lower than the offset correction value 0x0 B_0x1 calibration trimming value is equal or greater than the offset correction value 0x1 BWST1 DAC channel1 busy writing sample time flag This bit is systematically set just after Sample and hold mode enable and is set each time the software writes the register DAC_SHSR1, It is cleared by hardware when the write operation of DAC_SHSR1 is complete. (It takes about 3 LSI periods of synchronization). 15 1 read-only B_0x0 There is no write operation of DAC_SHSR1 ongoing: DAC_SHSR1 can be written 0x0 B_0x1 There is a write operation of DAC_SHSR1 ongoing: DAC_SHSR1 cannot be written 0x1 DMAUDR2 DAC channel2 DMA underrun flag This bit is set by hardware and cleared by software (by writing it to 1). Note: This bit is available only on dual-channel DACs. Refer to implementation. 29 1 read-write B_0x0 No DMA underrun error condition occurred for DAC channel2 0x0 B_0x1 DMA underrun error condition occurred for DAC channel2 (the currently selected trigger is driving DAC channel2 conversion at a frequency higher than the DMA service capability rate). 0x1 CAL_FLAG2 DAC channel2 calibration offset status This bit is set and cleared by hardware Note: This bit is available only on dual-channel DACs. Refer to implementation. 30 1 read-only B_0x0 calibration trimming value is lower than the offset correction value 0x0 B_0x1 calibration trimming value is equal or greater than the offset correction value 0x1 BWST2 DAC channel2 busy writing sample time flag This bit is systematically set just after Sample and hold mode enable. It is set each time the software writes the register DAC_SHSR2, It is cleared by hardware when the write operation of DAC_SHSR2 is complete. (It takes about 3 LSI periods of synchronization). Note: This bit is available only on dual-channel DACs. Refer to implementation. 31 1 read-only B_0x0 There is no write operation of DAC_SHSR2 ongoing: DAC_SHSR2 can be written 0x0 B_0x1 There is a write operation of DAC_SHSR2 ongoing: DAC_SHSR2 cannot be written 0x1 DAC_CCR DAC_CCR DAC calibration control register 0x38 0x20 read-write 0x00000000 OTRIM1 DAC channel1 offset trimming value 0 5 read-write OTRIM2 DAC channel2 offset trimming value These bits are available only on dual-channel DACs. Refer to implementation. 16 5 read-write DAC_MCR DAC_MCR DAC mode control register 0x3C 0x20 read-write 0x00000000 MODE1 DAC channel1 mode These bits can be written only when the DAC is disabled and not in the calibration mode (when bit EN1=0 and bit CEN1 =0 in the DAC_CR register). If EN1=1 or CEN1 =1 the write operation is ignored. They can be set and cleared by software to select the DAC channel1 mode: DAC channel1 in Normal mode DAC channel1 in sample & hold mode Note: This register can be modified only when EN1=0. 0 3 read-write B_0x0 DAC channel1 is connected to external pin with Buffer enabled 0x0 B_0x1 DAC channel1 is connected to external pin and to on chip peripherals with Buffer enabled 0x1 B_0x2 DAC channel1 is connected to external pin with Buffer disabled 0x2 B_0x3 DAC channel1 is connected to on chip peripherals with Buffer disabled 0x3 B_0x4 DAC channel1 is connected to external pin with Buffer enabled 0x4 B_0x5 DAC channel1 is connected to external pin and to on chip peripherals with Buffer enabled 0x5 B_0x6 DAC channel1 is connected to external pin and to on chip peripherals with Buffer disabled 0x6 B_0x7 DAC channel1 is connected to on chip peripherals with Buffer disabled 0x7 MODE2 DAC channel2 mode These bits can be written only when the DAC is disabled and not in the calibration mode (when bit EN2=0 and bit CEN2 =0 in the DAC_CR register). If EN2=1 or CEN2 =1 the write operation is ignored. They can be set and cleared by software to select the DAC channel2 mode: DAC channel2 in Normal mode DAC channel2 in Sample and hold mode Note: This register can be modified only when EN2=0. Refer to for the availability of DAC channel2. 16 3 read-write B_0x0 DAC channel2 is connected to external pin with Buffer enabled 0x0 B_0x1 DAC channel2 is connected to external pin and to on chip peripherals with buffer enabled 0x1 B_0x2 DAC channel2 is connected to external pin with buffer disabled 0x2 B_0x3 DAC channel2 is connected to on chip peripherals with Buffer disabled 0x3 B_0x4 DAC channel2 is connected to external pin with Buffer enabled 0x4 B_0x5 DAC channel2 is connected to external pin and to on chip peripherals with Buffer enabled 0x5 B_0x6 DAC channel2 is connected to external pin and to on chip peripherals with Buffer disabled 0x6 B_0x7 DAC channel2 is connected to on chip peripherals with Buffer disabled 0x7 DAC_SHSR1 DAC_SHSR1 DAC Sample and Hold sample time register 1 0x40 0x20 read-write 0x00000000 TSAMPLE1 DAC channel1 sample time (only valid in Sample and hold mode) These bits can be written when the DAC channel1 is disabled or also during normal operation. in the latter case, the write can be done only when BWST1 of DAC_SR register is low, If BWST1=1, the write operation is ignored. 0 10 read-write DAC_SHSR2 DAC_SHSR2 DAC Sample and Hold sample time register 2 0x44 0x20 read-write 0x00000000 TSAMPLE2 DAC channel2 sample time (only valid in Sample and hold mode) These bits can be written when the DAC channel2 is disabled or also during normal operation. in the latter case, the write can be done only when BWST2 of DAC_SR register is low, if BWST2=1, the write operation is ignored. 0 10 read-write DAC_SHHR DAC_SHHR DAC Sample and Hold hold time register 0x48 0x20 read-write 0x00010001 THOLD1 DAC channel1 hold time (only valid in Sample and hold mode) Hold time= (THOLD[9:0]) x LSI clock period Note: This register can be modified only when EN1=0. 0 10 read-write THOLD2 DAC channel2 hold time (only valid in Sample and hold mode). Hold time= (THOLD[9:0]) x LSI clock period Note: This register can be modified only when EN2=0. These bits are available only on dual-channel DACs. Refer to implementation. 16 10 read-write DAC_SHRR DAC_SHRR DAC Sample and Hold refresh time register 0x4C 0x20 read-write 0x00010001 TREFRESH1 DAC channel1 refresh time (only valid in Sample and hold mode) Refresh time= (TREFRESH[7:0]) x LSI clock period Note: This register can be modified only when EN1=0. 0 8 read-write TREFRESH2 DAC channel2 refresh time (only valid in Sample and hold mode) Refresh time= (TREFRESH[7:0]) x LSI clock period Note: This register can be modified only when EN2=0. These bits are available only on dual-channel DACs. Refer to implementation. 16 8 read-write DBG Debug support DBG 0x40015800 0x0 0x400 registers IDCODE IDCODE MCU Device ID Code Register 0x0 0x20 read-only 0x0 DEV_ID Device Identifier 0 12 REV_ID Revision Identifier 16 16 DBG_CR DBG_CR DBG configuration register 0x4 0x20 read-write 0x00000000 DBG_STOP Debug Stop mode Debug options in Stop mode. Upon Stop mode exit, the software must re-establish the desired clock configuration. 1 1 read-write B_0x0 All clocks disabled, including FCLK and HCLK. Upon Stop mode exit, the CPU is clocked by the HSI internal RC oscillator. 0x0 B_0x1 FCLK and HCLK running, derived from the internal RC oscillator remaining active. If Systick is enabled, it may generate periodic interrupt and wake up events. 0x1 DBG_STANDBY Debug Standby and Shutdown modes Debug options in Standby or Shutdown mode. 2 1 read-write B_0x0 Digital part powered. From software point of view, exiting Standby and Shutdown modes is identical as fetching reset vector (except for status bits indicating that the MCU exits Standby) 0x0 B_0x1 Digital part powered and FCLK and HCLK running, derived from the internal RC oscillator remaining active. The MCU generates a system reset so that exiting Standby and Shutdown has the same effect as starting from reset. 0x1 DBG_APB_FZ1 DBG_APB_FZ1 DBG APB freeze register 1 0x8 0x20 read-write 0x00000000 DBG_TIM2_STOP Clocking of TIM2 counter when the core is halted This bit enables/disables the clock to the counter of TIM2 when the core is halted: 0 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_TIM3_STOP Clocking of TIM3 counter when the core is halted This bit enables/disables the clock to the counter of TIM3 when the core is halted: 1 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_TIM6_STOP Clocking of TIM6 counter when the core is halted This bit enables/disables the clock to the counter of TIM6 when the core is halted: 4 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_TIM7_STOP Clocking of TIM7 counter when the core is halted. This bit enables/disables the clock to the counter of ITIM7 when the core is halted: 5 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_RTC_STOP Clocking of RTC counter when the core is halted This bit enables/disables the clock to the counter of RTC when the core is halted: 10 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_WWDG_STOP Clocking of WWDG counter when the core is halted This bit enables/disables the clock to the counter of WWDG when the core is halted: 11 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_IWDG_STOP Clocking of IWDG counter when the core is halted This bit enables/disables the clock to the counter of IWDG when the core is halted: 12 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_I2C1_SMBUS_TIMEOUT SMBUS timeout when core is halted 21 1 read-write B_0x0 Same behavior as in normal mode 0x0 B_0x1 The SMBUS timeout is frozen 0x1 DBG_LPTIM2_STOP Clocking of LPTIMER2 counter when the core is halted This bit enables/disables the clock to the counter of LPTIMER2 when the core is halted: 30 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_LPTIM1_STOP Clocking of LPTIMER1 counter when the core is halted This bit enables/disables the clock to the counter of LPTIMER1 when the core is halted: 31 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_APB_FZ2 DBG_APB_FZ2 DBG APB freeze register 2 0xc 0x20 read-write 0x00000000 DBG_TIM1_STOP Clocking of TIM1 counter when the core is halted This bit enables/disables the clock to the counter of TIM1 when the core is halted: 11 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_TIM14_STOP Clocking of TIM14 counter when the core is halted This bit enables/disables the clock to the counter of TIM14 when the core is halted: 15 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_TIM15_STOP Clocking of TIM15 counter when the core is halted This bit enables/disables the clock to the counter of TIM15 when the core is halted: Only available on STM32G071xx and STM32G081xx, reserved on STM32G031xx and STM32G041xx. 16 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_TIM16_STOP Clocking of TIM16 counter when the core is halted This bit enables/disables the clock to the counter of TIM16 when the core is halted: 17 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DBG_TIM17_STOP Clocking of TIM17 counter when the core is halted This bit enables/disables the clock to the counter of TIM17 when the core is halted: 18 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 DMAMUX DMAMUX DMAMUX 0x40020800 0x0 0x800 registers DMAMUX_C0CR DMAMUX_C0CR DMAMUX request line multiplexer channel x configuration register 0x0 0x20 read-write 0x00000000 DMAREQ_ID DMA request identification Selects the input DMA request. See the DMAMUX table about assignments of multiplexer inputs to resources. 0 6 read-write SOIE Synchronization overrun interrupt enable 8 1 read-write B_0x0 interrupt disabled 0x0 B_0x1 interrupt enabled 0x1 EGE Event generation enable 9 1 read-write B_0x0 event generation disabled 0x0 B_0x1 event generation enabled 0x1 SE Synchronization enable 16 1 read-write B_0x0 synchronization disabled 0x0 B_0x1 synchronization enabled 0x1 SPOL Synchronization polarity Defines the edge polarity of the selected synchronization input: 17 2 read-write B_0x0 no event, i.e. no synchronization nor detection. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 NBREQ Number of DMA requests minus 1 to forward Defines the number of DMA requests to forward to the DMA controller after a synchronization event, and/or the number of DMA requests before an output event is generated. This field shall only be written when both SE and EGE bits are low. 19 5 read-write SYNC_ID Synchronization identification Selects the synchronization input (see inputs to resources STM32G0). 24 5 read-write DMAMUX_C1CR DMAMUX_C1CR DMAMUX request line multiplexer channel x configuration register 0x4 0x20 read-write 0x00000000 DMAREQ_ID DMA request identification Selects the input DMA request. See the DMAMUX table about assignments of multiplexer inputs to resources. 0 6 read-write SOIE Synchronization overrun interrupt enable 8 1 read-write B_0x0 interrupt disabled 0x0 B_0x1 interrupt enabled 0x1 EGE Event generation enable 9 1 read-write B_0x0 event generation disabled 0x0 B_0x1 event generation enabled 0x1 SE Synchronization enable 16 1 read-write B_0x0 synchronization disabled 0x0 B_0x1 synchronization enabled 0x1 SPOL Synchronization polarity Defines the edge polarity of the selected synchronization input: 17 2 read-write B_0x0 no event, i.e. no synchronization nor detection. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 NBREQ Number of DMA requests minus 1 to forward Defines the number of DMA requests to forward to the DMA controller after a synchronization event, and/or the number of DMA requests before an output event is generated. This field shall only be written when both SE and EGE bits are low. 19 5 read-write SYNC_ID Synchronization identification Selects the synchronization input (see inputs to resources STM32G0). 24 5 read-write DMAMUX_C2CR DMAMUX_C2CR DMAMUX request line multiplexer channel x configuration register 0x8 0x20 read-write 0x00000000 DMAREQ_ID DMA request identification Selects the input DMA request. See the DMAMUX table about assignments of multiplexer inputs to resources. 0 6 read-write SOIE Synchronization overrun interrupt enable 8 1 read-write B_0x0 interrupt disabled 0x0 B_0x1 interrupt enabled 0x1 EGE Event generation enable 9 1 read-write B_0x0 event generation disabled 0x0 B_0x1 event generation enabled 0x1 SE Synchronization enable 16 1 read-write B_0x0 synchronization disabled 0x0 B_0x1 synchronization enabled 0x1 SPOL Synchronization polarity Defines the edge polarity of the selected synchronization input: 17 2 read-write B_0x0 no event, i.e. no synchronization nor detection. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 NBREQ Number of DMA requests minus 1 to forward Defines the number of DMA requests to forward to the DMA controller after a synchronization event, and/or the number of DMA requests before an output event is generated. This field shall only be written when both SE and EGE bits are low. 19 5 read-write SYNC_ID Synchronization identification Selects the synchronization input (see inputs to resources STM32G0). 24 5 read-write DMAMUX_C3CR DMAMUX_C3CR DMAMUX request line multiplexer channel x configuration register 0xC 0x20 read-write 0x00000000 DMAREQ_ID DMA request identification Selects the input DMA request. See the DMAMUX table about assignments of multiplexer inputs to resources. 0 6 read-write SOIE Synchronization overrun interrupt enable 8 1 read-write B_0x0 interrupt disabled 0x0 B_0x1 interrupt enabled 0x1 EGE Event generation enable 9 1 read-write B_0x0 event generation disabled 0x0 B_0x1 event generation enabled 0x1 SE Synchronization enable 16 1 read-write B_0x0 synchronization disabled 0x0 B_0x1 synchronization enabled 0x1 SPOL Synchronization polarity Defines the edge polarity of the selected synchronization input: 17 2 read-write B_0x0 no event, i.e. no synchronization nor detection. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 NBREQ Number of DMA requests minus 1 to forward Defines the number of DMA requests to forward to the DMA controller after a synchronization event, and/or the number of DMA requests before an output event is generated. This field shall only be written when both SE and EGE bits are low. 19 5 read-write SYNC_ID Synchronization identification Selects the synchronization input (see inputs to resources STM32G0). 24 5 read-write DMAMUX_C4CR DMAMUX_C4CR DMAMUX request line multiplexer channel x configuration register 0x10 0x20 read-write 0x00000000 DMAREQ_ID DMA request identification Selects the input DMA request. See the DMAMUX table about assignments of multiplexer inputs to resources. 0 6 read-write SOIE Synchronization overrun interrupt enable 8 1 read-write B_0x0 interrupt disabled 0x0 B_0x1 interrupt enabled 0x1 EGE Event generation enable 9 1 read-write B_0x0 event generation disabled 0x0 B_0x1 event generation enabled 0x1 SE Synchronization enable 16 1 read-write B_0x0 synchronization disabled 0x0 B_0x1 synchronization enabled 0x1 SPOL Synchronization polarity Defines the edge polarity of the selected synchronization input: 17 2 read-write B_0x0 no event, i.e. no synchronization nor detection. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 NBREQ Number of DMA requests minus 1 to forward Defines the number of DMA requests to forward to the DMA controller after a synchronization event, and/or the number of DMA requests before an output event is generated. This field shall only be written when both SE and EGE bits are low. 19 5 read-write SYNC_ID Synchronization identification Selects the synchronization input (see inputs to resources STM32G0). 24 5 read-write DMAMUX_C5CR DMAMUX_C5CR DMAMUX request line multiplexer channel x configuration register 0x14 0x20 read-write 0x00000000 DMAREQ_ID DMA request identification Selects the input DMA request. See the DMAMUX table about assignments of multiplexer inputs to resources. 0 6 read-write SOIE Synchronization overrun interrupt enable 8 1 read-write B_0x0 interrupt disabled 0x0 B_0x1 interrupt enabled 0x1 EGE Event generation enable 9 1 read-write B_0x0 event generation disabled 0x0 B_0x1 event generation enabled 0x1 SE Synchronization enable 16 1 read-write B_0x0 synchronization disabled 0x0 B_0x1 synchronization enabled 0x1 SPOL Synchronization polarity Defines the edge polarity of the selected synchronization input: 17 2 read-write B_0x0 no event, i.e. no synchronization nor detection. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 NBREQ Number of DMA requests minus 1 to forward Defines the number of DMA requests to forward to the DMA controller after a synchronization event, and/or the number of DMA requests before an output event is generated. This field shall only be written when both SE and EGE bits are low. 19 5 read-write SYNC_ID Synchronization identification Selects the synchronization input (see inputs to resources STM32G0). 24 5 read-write DMAMUX_C6CR DMAMUX_C6CR DMAMUX request line multiplexer channel x configuration register 0x18 0x20 read-write 0x00000000 DMAREQ_ID DMA request identification Selects the input DMA request. See the DMAMUX table about assignments of multiplexer inputs to resources. 0 6 read-write SOIE Synchronization overrun interrupt enable 8 1 read-write B_0x0 interrupt disabled 0x0 B_0x1 interrupt enabled 0x1 EGE Event generation enable 9 1 read-write B_0x0 event generation disabled 0x0 B_0x1 event generation enabled 0x1 SE Synchronization enable 16 1 read-write B_0x0 synchronization disabled 0x0 B_0x1 synchronization enabled 0x1 SPOL Synchronization polarity Defines the edge polarity of the selected synchronization input: 17 2 read-write B_0x0 no event, i.e. no synchronization nor detection. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 NBREQ Number of DMA requests minus 1 to forward Defines the number of DMA requests to forward to the DMA controller after a synchronization event, and/or the number of DMA requests before an output event is generated. This field shall only be written when both SE and EGE bits are low. 19 5 read-write SYNC_ID Synchronization identification Selects the synchronization input (see inputs to resources STM32G0). 24 5 read-write DMAMUX_CSR DMAMUX_CSR DMAMUX request line multiplexer interrupt channel status register 0x80 0x20 read-only 0x00000000 SOF0 Synchronization overrun event flag The flag is set when a synchronization event occurs on a DMA request line multiplexer channel x, while the DMA request counter value is lower than NBREQ. The flag is cleared by writing 1 to the corresponding CSOFx bit in DMAMUX_CFR register. 0 1 read-only SOF1 Synchronization overrun event flag The flag is set when a synchronization event occurs on a DMA request line multiplexer channel x, while the DMA request counter value is lower than NBREQ. The flag is cleared by writing 1 to the corresponding CSOFx bit in DMAMUX_CFR register. 1 1 read-only SOF2 Synchronization overrun event flag The flag is set when a synchronization event occurs on a DMA request line multiplexer channel x, while the DMA request counter value is lower than NBREQ. The flag is cleared by writing 1 to the corresponding CSOFx bit in DMAMUX_CFR register. 2 1 read-only SOF3 Synchronization overrun event flag The flag is set when a synchronization event occurs on a DMA request line multiplexer channel x, while the DMA request counter value is lower than NBREQ. The flag is cleared by writing 1 to the corresponding CSOFx bit in DMAMUX_CFR register. 3 1 read-only SOF4 Synchronization overrun event flag The flag is set when a synchronization event occurs on a DMA request line multiplexer channel x, while the DMA request counter value is lower than NBREQ. The flag is cleared by writing 1 to the corresponding CSOFx bit in DMAMUX_CFR register. 4 1 read-only SOF5 Synchronization overrun event flag The flag is set when a synchronization event occurs on a DMA request line multiplexer channel x, while the DMA request counter value is lower than NBREQ. The flag is cleared by writing 1 to the corresponding CSOFx bit in DMAMUX_CFR register. 5 1 read-only SOF6 Synchronization overrun event flag The flag is set when a synchronization event occurs on a DMA request line multiplexer channel x, while the DMA request counter value is lower than NBREQ. The flag is cleared by writing 1 to the corresponding CSOFx bit in DMAMUX_CFR register. 6 1 read-only DMAMUX_CFR DMAMUX_CFR DMAMUX request line multiplexer interrupt clear flag register 0x84 0x20 write-only 0x00000000 CSOF0 Clear synchronization overrun event flag Writing 1 in each bit clears the corresponding overrun flag SOFx in the DMAMUX_CSR register. 0 1 write-only CSOF1 Clear synchronization overrun event flag Writing 1 in each bit clears the corresponding overrun flag SOFx in the DMAMUX_CSR register. 1 1 write-only CSOF2 Clear synchronization overrun event flag Writing 1 in each bit clears the corresponding overrun flag SOFx in the DMAMUX_CSR register. 2 1 write-only CSOF3 Clear synchronization overrun event flag Writing 1 in each bit clears the corresponding overrun flag SOFx in the DMAMUX_CSR register. 3 1 write-only CSOF4 Clear synchronization overrun event flag Writing 1 in each bit clears the corresponding overrun flag SOFx in the DMAMUX_CSR register. 4 1 write-only CSOF5 Clear synchronization overrun event flag Writing 1 in each bit clears the corresponding overrun flag SOFx in the DMAMUX_CSR register. 5 1 write-only CSOF6 Clear synchronization overrun event flag Writing 1 in each bit clears the corresponding overrun flag SOFx in the DMAMUX_CSR register. 6 1 write-only DMAMUX_RG0CR DMAMUX_RG0CR DMAMUX request generator channel x configuration register 0x100 0x20 read-write 0x00000000 SIG_ID Signal identification Selects the DMA request trigger input used for the channel x of the DMA request generator 0 5 read-write OIE Trigger overrun interrupt enable 8 1 read-write B_0x0 interrupt on a trigger overrun event occurrence is disabled 0x0 B_0x1 interrupt on a trigger overrun event occurrence is enabled 0x1 GE DMA request generator channel x enable 16 1 read-write B_0x0 DMA request generator channel x disabled 0x0 B_0x1 DMA request generator channel x enabled 0x1 GPOL DMA request generator trigger polarity Defines the edge polarity of the selected trigger input 17 2 read-write B_0x0 no event. I.e. none trigger detection nor generation. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 GNBREQ Number of DMA requests to be generated (minus 1) Defines the number of DMA requests to be generated after a trigger event. The actual number of generated DMA requests is GNBREQ +1. Note: This field shall only be written when GE bit is disabled. 19 5 read-write DMAMUX_RG1CR DMAMUX_RG1CR DMAMUX request generator channel x configuration register 0x104 0x20 read-write 0x00000000 SIG_ID Signal identification Selects the DMA request trigger input used for the channel x of the DMA request generator 0 5 read-write OIE Trigger overrun interrupt enable 8 1 read-write B_0x0 interrupt on a trigger overrun event occurrence is disabled 0x0 B_0x1 interrupt on a trigger overrun event occurrence is enabled 0x1 GE DMA request generator channel x enable 16 1 read-write B_0x0 DMA request generator channel x disabled 0x0 B_0x1 DMA request generator channel x enabled 0x1 GPOL DMA request generator trigger polarity Defines the edge polarity of the selected trigger input 17 2 read-write B_0x0 no event. I.e. none trigger detection nor generation. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 GNBREQ Number of DMA requests to be generated (minus 1) Defines the number of DMA requests to be generated after a trigger event. The actual number of generated DMA requests is GNBREQ +1. Note: This field shall only be written when GE bit is disabled. 19 5 read-write DMAMUX_RG2CR DMAMUX_RG2CR DMAMUX request generator channel x configuration register 0x108 0x20 read-write 0x00000000 SIG_ID Signal identification Selects the DMA request trigger input used for the channel x of the DMA request generator 0 5 read-write OIE Trigger overrun interrupt enable 8 1 read-write B_0x0 interrupt on a trigger overrun event occurrence is disabled 0x0 B_0x1 interrupt on a trigger overrun event occurrence is enabled 0x1 GE DMA request generator channel x enable 16 1 read-write B_0x0 DMA request generator channel x disabled 0x0 B_0x1 DMA request generator channel x enabled 0x1 GPOL DMA request generator trigger polarity Defines the edge polarity of the selected trigger input 17 2 read-write B_0x0 no event. I.e. none trigger detection nor generation. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 GNBREQ Number of DMA requests to be generated (minus 1) Defines the number of DMA requests to be generated after a trigger event. The actual number of generated DMA requests is GNBREQ +1. Note: This field shall only be written when GE bit is disabled. 19 5 read-write DMAMUX_RG3CR DMAMUX_RG3CR DMAMUX request generator channel x configuration register 0x10C 0x20 read-write 0x00000000 SIG_ID Signal identification Selects the DMA request trigger input used for the channel x of the DMA request generator 0 5 read-write OIE Trigger overrun interrupt enable 8 1 read-write B_0x0 interrupt on a trigger overrun event occurrence is disabled 0x0 B_0x1 interrupt on a trigger overrun event occurrence is enabled 0x1 GE DMA request generator channel x enable 16 1 read-write B_0x0 DMA request generator channel x disabled 0x0 B_0x1 DMA request generator channel x enabled 0x1 GPOL DMA request generator trigger polarity Defines the edge polarity of the selected trigger input 17 2 read-write B_0x0 no event. I.e. none trigger detection nor generation. 0x0 B_0x1 rising edge 0x1 B_0x2 falling edge 0x2 B_0x3 rising and falling edge 0x3 GNBREQ Number of DMA requests to be generated (minus 1) Defines the number of DMA requests to be generated after a trigger event. The actual number of generated DMA requests is GNBREQ +1. Note: This field shall only be written when GE bit is disabled. 19 5 read-write DMAMUX_RGSR DMAMUX_RGSR DMAMUX request generator interrupt status register 0x140 0x20 read-only 0x00000000 OF0 Trigger overrun event flag The flag is set when a new trigger event occurs on DMA request generator channel x, before the request counter underrun (the internal request counter programmed via the GNBREQ field of the DMAMUX_RGxCR register). The flag is cleared by writing 1 to the corresponding COFx bit in the DMAMUX_RGCFR register. 0 1 read-only OF1 Trigger overrun event flag The flag is set when a new trigger event occurs on DMA request generator channel x, before the request counter underrun (the internal request counter programmed via the GNBREQ field of the DMAMUX_RGxCR register). The flag is cleared by writing 1 to the corresponding COFx bit in the DMAMUX_RGCFR register. 1 1 read-only OF2 Trigger overrun event flag The flag is set when a new trigger event occurs on DMA request generator channel x, before the request counter underrun (the internal request counter programmed via the GNBREQ field of the DMAMUX_RGxCR register). The flag is cleared by writing 1 to the corresponding COFx bit in the DMAMUX_RGCFR register. 2 1 read-only OF3 Trigger overrun event flag The flag is set when a new trigger event occurs on DMA request generator channel x, before the request counter underrun (the internal request counter programmed via the GNBREQ field of the DMAMUX_RGxCR register). The flag is cleared by writing 1 to the corresponding COFx bit in the DMAMUX_RGCFR register. 3 1 read-only DMAMUX_RGCFR DMAMUX_RGCFR DMAMUX request generator interrupt clear flag register 0x144 0x20 write-only 0x00000000 COF0 Clear trigger overrun event flag Writing 1 in each bit clears the corresponding overrun flag OFx in the DMAMUX_RGSR register. 0 1 write-only COF1 Clear trigger overrun event flag Writing 1 in each bit clears the corresponding overrun flag OFx in the DMAMUX_RGSR register. 1 1 write-only COF2 Clear trigger overrun event flag Writing 1 in each bit clears the corresponding overrun flag OFx in the DMAMUX_RGSR register. 2 1 write-only COF3 Clear trigger overrun event flag Writing 1 in each bit clears the corresponding overrun flag OFx in the DMAMUX_RGSR register. 3 1 write-only DMA1 Direct memory access controller DMA 0x40020000 0x0 0x400 registers DMA1_Channel1 DMA1 channel 1 interrupt 9 DMA1_Channel2_3 DMA1 channel 2 and 3 interrupts 10 DMA1_Channel4_5_6_7_DMAMUX_DMA2_Channel1_2_3_4_5 DMA1 channel 4, 5, 6, 7, DMAMUX, DMA2 channel 1, 2, 3, 4, 5 interrupts 11 DMA_ISR DMA_ISR DMA interrupt status register 0x0 0x20 0x00000000 0xFFFFFFFF GIF1 global interrupt flag for channel 1 0 1 read-only B_0x0 no TE, HT or TC event 0x0 B_0x1 a TE, HT or TC event occurred 0x1 TCIF1 transfer complete (TC) flag for channel 1 1 1 read-only B_0x0 no TC event 0x0 B_0x1 a TC event occurred 0x1 HTIF1 half transfer (HT) flag for channel 1 2 1 read-only B_0x0 no HT event 0x0 B_0x1 a HT event occurred 0x1 TEIF1 transfer error (TE) flag for channel 1 3 1 read-only B_0x0 no TE event 0x0 B_0x1 a TE event occurred 0x1 GIF2 global interrupt flag for channel 2 4 1 read-only B_0x0 no TE, HT or TC event 0x0 B_0x1 a TE, HT or TC event occurred 0x1 TCIF2 transfer complete (TC) flag for channel 2 5 1 read-only B_0x0 no TC event 0x0 B_0x1 a TC event occurred 0x1 HTIF2 half transfer (HT) flag for channel 2 6 1 read-only B_0x0 no HT event 0x0 B_0x1 a HT event occurred 0x1 TEIF2 transfer error (TE) flag for channel 2 7 1 read-only B_0x0 no TE event 0x0 B_0x1 a TE event occurred 0x1 GIF3 global interrupt flag for channel 3 8 1 read-only B_0x0 no TE, HT or TC event 0x0 B_0x1 a TE, HT or TC event occurred 0x1 TCIF3 transfer complete (TC) flag for channel 3 9 1 read-only B_0x0 no TC event 0x0 B_0x1 a TC event occurred 0x1 HTIF3 half transfer (HT) flag for channel 3 10 1 read-only B_0x0 no HT event 0x0 B_0x1 a HT event occurred 0x1 TEIF3 transfer error (TE) flag for channel 3 11 1 read-only B_0x0 no TE event 0x0 B_0x1 a TE event occurred 0x1 GIF4 global interrupt flag for channel 4 12 1 read-only B_0x0 no TE, HT or TC event 0x0 B_0x1 a TE, HT or TC event occurred 0x1 TCIF4 transfer complete (TC) flag for channel 4 13 1 read-only B_0x0 no TC event 0x0 B_0x1 a TC event occurred 0x1 HTIF4 half transfer (HT) flag for channel 4 14 1 read-only B_0x0 no HT event 0x0 B_0x1 a HT event occurred 0x1 TEIF4 transfer error (TE) flag for channel 4 15 1 read-only B_0x0 no TE event 0x0 B_0x1 a TE event occurred 0x1 GIF5 global interrupt flag for channel 5 16 1 read-only B_0x0 no TE, HT or TC event 0x0 B_0x1 a TE, HT or TC event occurred 0x1 TCIF5 transfer complete (TC) flag for channel 5 17 1 read-only B_0x0 no TC event 0x0 B_0x1 a TC event occurred 0x1 HTIF5 half transfer (HT) flag for channel 5 18 1 read-only B_0x0 no HT event 0x0 B_0x1 a HT event occurred 0x1 TEIF5 transfer error (TE) flag for channel 5 19 1 read-only B_0x0 no TE event 0x0 B_0x1 a TE event occurred 0x1 GIF6 global interrupt flag for channel 6 20 1 read-only B_0x0 no TE, HT or TC event 0x0 B_0x1 a TE, HT or TC event occurred 0x1 TCIF6 transfer complete (TC) flag for channel 6 21 1 read-only B_0x0 no TC event 0x0 B_0x1 a TC event occurred 0x1 HTIF6 half transfer (HT) flag for channel 6 22 1 read-only B_0x0 no HT event 0x0 B_0x1 a HT event occurred 0x1 TEIF6 transfer error (TE) flag for channel 6 23 1 read-only B_0x0 no TE event 0x0 B_0x1 a TE event occurred 0x1 GIF7 global interrupt flag for channel 7 24 1 read-only B_0x0 no TE, HT or TC event 0x0 B_0x1 a TE, HT or TC event occurred 0x1 TCIF7 transfer complete (TC) flag for channel 7 25 1 read-only B_0x0 no TC event 0x0 B_0x1 a TC event occurred 0x1 HTIF7 half transfer (HT) flag for channel 7 26 1 read-only B_0x0 no HT event 0x0 B_0x1 a HT event occurred 0x1 TEIF7 transfer error (TE) flag for channel 7 27 1 read-only B_0x0 no TE event 0x0 B_0x1 a TE event occurred 0x1 DMA_IFCR DMA_IFCR DMA interrupt flag clear register 0x4 0x20 0x00000000 0xFFFFFFFF CGIF1 global interrupt flag clear for channel 1 0 1 write-only CTCIF1 transfer complete flag clear for channel 1 1 1 write-only CHTIF1 half transfer flag clear for channel 1 2 1 write-only CTEIF1 transfer error flag clear for channel 1 3 1 write-only CGIF2 global interrupt flag clear for channel 2 4 1 write-only CTCIF2 transfer complete flag clear for channel 2 5 1 write-only CHTIF2 half transfer flag clear for channel 2 6 1 write-only CTEIF2 transfer error flag clear for channel 2 7 1 write-only CGIF3 global interrupt flag clear for channel 3 8 1 write-only CTCIF3 transfer complete flag clear for channel 3 9 1 write-only CHTIF3 half transfer flag clear for channel 3 10 1 write-only CTEIF3 transfer error flag clear for channel 3 11 1 write-only CGIF4 global interrupt flag clear for channel 4 12 1 write-only CTCIF4 transfer complete flag clear for channel 4 13 1 write-only CHTIF4 half transfer flag clear for channel 4 14 1 write-only CTEIF4 transfer error flag clear for channel 4 15 1 write-only CGIF5 global interrupt flag clear for channel 5 16 1 write-only CTCIF5 transfer complete flag clear for channel 5 17 1 write-only CHTIF5 half transfer flag clear for channel 5 18 1 write-only CTEIF5 transfer error flag clear for channel 5 19 1 write-only CGIF6 global interrupt flag clear for channel 6 20 1 write-only CTCIF6 transfer complete flag clear for channel 6 21 1 write-only CHTIF6 half transfer flag clear for channel 6 22 1 write-only CTEIF6 transfer error flag clear for channel 6 23 1 write-only CGIF7 global interrupt flag clear for channel 7 24 1 write-only CTCIF7 transfer complete flag clear for channel 7 25 1 write-only CHTIF7 half transfer flag clear for channel 7 26 1 write-only CTEIF7 transfer error flag clear for channel 7 27 1 write-only DMA_CCR1 DMA_CCR1 DMA channel 1 configuration register 0x8 0x20 0x00000000 0xFFFFFFFF EN channel enable When a channel transfer error occurs, this bit is cleared by hardware. It can not be set again by software (channel x re-activated) until the TEIFx bit of the DMA_ISR register is cleared (by setting the CTEIFx bit of the DMA_IFCR register). Note: this bit is set and cleared by software. 0 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TCIE transfer complete interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 1 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 HTIE half transfer interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 2 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TEIE transfer error interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 3 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DIR data transfer direction This bit must be set only in memory-to-peripheral and peripheral-to-memory modes. Source attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Destination attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Destination attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Source attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 4 1 read-write B_0x0 read from peripheral 0x0 B_0x1 read from memory 0x1 CIRC circular mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 5 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PINC peripheral increment mode Defines the increment mode for each DMA transfer to the identified peripheral. n memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 6 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 MINC memory increment mode Defines the increment mode for each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 7 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PSIZE peripheral size Defines the data size of each DMA transfer to the identified peripheral. In memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 8 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 MSIZE memory size Defines the data size of each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 10 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 PL priority level Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 12 2 read-write B_0x0 low 0x0 B_0x1 medium 0x1 B_0x2 high 0x2 B_0x3 very high 0x3 MEM2MEM memory-to-memory mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DMA_CNDTR1 DMA_CNDTR1 DMA channel 1 number of data to transfer register 0xc 0x20 0x00000000 0xFFFFFFFF NDT number of data to transfer (0 to 216 - 1) This field is updated by hardware when the channel is enabled: It is decremented after each single DMA 'read followed by write’ transfer, indicating the remaining amount of data items to transfer. It is kept at zero when the programmed amount of data to transfer is reached, if the channel is not in circular mode (CIRC = 0 in the DMA_CCRx register). It is reloaded automatically by the previously programmed value, when the transfer is complete, if the channel is in circular mode (CIRC = 1). If this field is zero, no transfer can be served whatever the channel status (enabled or not). Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 0 16 read-write DMA_CPAR1 DMA_CPAR1 DMA channel 1 peripheral address register 0x10 0x20 0x00000000 0xFFFFFFFF PA peripheral address It contains the base address of the peripheral data register from/to which the data will be read/written. When PSIZE[1:0] = 01 (16 bits), bit 0 of PA[31:0] is ignored. Access is automatically aligned to a half-word address. When PSIZE = 10 (32 bits), bits 1 and 0 of PA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory destination address if DIR = 1 and the memory source address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral destination address DIR = 1 and the peripheral source address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CMAR1 DMA_CMAR1 DMA channel 1 memory address register 0x14 0x20 0x00000000 0xFFFFFFFF MA peripheral address It contains the base address of the memory from/to which the data will be read/written. When MSIZE[1:0] = 01 (16 bits), bit 0 of MA[31:0] is ignored. Access is automatically aligned to a half-word address. When MSIZE = 10 (32 bits), bits 1 and 0 of MA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory source address if DIR = 1 and the memory destination address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral source address DIR = 1 and the peripheral destination address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CCR2 DMA_CCR2 DMA channel 2 configuration register 0x1c 0x20 0x00000000 0xFFFFFFFF EN channel enable When a channel transfer error occurs, this bit is cleared by hardware. It can not be set again by software (channel x re-activated) until the TEIFx bit of the DMA_ISR register is cleared (by setting the CTEIFx bit of the DMA_IFCR register). Note: this bit is set and cleared by software. 0 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TCIE transfer complete interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 1 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 HTIE half transfer interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 2 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TEIE transfer error interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 3 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DIR data transfer direction This bit must be set only in memory-to-peripheral and peripheral-to-memory modes. Source attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Destination attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Destination attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Source attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 4 1 read-write B_0x0 read from peripheral 0x0 B_0x1 read from memory 0x1 CIRC circular mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 5 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PINC peripheral increment mode Defines the increment mode for each DMA transfer to the identified peripheral. n memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 6 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 MINC memory increment mode Defines the increment mode for each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 7 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PSIZE peripheral size Defines the data size of each DMA transfer to the identified peripheral. In memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 8 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 MSIZE memory size Defines the data size of each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 10 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 PL priority level Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 12 2 read-write B_0x0 low 0x0 B_0x1 medium 0x1 B_0x2 high 0x2 B_0x3 very high 0x3 MEM2MEM memory-to-memory mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DMA_CNDTR2 DMA_CNDTR2 DMA channel 2 number of data to transfer register 0x20 0x20 0x00000000 0xFFFFFFFF NDT number of data to transfer (0 to 216 - 1) This field is updated by hardware when the channel is enabled: It is decremented after each single DMA 'read followed by write’ transfer, indicating the remaining amount of data items to transfer. It is kept at zero when the programmed amount of data to transfer is reached, if the channel is not in circular mode (CIRC = 0 in the DMA_CCRx register). It is reloaded automatically by the previously programmed value, when the transfer is complete, if the channel is in circular mode (CIRC = 1). If this field is zero, no transfer can be served whatever the channel status (enabled or not). Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 0 16 read-write DMA_CPAR2 DMA_CPAR2 DMA channel 2 peripheral address register 0x24 0x20 0x00000000 0xFFFFFFFF PA peripheral address It contains the base address of the peripheral data register from/to which the data will be read/written. When PSIZE[1:0] = 01 (16 bits), bit 0 of PA[31:0] is ignored. Access is automatically aligned to a half-word address. When PSIZE = 10 (32 bits), bits 1 and 0 of PA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory destination address if DIR = 1 and the memory source address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral destination address DIR = 1 and the peripheral source address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CMAR2 DMA_CMAR2 DMA channel 2 memory address register 0x28 0x20 0x00000000 0xFFFFFFFF MA peripheral address It contains the base address of the memory from/to which the data will be read/written. When MSIZE[1:0] = 01 (16 bits), bit 0 of MA[31:0] is ignored. Access is automatically aligned to a half-word address. When MSIZE = 10 (32 bits), bits 1 and 0 of MA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory source address if DIR = 1 and the memory destination address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral source address DIR = 1 and the peripheral destination address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CCR3 DMA_CCR3 DMA channel 3 configuration register 0x30 0x20 0x00000000 0xFFFFFFFF EN channel enable When a channel transfer error occurs, this bit is cleared by hardware. It can not be set again by software (channel x re-activated) until the TEIFx bit of the DMA_ISR register is cleared (by setting the CTEIFx bit of the DMA_IFCR register). Note: this bit is set and cleared by software. 0 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TCIE transfer complete interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 1 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 HTIE half transfer interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 2 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TEIE transfer error interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 3 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DIR data transfer direction This bit must be set only in memory-to-peripheral and peripheral-to-memory modes. Source attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Destination attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Destination attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Source attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 4 1 read-write B_0x0 read from peripheral 0x0 B_0x1 read from memory 0x1 CIRC circular mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 5 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PINC peripheral increment mode Defines the increment mode for each DMA transfer to the identified peripheral. n memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 6 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 MINC memory increment mode Defines the increment mode for each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 7 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PSIZE peripheral size Defines the data size of each DMA transfer to the identified peripheral. In memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 8 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 MSIZE memory size Defines the data size of each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 10 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 PL priority level Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 12 2 read-write B_0x0 low 0x0 B_0x1 medium 0x1 B_0x2 high 0x2 B_0x3 very high 0x3 MEM2MEM memory-to-memory mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DMA_CNDTR3 DMA_CNDTR3 DMA channel 3 number of data to transfer register 0x34 0x20 0x00000000 0xFFFFFFFF NDT number of data to transfer (0 to 216 - 1) This field is updated by hardware when the channel is enabled: It is decremented after each single DMA 'read followed by write’ transfer, indicating the remaining amount of data items to transfer. It is kept at zero when the programmed amount of data to transfer is reached, if the channel is not in circular mode (CIRC = 0 in the DMA_CCRx register). It is reloaded automatically by the previously programmed value, when the transfer is complete, if the channel is in circular mode (CIRC = 1). If this field is zero, no transfer can be served whatever the channel status (enabled or not). Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 0 16 read-write DMA_CPAR3 DMA_CPAR3 DMA channel 3 peripheral address register 0x38 0x20 0x00000000 0xFFFFFFFF PA peripheral address It contains the base address of the peripheral data register from/to which the data will be read/written. When PSIZE[1:0] = 01 (16 bits), bit 0 of PA[31:0] is ignored. Access is automatically aligned to a half-word address. When PSIZE = 10 (32 bits), bits 1 and 0 of PA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory destination address if DIR = 1 and the memory source address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral destination address DIR = 1 and the peripheral source address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CMAR3 DMA_CMAR3 DMA channel 3 memory address register 0x3c 0x20 0x00000000 0xFFFFFFFF MA peripheral address It contains the base address of the memory from/to which the data will be read/written. When MSIZE[1:0] = 01 (16 bits), bit 0 of MA[31:0] is ignored. Access is automatically aligned to a half-word address. When MSIZE = 10 (32 bits), bits 1 and 0 of MA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory source address if DIR = 1 and the memory destination address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral source address DIR = 1 and the peripheral destination address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CCR4 DMA_CCR4 DMA channel 4 configuration register 0x44 0x20 0x00000000 0xFFFFFFFF EN channel enable When a channel transfer error occurs, this bit is cleared by hardware. It can not be set again by software (channel x re-activated) until the TEIFx bit of the DMA_ISR register is cleared (by setting the CTEIFx bit of the DMA_IFCR register). Note: this bit is set and cleared by software. 0 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TCIE transfer complete interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 1 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 HTIE half transfer interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 2 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TEIE transfer error interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 3 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DIR data transfer direction This bit must be set only in memory-to-peripheral and peripheral-to-memory modes. Source attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Destination attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Destination attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Source attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 4 1 read-write B_0x0 read from peripheral 0x0 B_0x1 read from memory 0x1 CIRC circular mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 5 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PINC peripheral increment mode Defines the increment mode for each DMA transfer to the identified peripheral. n memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 6 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 MINC memory increment mode Defines the increment mode for each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 7 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PSIZE peripheral size Defines the data size of each DMA transfer to the identified peripheral. In memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 8 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 MSIZE memory size Defines the data size of each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 10 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 PL priority level Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 12 2 read-write B_0x0 low 0x0 B_0x1 medium 0x1 B_0x2 high 0x2 B_0x3 very high 0x3 MEM2MEM memory-to-memory mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DMA_CNDTR4 DMA_CNDTR4 DMA channel 4 number of data to transfer register 0x48 0x20 0x00000000 0xFFFFFFFF NDT number of data to transfer (0 to 216 - 1) This field is updated by hardware when the channel is enabled: It is decremented after each single DMA 'read followed by write’ transfer, indicating the remaining amount of data items to transfer. It is kept at zero when the programmed amount of data to transfer is reached, if the channel is not in circular mode (CIRC = 0 in the DMA_CCRx register). It is reloaded automatically by the previously programmed value, when the transfer is complete, if the channel is in circular mode (CIRC = 1). If this field is zero, no transfer can be served whatever the channel status (enabled or not). Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 0 16 read-write DMA_CPAR4 DMA_CPAR4 DMA channel 4 peripheral address register 0x4c 0x20 0x00000000 0xFFFFFFFF PA peripheral address It contains the base address of the peripheral data register from/to which the data will be read/written. When PSIZE[1:0] = 01 (16 bits), bit 0 of PA[31:0] is ignored. Access is automatically aligned to a half-word address. When PSIZE = 10 (32 bits), bits 1 and 0 of PA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory destination address if DIR = 1 and the memory source address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral destination address DIR = 1 and the peripheral source address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CMAR4 DMA_CMAR4 DMA channel 4 memory address register 0x50 0x20 0x00000000 0xFFFFFFFF MA peripheral address It contains the base address of the memory from/to which the data will be read/written. When MSIZE[1:0] = 01 (16 bits), bit 0 of MA[31:0] is ignored. Access is automatically aligned to a half-word address. When MSIZE = 10 (32 bits), bits 1 and 0 of MA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory source address if DIR = 1 and the memory destination address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral source address DIR = 1 and the peripheral destination address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CCR5 DMA_CCR5 DMA channel 5 configuration register 0x58 0x20 0x00000000 0xFFFFFFFF EN channel enable When a channel transfer error occurs, this bit is cleared by hardware. It can not be set again by software (channel x re-activated) until the TEIFx bit of the DMA_ISR register is cleared (by setting the CTEIFx bit of the DMA_IFCR register). Note: this bit is set and cleared by software. 0 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TCIE transfer complete interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 1 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 HTIE half transfer interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 2 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TEIE transfer error interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 3 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DIR data transfer direction This bit must be set only in memory-to-peripheral and peripheral-to-memory modes. Source attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Destination attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Destination attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Source attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 4 1 read-write B_0x0 read from peripheral 0x0 B_0x1 read from memory 0x1 CIRC circular mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 5 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PINC peripheral increment mode Defines the increment mode for each DMA transfer to the identified peripheral. n memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 6 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 MINC memory increment mode Defines the increment mode for each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 7 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PSIZE peripheral size Defines the data size of each DMA transfer to the identified peripheral. In memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 8 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 MSIZE memory size Defines the data size of each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 10 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 PL priority level Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 12 2 read-write B_0x0 low 0x0 B_0x1 medium 0x1 B_0x2 high 0x2 B_0x3 very high 0x3 MEM2MEM memory-to-memory mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DMA_CNDTR5 DMA_CNDTR5 DMA channel 5 number of data to transfer register 0x5c 0x20 0x00000000 0xFFFFFFFF NDT number of data to transfer (0 to 216 - 1) This field is updated by hardware when the channel is enabled: It is decremented after each single DMA 'read followed by write’ transfer, indicating the remaining amount of data items to transfer. It is kept at zero when the programmed amount of data to transfer is reached, if the channel is not in circular mode (CIRC = 0 in the DMA_CCRx register). It is reloaded automatically by the previously programmed value, when the transfer is complete, if the channel is in circular mode (CIRC = 1). If this field is zero, no transfer can be served whatever the channel status (enabled or not). Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 0 16 read-write DMA_CPAR5 DMA_CPAR5 DMA channel 5 peripheral address register 0x60 0x20 0x00000000 0xFFFFFFFF PA peripheral address It contains the base address of the peripheral data register from/to which the data will be read/written. When PSIZE[1:0] = 01 (16 bits), bit 0 of PA[31:0] is ignored. Access is automatically aligned to a half-word address. When PSIZE = 10 (32 bits), bits 1 and 0 of PA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory destination address if DIR = 1 and the memory source address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral destination address DIR = 1 and the peripheral source address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CMAR5 DMA_CMAR5 DMA channel 5 memory address register 0x64 0x20 0x00000000 0xFFFFFFFF MA peripheral address It contains the base address of the memory from/to which the data will be read/written. When MSIZE[1:0] = 01 (16 bits), bit 0 of MA[31:0] is ignored. Access is automatically aligned to a half-word address. When MSIZE = 10 (32 bits), bits 1 and 0 of MA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory source address if DIR = 1 and the memory destination address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral source address DIR = 1 and the peripheral destination address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CCR6 DMA_CCR6 DMA channel 6 configuration register 0x6c 0x20 0x00000000 0xFFFFFFFF EN channel enable When a channel transfer error occurs, this bit is cleared by hardware. It can not be set again by software (channel x re-activated) until the TEIFx bit of the DMA_ISR register is cleared (by setting the CTEIFx bit of the DMA_IFCR register). Note: this bit is set and cleared by software. 0 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TCIE transfer complete interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 1 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 HTIE half transfer interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 2 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TEIE transfer error interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 3 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DIR data transfer direction This bit must be set only in memory-to-peripheral and peripheral-to-memory modes. Source attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Destination attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Destination attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Source attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 4 1 read-write B_0x0 read from peripheral 0x0 B_0x1 read from memory 0x1 CIRC circular mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 5 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PINC peripheral increment mode Defines the increment mode for each DMA transfer to the identified peripheral. n memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 6 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 MINC memory increment mode Defines the increment mode for each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 7 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PSIZE peripheral size Defines the data size of each DMA transfer to the identified peripheral. In memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 8 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 MSIZE memory size Defines the data size of each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 10 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 PL priority level Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 12 2 read-write B_0x0 low 0x0 B_0x1 medium 0x1 B_0x2 high 0x2 B_0x3 very high 0x3 MEM2MEM memory-to-memory mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DMA_CNDTR6 DMA_CNDTR6 DMA channel 6 number of data to transfer register 0x70 0x20 0x00000000 0xFFFFFFFF NDT number of data to transfer (0 to 216 - 1) This field is updated by hardware when the channel is enabled: It is decremented after each single DMA 'read followed by write’ transfer, indicating the remaining amount of data items to transfer. It is kept at zero when the programmed amount of data to transfer is reached, if the channel is not in circular mode (CIRC = 0 in the DMA_CCRx register). It is reloaded automatically by the previously programmed value, when the transfer is complete, if the channel is in circular mode (CIRC = 1). If this field is zero, no transfer can be served whatever the channel status (enabled or not). Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 0 16 read-write DMA_CPAR6 DMA_CPAR6 DMA channel 6 peripheral address register 0x74 0x20 0x00000000 0xFFFFFFFF PA peripheral address It contains the base address of the peripheral data register from/to which the data will be read/written. When PSIZE[1:0] = 01 (16 bits), bit 0 of PA[31:0] is ignored. Access is automatically aligned to a half-word address. When PSIZE = 10 (32 bits), bits 1 and 0 of PA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory destination address if DIR = 1 and the memory source address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral destination address DIR = 1 and the peripheral source address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CMAR6 DMA_CMAR6 DMA channel 6 memory address register 0x78 0x20 0x00000000 0xFFFFFFFF MA peripheral address It contains the base address of the memory from/to which the data will be read/written. When MSIZE[1:0] = 01 (16 bits), bit 0 of MA[31:0] is ignored. Access is automatically aligned to a half-word address. When MSIZE = 10 (32 bits), bits 1 and 0 of MA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory source address if DIR = 1 and the memory destination address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral source address DIR = 1 and the peripheral destination address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CCR7 DMA_CCR7 DMA channel 7 configuration register 0x80 0x20 0x00000000 0xFFFFFFFF EN channel enable When a channel transfer error occurs, this bit is cleared by hardware. It can not be set again by software (channel x re-activated) until the TEIFx bit of the DMA_ISR register is cleared (by setting the CTEIFx bit of the DMA_IFCR register). Note: this bit is set and cleared by software. 0 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TCIE transfer complete interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 1 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 HTIE half transfer interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 2 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 TEIE transfer error interrupt enable Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 3 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DIR data transfer direction This bit must be set only in memory-to-peripheral and peripheral-to-memory modes. Source attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Destination attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Destination attributes are defined by PSIZE and PINC, plus the DMA_CPARx register. This is still valid in a memory-to-memory mode. Source attributes are defined by MSIZE and MINC, plus the DMA_CMARx register. This is still valid in a peripheral-to-peripheral mode. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 4 1 read-write B_0x0 read from peripheral 0x0 B_0x1 read from memory 0x1 CIRC circular mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 5 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PINC peripheral increment mode Defines the increment mode for each DMA transfer to the identified peripheral. n memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 6 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 MINC memory increment mode Defines the increment mode for each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 7 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 PSIZE peripheral size Defines the data size of each DMA transfer to the identified peripheral. In memory-to-memory mode, this field identifies the memory destination if DIR = 1 and the memory source if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral destination if DIR = 1 and the peripheral source if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 8 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 MSIZE memory size Defines the data size of each DMA transfer to the identified memory. In memory-to-memory mode, this field identifies the memory source if DIR = 1 and the memory destination if DIR = 0. In peripheral-to-peripheral mode, this field identifies the peripheral source if DIR = 1 and the peripheral destination if DIR = 0. Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 10 2 read-write B_0x0 8 bits 0x0 B_0x1 16 bits 0x1 B_0x2 32 bits 0x2 PL priority level Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 12 2 read-write B_0x0 low 0x0 B_0x1 medium 0x1 B_0x2 high 0x2 B_0x3 very high 0x3 MEM2MEM memory-to-memory mode Note: this bit is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 DMA_CNDTR7 DMA_CNDTR7 DMA channel 7 number of data to transfer register 0x84 0x20 0x00000000 0xFFFFFFFF NDT number of data to transfer (0 to 216 - 1) This field is updated by hardware when the channel is enabled: It is decremented after each single DMA 'read followed by write’ transfer, indicating the remaining amount of data items to transfer. It is kept at zero when the programmed amount of data to transfer is reached, if the channel is not in circular mode (CIRC = 0 in the DMA_CCRx register). It is reloaded automatically by the previously programmed value, when the transfer is complete, if the channel is in circular mode (CIRC = 1). If this field is zero, no transfer can be served whatever the channel status (enabled or not). Note: this field is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is read-only when the channel is enabled (EN = 1). 0 16 read-write DMA_CPAR7 DMA_CPAR7 DMA channel 7 peripheral address register 0x88 0x20 0x00000000 0xFFFFFFFF PA peripheral address It contains the base address of the peripheral data register from/to which the data will be read/written. When PSIZE[1:0] = 01 (16 bits), bit 0 of PA[31:0] is ignored. Access is automatically aligned to a half-word address. When PSIZE = 10 (32 bits), bits 1 and 0 of PA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory destination address if DIR = 1 and the memory source address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral destination address DIR = 1 and the peripheral source address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA_CMAR7 DMA_CMAR7 DMA channel 7 memory address register 0x8c 0x20 0x00000000 0xFFFFFFFF MA peripheral address It contains the base address of the memory from/to which the data will be read/written. When MSIZE[1:0] = 01 (16 bits), bit 0 of MA[31:0] is ignored. Access is automatically aligned to a half-word address. When MSIZE = 10 (32 bits), bits 1 and 0 of MA[31:0] are ignored. Access is automatically aligned to a word address. In memory-to-memory mode, this register identifies the memory source address if DIR = 1 and the memory destination address if DIR = 0. In peripheral-to-peripheral mode, this register identifies the peripheral source address DIR = 1 and the peripheral destination address if DIR = 0. Note: this register is set and cleared by software. It must not be written when the channel is enabled (EN = 1). It is not read-only when the channel is enabled (EN = 1). 0 32 read-write DMA2 0x40020400 EXTI External interrupt/event controller EXTI 0x40021800 0x0 0x400 registers EXTI0_1 EXTI line 0 and 1 interrupt 5 EXTI2_3 EXTI line 2 and 3 interrupt 6 EXTI4_15 EXTI line 4 to 15 interrupt 7 RTSR1 RTSR1 EXTI rising trigger selection register 0x0 0x20 read-write 0x00000000 RT0 Rising trigger event configuration bit of Configurable Event line 0 1 RT1 Rising trigger event configuration bit of Configurable Event line 1 1 RT2 Rising trigger event configuration bit of Configurable Event line 2 1 RT3 Rising trigger event configuration bit of Configurable Event line 3 1 RT4 Rising trigger event configuration bit of Configurable Event line 4 1 RT5 Rising trigger event configuration bit of Configurable Event line 5 1 RT6 Rising trigger event configuration bit of Configurable Event line 6 1 RT7 Rising trigger event configuration bit of Configurable Event line 7 1 RT8 Rising trigger event configuration bit of Configurable Event line 8 1 RT9 Rising trigger event configuration bit of Configurable Event line 9 1 RT10 Rising trigger event configuration bit of Configurable Event line 10 1 RT11 Rising trigger event configuration bit of Configurable Event line 11 1 RT12 Rising trigger event configuration bit of Configurable Event line 12 1 RT13 Rising trigger event configuration bit of Configurable Event line 13 1 RT14 Rising trigger event configuration bit of Configurable Event line 14 1 RT15 Rising trigger event configuration bit of Configurable Event line 15 1 RT16 Rising trigger event configuration bit of Configurable Event line 16 1 RT17 Rising trigger event configuration bit of Configurable Event line 17 1 RT18 Rising trigger event configuration bit of Configurable Event line 18 1 RT20 Rising trigger event configuration bit of Configurable Event line 20 1 FTSR1 FTSR1 EXTI falling trigger selection register 0x4 0x20 read-write 0x00000000 FT0 Falling trigger event configuration bit of configurable line 0 1 FT1 Falling trigger event configuration bit of configurable line 1 1 FT2 Falling trigger event configuration bit of configurable line 2 1 FT3 Falling trigger event configuration bit of configurable line 3 1 FT4 Falling trigger event configuration bit of configurable line 4 1 FT5 Falling trigger event configuration bit of configurable line 5 1 FT6 Falling trigger event configuration bit of configurable line 6 1 FT7 Falling trigger event configuration bit of configurable line 7 1 FT8 Falling trigger event configuration bit of configurable line 8 1 FT9 Falling trigger event configuration bit of configurable line 9 1 FT10 Falling trigger event configuration bit of configurable line 10 1 FT11 Falling trigger event configuration bit of configurable line 11 1 FT12 Falling trigger event configuration bit of configurable line 12 1 FT13 Falling trigger event configuration bit of configurable line 13 1 FT14 Falling trigger event configuration bit of configurable line 14 1 FT15 Falling trigger event configuration bit of configurable line 15 1 FT16 Falling trigger event configuration bit of configurable line 16 1 FT17 Falling trigger event configuration bit of configurable line 17 1 FT18 Falling trigger event configuration bit of configurable line 18 1 FT20 Rising trigger event configuration bit of Configurable Event input 20 1 SWIER1 SWIER1 EXTI software interrupt event register 0x8 0x20 read-write 0x00000000 SWI0 Software rising edge event trigger on line 0 1 SWI1 Software rising edge event trigger on line 1 1 SWI2 Software rising edge event trigger on line 2 1 SWI3 Software rising edge event trigger on line 3 1 SWI4 Software rising edge event trigger on line 4 1 SWI5 Software rising edge event trigger on line 5 1 SWI6 Software rising edge event trigger on line 6 1 SWI7 Software rising edge event trigger on line 7 1 SWI8 Software rising edge event trigger on line 8 1 SWI9 Software rising edge event trigger on line 9 1 SWI10 Software rising edge event trigger on line 10 1 SWI11 Software rising edge event trigger on line 11 1 SWI12 Software rising edge event trigger on line 12 1 SWI13 Software rising edge event trigger on line 13 1 SWI14 Software rising edge event trigger on line 14 1 SWI15 Software rising edge event trigger on line 15 1 SWI16 Software rising edge event trigger on line 16 1 SWI17 Software rising edge event trigger on line 17 1 SWI18 Software rising edge event trigger on line 18 1 SWI20 Software rising edge event trigger on line 20 1 RPR1 RPR1 EXTI rising edge pending register 0xC 0x20 read-write 0x00000000 RPIF0 Rising edge event pending for configurable line 0 1 RPIF1 Rising edge event pending for configurable line 1 1 RPIF2 Rising edge event pending for configurable line 2 1 RPIF3 Rising edge event pending for configurable line 3 1 RPIF4 Rising edge event pending for configurable line 4 1 RPIF5 configurable event inputs x rising edge Pending bit 5 1 RPIF6 Rising edge event pending for configurable line 6 1 RPIF7 Rising edge event pending for configurable line 7 1 RPIF8 Rising edge event pending for configurable line 8 1 RPIF9 Rising edge event pending for configurable line 9 1 RPIF10 Rising edge event pending for configurable line 10 1 RPIF11 Rising edge event pending for configurable line 11 1 RPIF12 Rising edge event pending for configurable line 12 1 RPIF13 Rising edge event pending for configurable line 13 1 RPIF14 Rising edge event pending for configurable line 14 1 RPIF15 Rising edge event pending for configurable line 15 1 RPIF16 Rising edge event pending for configurable line 16 1 RPIF17 Rising edge event pending for configurable line 17 1 RPIF18 Rising edge event pending for configurable line 18 1 RPIF20 Rising edge event pending for configurable line 20 1 FPR1 FPR1 EXTI falling edge pending register 0x10 0x20 read-write 0x00000000 FPIF0 Falling edge event pending for configurable line 0 1 FPIF1 Falling edge event pending for configurable line 1 1 FPIF2 Falling edge event pending for configurable line 2 1 FPIF3 Falling edge event pending for configurable line 3 1 FPIF4 Falling edge event pending for configurable line 4 1 FPIF5 Falling edge event pending for configurable line 5 1 FPIF6 Falling edge event pending for configurable line 6 1 FPIF7 Falling edge event pending for configurable line 7 1 FPIF8 Falling edge event pending for configurable line 8 1 FPIF9 Falling edge event pending for configurable line 9 1 FPIF10 Falling edge event pending for configurable line 10 1 FPIF11 Falling edge event pending for configurable line 11 1 FPIF12 Falling edge event pending for configurable line 12 1 FPIF13 Falling edge event pending for configurable line 13 1 FPIF14 Falling edge event pending for configurable line 14 1 FPIF15 Falling edge event pending for configurable line 15 1 FPIF16 Falling edge event pending for configurable line 16 1 FPIF17 Falling edge event pending for configurable line 17 1 FPIF18 Falling edge event pending for configurable line 18 1 FPIF20 Falling edge event pending for configurable line 20 1 RTSR2 RTSR2 EXTI rising trigger selection register 2 0x28 0x20 read-write 0x00000000 RT2 Rising trigger event configuration bit of configurable line 34 2 1 FTSR2 FTSR2 EXTI falling trigger selection register 2 0x2C 0x20 read-write 0x00000000 FT2 Falling trigger event configuration bit of configurable line 34 2 1 SWIER2 SWIER2 EXTI software interrupt event register 2 0x30 0x20 read-write 0x00000000 SWI2 Software rising edge event trigger on line 34 2 1 RPR2 RPR2 EXTI rising edge pending register 2 0x34 0x20 read-write 0x00000000 RPIF2 Rising edge event pending for configurable line 34 2 1 FPR2 FPR2 EXTI falling edge pending register 2 0x38 0x20 read-write 0x00000000 FPIF2 Falling edge event pending for configurable line 34 2 1 EXTICR1 EXTICR1 EXTI external interrupt selection register 0x60 0x20 read-write 0x00000000 EXTI0_7 GPIO port selection 0 8 EXTI8_15 GPIO port selection 8 8 EXTI16_23 GPIO port selection 16 8 EXTI24_31 GPIO port selection 24 8 EXTICR2 EXTICR2 EXTI external interrupt selection register 0x64 0x20 read-write 0x00000000 EXTI0_7 GPIO port selection 0 8 EXTI8_15 GPIO port selection 8 8 EXTI16_23 GPIO port selection 16 8 EXTI24_31 GPIO port selection 24 8 EXTICR3 EXTICR3 EXTI external interrupt selection register 0x68 0x20 read-write 0x00000000 EXTI0_7 GPIO port selection 0 8 EXTI8_15 GPIO port selection 8 8 EXTI16_23 GPIO port selection 16 8 EXTI24_31 GPIO port selection 24 8 EXTICR4 EXTICR4 EXTI external interrupt selection register 0x6C 0x20 read-write 0x00000000 EXTI0_7 GPIO port selection 0 8 EXTI8_15 GPIO port selection 8 8 EXTI16_23 GPIO port selection 16 8 EXTI24_31 GPIO port selection 24 8 IMR1 IMR1 EXTI CPU wakeup with interrupt mask register 0x80 0x20 read-write 0xFFF80000 IM0 CPU wakeup with interrupt mask on event input 0 1 IM1 CPU wakeup with interrupt mask on event input 1 1 IM2 CPU wakeup with interrupt mask on event input 2 1 IM3 CPU wakeup with interrupt mask on event input 3 1 IM4 CPU wakeup with interrupt mask on event input 4 1 IM5 CPU wakeup with interrupt mask on event input 5 1 IM6 CPU wakeup with interrupt mask on event input 6 1 IM7 CPU wakeup with interrupt mask on event input 7 1 IM8 CPU wakeup with interrupt mask on event input 8 1 IM9 CPU wakeup with interrupt mask on event input 9 1 IM10 CPU wakeup with interrupt mask on event input 10 1 IM11 CPU wakeup with interrupt mask on event input 11 1 IM12 CPU wakeup with interrupt mask on event input 12 1 IM13 CPU wakeup with interrupt mask on event input 13 1 IM14 CPU wakeup with interrupt mask on event input 14 1 IM15 CPU wakeup with interrupt mask on event input 15 1 IM16 CPU wakeup with interrupt mask on event input 16 1 IM17 CPU wakeup with interrupt mask on event input 17 1 IM18 CPU wakeup with interrupt mask on event input 18 1 IM19 CPU wakeup with interrupt mask on event input 19 1 IM20 CPU wakeup with interrupt mask on event input 20 1 IM21 CPU wakeup with interrupt mask on event input 21 1 IM22 CPU wakeup with interrupt mask on event input 22 1 IM23 CPU wakeup with interrupt mask on event input 23 1 IM24 CPU wakeup with interrupt mask on event input 24 1 IM25 CPU wakeup with interrupt mask on event input 25 1 IM26 CPU wakeup with interrupt mask on event input 26 1 IM27 CPU wakeup with interrupt mask on event input 27 1 IM28 CPU wakeup with interrupt mask on event input 28 1 IM29 CPU wakeup with interrupt mask on event input 29 1 IM30 CPU wakeup with interrupt mask on event input 30 1 IM31 CPU wakeup with interrupt mask on event input 31 1 EMR1 EMR1 EXTI CPU wakeup with event mask register IMR1 0x84 0x20 read-write 0x00000000 EM0 CPU wakeup with event mask on event input 0 1 EM1 CPU wakeup with event mask on event input 1 1 EM2 CPU wakeup with event mask on event input 2 1 EM3 CPU wakeup with event mask on event input 3 1 EM4 CPU wakeup with event mask on event input 4 1 EM5 CPU wakeup with event mask on event input 5 1 EM6 CPU wakeup with event mask on event input 6 1 EM7 CPU wakeup with event mask on event input 7 1 EM8 CPU wakeup with event mask on event input 8 1 EM9 CPU wakeup with event mask on event input 9 1 EM10 CPU wakeup with event mask on event input 10 1 EM11 CPU wakeup with event mask on event input 11 1 EM12 CPU wakeup with event mask on event input 12 1 EM13 CPU wakeup with event mask on event input 13 1 EM14 CPU wakeup with event mask on event input 14 1 EM15 CPU wakeup with event mask on event input 15 1 EM16 CPU wakeup with event mask on event input 16 1 EM17 CPU wakeup with event mask on event input 17 1 EM18 CPU wakeup with event mask on event input 18 1 EM19 CPU wakeup with event mask on event input 19 1 EM21 CPU wakeup with event mask on event input 21 1 EM23 CPU wakeup with event mask on event input 23 1 EM25 CPU wakeup with event mask on event input 25 1 EM26 CPU wakeup with event mask on event input 26 1 EM27 CPU wakeup with event mask on event input 27 1 EM28 CPU wakeup with event mask on event input 28 1 EM29 CPU wakeup with event mask on event input 29 1 EM30 CPU wakeup with event mask on event input 30 1 EM31 CPU wakeup with event mask on event input 31 1 IMR2 IMR2 EXTI CPU wakeup with interrupt mask register 0x90 0x20 read-write 0xFFFFFFFF IM32 CPU wakeup with interrupt mask on event input 0 1 IM33 CPU wakeup with interrupt mask on event input 1 1 IM34 CPU wakeup with interrupt mask on event input 2 1 IM35 CPU wakeup with interrupt mask on event input 3 1 EMR2 EMR2 EXTI CPU wakeup with event mask register 0x94 0x20 read-write 0x00000000 EM32 CPU wakeup with event mask on event input 0 1 EM33 CPU wakeup with event mask on event input 1 1 EM34 CPU wakeup with event mask on event input 2 1 EM35 CPU wakeup with event mask on event input 3 1 FDCAN1 FD controller area network FDCAN 0x40006400 0x0 0x400 registers FDCAN_CREL FDCAN_CREL FDCAN core release register 0x0 0x20 0x32141218 0xFFFFFFFF DAY 18 0 8 read-only MON 12 8 8 read-only YEAR 4 16 4 read-only SUBSTEP 1 20 4 read-only STEP 2 24 4 read-only REL 3 28 4 read-only FDCAN_ENDN FDCAN_ENDN FDCAN endian register 0x4 0x20 0x87654321 0xFFFFFFFF ETV Endianness test value The endianness test value is 0x8765 4321. 0 32 read-only FDCAN_DBTP FDCAN_DBTP FDCAN data bit timing and prescaler register 0xc 0x20 0x00000A33 0xFFFFFFFF DSJW Synchronization jump width Must always be smaller than DTSEG2, valid values are 0 to 15. The value used by the hardware is the one programmed, incremented by 1: tSJW = (DSJW + 1) x tq. 0 4 read-write DTSEG2 Data time segment after sample point Valid values are 0 to 15. The value used by the hardware is the one programmed, incremented by 1, i.e. tBS2 = (DTSEG2 + 1) x tq. 4 4 read-write DTSEG1 Data time segment before sample point Valid values are 0 to 31. The value used by the hardware is the one programmed, incremented by 1, i.e. tBS1 = (DTSEG1 + 1) x tq. 8 5 read-write DBRP Data bit rate prescaler The value by which the oscillator frequency is divided to generate the bit time quanta. The bit time is built up from a multiple of this quanta. Valid values for the Baud Rate Prescaler are 0 to 31. The hardware interpreters this value as the value programmed plus 1. 16 5 read-write TDC Transceiver delay compensation 23 1 read-write B_0x0 Transceiver delay compensation disabled 0x0 B_0x1 Transceiver delay compensation enabled 0x1 FDCAN_TEST FDCAN_TEST FDCAN test register 0x10 0x20 0x00000000 0xFFFFFFFF LBCK Loop back mode 4 1 read-write B_0x0 Reset value, Loop Back mode is disabled 0x0 B_0x1 Loop Back mode is enabled (see Power down (Sleep mode)) 0x1 TX Control of transmit pin 5 2 read-write B_0x0 Reset value, FDCANx_TX TX is controlled by the CAN core, updated at the end of the CAN bit time 0x0 B_0x1 Sample point can be monitored at pin FDCANx_TX 0x1 B_0x2 Dominant (0) level at pin FDCANx_TX 0x2 B_0x3 Recessive (1) at pin FDCANx_TX 0x3 RX Receive pin Monitors the actual value of pin FDCANx_RX 7 1 read-only B_0x0 The CAN bus is dominant (FDCANx_RX = 0) 0x0 B_0x1 The CAN bus is recessive (FDCANx_RX = 1) 0x1 FDCAN_RWD FDCAN_RWD FDCAN RAM watchdog register 0x14 0x20 0x00000000 0xFFFFFFFF WDC Watchdog configuration Start value of the message RAM watchdog counter. With the reset value of 00, the counter is disabled. These are protected write (P) bits, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of FDCAN_CCCR register are set to 1. 0 8 read-write WDV Watchdog value Actual message RAM watchdog counter value. 8 8 read-only FDCAN_CCCR FDCAN_CCCR FDCAN CC control register 0x18 0x20 0x00000001 0xFFFFFFFF INIT Initialization 0 1 read-write B_0x0 Normal operation 0x0 B_0x1 Initialization started 0x1 CCE Configuration change enable 1 1 read-write B_0x0 The CPU has no write access to the protected configuration registers. 0x0 B_0x1 The CPU has write access to the protected configuration registers (while CCCR.INIT = 1). 0x1 ASM ASM restricted operation mode The restricted operation mode is intended for applications that adapt themselves to different CAN bit rates. The application tests different bit rates and leaves the Restricted Operation Mode after it has received a valid frame. In the optional Restricted Operation Mode the node is able to transmit and receive data and remote frames and it gives acknowledge to valid frames, but it does not send active error frames or overload frames. In case of an error condition or overload condition, it does not send dominant bits, instead it waits for the occurrence of bus idle condition to resynchronize itself to the CAN communication. The error counters are not incremented. Bit ASM can only be set by software when both CCE and INIT are set to 1. The bit can be reset by the software at any time. 2 1 read-write B_0x0 Normal CAN operation 0x0 B_0x1 Restricted Operation Mode active 0x1 CSA Clock stop acknowledge 3 1 read-only B_0x0 No clock stop acknowledged 0x0 B_0x1 FDCAN may be set in power down by stopping APB clock and kernel clock. 0x1 CSR Clock stop request 4 1 read-write B_0x0 No clock stop requested 0x0 B_0x1 Clock stop requested. When clock stop is requested, first INIT and then CSA is set after all pending transfer requests have been completed and the CAN bus reached idle. 0x1 MON Bus monitoring mode Bit MON can only be set by software when both CCE and INIT are set to 1. The bit can be reset by the Host at any time. 5 1 read-write B_0x0 Bus monitoring mode disabled 0x0 B_0x1 Bus monitoring mode enabled 0x1 DAR Disable automatic retransmission 6 1 read-write B_0x0 Automatic retransmission of messages not transmitted successfully enabled 0x0 B_0x1 Automatic retransmission disabled 0x1 TEST Test mode enable 7 1 read-write B_0x0 Normal operation, register TEST holds reset values 0x0 B_0x1 Test Mode, write access to register TEST enabled 0x1 FDOE FD operation enable 8 1 read-write B_0x0 FD operation disabled 0x0 B_0x1 FD operation enabled 0x1 BRSE FDCAN bit rate switching 9 1 read-write B_0x0 Bit rate switching for transmissions disabled 0x0 B_0x1 Bit rate switching for transmissions enabled 0x1 PXHD Protocol exception handling disable 12 1 read-write B_0x0 Protocol exception handling enabled 0x0 B_0x1 Protocol exception handling disabled 0x1 EFBI Edge filtering during bus integration 13 1 read-write B_0x0 Edge filtering disabled 0x0 B_0x1 Two consecutive dominant tq required to detect an edge for hard synchronization 0x1 TXP If this bit is set, the FDCAN pauses for two CAN bit times before starting the next transmission after successfully transmitting a frame. 14 1 read-write B_0x0 disabled 0x0 B_0x1 enabled 0x1 NISO Non ISO operation If this bit is set, the FDCAN uses the CAN FD frame format as specified by the Bosch CAN FD Specification V1.0. 15 1 read-write B_0x0 CAN FD frame format according to ISO11898-1 0x0 B_0x1 CAN FD frame format according to Bosch CAN FD Specification V1.0 0x1 FDCAN_NBTP FDCAN_NBTP FDCAN nominal bit timing and prescaler register 0x1c 0x20 0x06000A03 0xFFFFFFFF NTSEG2 Nominal time segment after sample point Valid values are 0 to 127. The actual interpretation by the hardware of this value is such that one more than the programmed value is used. 0 7 read-write NTSEG1 Nominal time segment before sample point Valid values are 0 to 255. The actual interpretation by the hardware of this value is such that one more than the programmed value is used. These are protected write (P) bits, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 8 8 read-write NBRP Bit rate prescaler Value by which the oscillator frequency is divided for generating the bit time quanta. The bit time is built up from a multiple of this quanta. Valid values are 0 to 511. The actual interpretation by the hardware of this value is such that one more than the value programmed here is used. These are protected write (P) bits, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 16 9 read-write NSJW Nominal (re)synchronization jump width Valid values are 0 to 127. The actual interpretation by the hardware of this value is such that the used value is the one programmed incremented by one. These are protected write (P) bits, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 25 7 read-write FDCAN_TSCC FDCAN_TSCC FDCAN timestamp counter configuration register 0x20 0x20 0x00000000 0xFFFFFFFF TSS Timestamp select These are protected write (P) bits, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 0 2 read-write B_0x0 Timestamp counter value always 0x0000 0x0 B_0x1 Timestamp counter value incremented according to TCP 0x1 B_0x2 External timestamp counter from TIM3 value (tim3_cnt[0:15]) 0x2 B_0x3 Same as 00. 0x3 TCP Timestamp counter prescaler Configures the timestamp and timeout counters time unit in multiples of CAN bit times [1 … 16]. The actual interpretation by the hardware of this value is such that one more than the value programmed here is used. In CAN FD mode the internal timestamp counter TCP does not provide a constant time base due to the different CAN bit times between arbitration phase and data phase. Thus CAN FD requires an external counter for timestamp generation (TSS = 10). These are protected write (P) bits, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 16 4 read-write FDCAN_TSCV FDCAN_TSCV FDCAN timestamp counter value register 0x24 0x20 0x00000000 0xFFFFFFFF TSC Timestamp counter The internal/external timestamp counter value is captured on start of frame (both Rx and Tx). When TSCC[TSS] = 01, the timestamp counter is incremented in multiples of CAN bit times [1 … 16] depending on the configuration of TSCC[TCP]. A wrap around sets interrupt flag IR[TSW]. Write access resets the counter to 0. When TSCC.TSS = 10, TSC reflects the external timestamp counter value. A write access has no impact. 0 16 read-write FDCAN_TOCC FDCAN_TOCC FDCAN timeout counter configuration register 0x28 0x20 0xFFFF0000 0xFFFFFFFF ETOC Timeout counter enable This is a protected write (P) bit, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 0 1 read-write B_0x0 Timeout counter disabled 0x0 B_0x1 Timeout counter enabled 0x1 TOS Timeout select When operating in Continuous mode, a write to TOCV presets the counter to the value configured by TOCC[TOP] and continues down-counting. When the timeout counter is controlled by one of the FIFOs, an empty FIFO presets the counter to the value configured by TOCC[TOP]. Down-counting is started when the first FIFO element is stored. These are protected write (P) bits, write access is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 1 2 read-write B_0x0 Continuous operation 0x0 B_0x1 Timeout controlled by Tx Event FIFO 0x1 B_0x2 Timeout controlled by Rx FIFO 0 0x2 B_0x3 Timeout controlled by Rx FIFO 1 0x3 TOP Timeout period Start value of the timeout counter (down-counter). Configures the timeout period. 16 16 read-write FDCAN_TOCV FDCAN_TOCV FDCAN timeout counter value register 0x2c 0x20 0x0000FFFF 0xFFFFFFFF TOC Timeout counter The timeout counter is decremented in multiples of CAN bit times [1 … 16] depending on the configuration of TSCC.TCP. When decremented to 0, interrupt flag IR.TOO is set and the Timeout Counter is stopped. Start and reset/restart conditions are configured via TOCC.TOS. 0 16 read-write FDCAN_ECR FDCAN_ECR FDCAN error counter register 0x40 0x20 0x00000000 0xFFFFFFFF TEC Transmit error counter Actual state of the transmit error counter, values between 0 and 255. When CCCR.ASM is set, the CAN protocol controller does not increment TEC and REC when a CAN protocol error is detected, but CEL is still incremented. 0 8 read-only REC Receive error counter Actual state of the receive error counter, values between 0 and 127. 8 7 read-only RP Receive error passive 15 1 read-only B_0x0 The receive error counter is below the error passive level of 128. 0x0 B_0x1 The receive error counter has reached the error passive level of 128. 0x1 CEL CAN error logging The counter is incremented each time when a CAN protocol error causes the transmit error counter or the receive error counter to be incremented. It is reset by read access to CEL. The counter stops at 0xFF; the next increment of TEC or REC sets interrupt flag IR[ELO]. Access type is RX: reset on read. 16 8 read-write clear FDCAN_PSR FDCAN_PSR FDCAN protocol status register 0x44 0x20 0x00000707 0xFFFFFFFF LEC Last error code The LEC indicates the type of the last error to occur on the CAN bus. This field is cleared to 0 when a message has been transferred (reception or transmission) without error. Access type is RS: set on read. 0 3 read-write B_0x0 No Error: No error occurred since LEC has been reset by successful reception or transmission. 0x0 B_0x1 Stuff Error: More than 5 equal bits in a sequence have occurred in a part of a received message where this is not allowed. 0x1 B_0x2 Form Error: A fixed format part of a received frame has the wrong format. 0x2 B_0x3 AckError: The message transmitted by the FDCAN was not acknowledged by another node. 0x3 B_0x4 Bit1Error: During the transmission of a message (with the exception of the arbitration field), the device wanted to send a recessive level (bit of logical value 1), but the monitored bus value was dominant. 0x4 B_0x5 Bit0Error: During the transmission of a message (or acknowledge bit, or active error flag, or overload flag), the device wanted to send a dominant level (data or identifier bit logical value 0), but the monitored bus value was recessive. During Bus_Off recovery this status is set each time a sequence of 11 recessive bits has been monitored. This enables the CPU to monitor the proceeding of the Bus_Off recovery sequence (indicating the bus is not stuck at dominant or continuously disturbed). 0x5 B_0x6 CRCError: The CRC check sum of a received message was incorrect. The CRC of an incoming message does not match with the CRC calculated from the received data. 0x6 B_0x7 NoChange: Any read access to the Protocol status register re-initializes the LEC to '7’. When the LEC shows the value '7’, no CAN bus event was detected since the last CPU read access to the Protocol status register. 0x7 ACT Activity Monitors the module’s CAN communication state. 3 2 read-only B_0x0 Synchronizing: node is synchronizing on CAN communication. 0x0 B_0x1 Idle: node is neither receiver nor transmitter. 0x1 B_0x2 Receiver: node is operating as receiver. 0x2 B_0x3 Transmitter: node is operating as transmitter. 0x3 EP Error passive 5 1 read-only B_0x0 The FDCAN is in the Error_Active state. It normally takes part in bus communication and sends an active error flag when an error has been detected. 0x0 B_0x1 The FDCAN is in the Error_Passive state. 0x1 EW Warning Sstatus 6 1 read-only B_0x0 Both error counters are below the Error_Warning limit of 96. 0x0 B_0x1 At least one of error counter has reached the Error_Warning limit of 96. 0x1 BO Bus_Off status 7 1 read-only B_0x0 The FDCAN is not Bus_Off. 0x0 B_0x1 The FDCAN is in Bus_Off state. 0x1 DLEC Data last error code Type of last error that occurred in the data phase of a FDCAN format frame with its BRS flag set. Coding is the same as for LEC. This field is cleared to 0 when a FDCAN format frame with its BRS flag set has been transferred (reception or transmission) without error. Access type is RS: set on read. 8 3 read-write RESI ESI flag of last received FDCAN message This bit is set together with REDL, independent of acceptance filtering. Access type is RX: reset on read. 11 1 read-write B_0x0 Last received FDCAN message did not have its ESI flag set. 0x0 B_0x1 Last received FDCAN message had its ESI flag set. 0x1 RBRS BRS flag of last received FDCAN message This bit is set together with REDL, independent of acceptance filtering. Access type is RX: reset on read. 12 1 read-write B_0x0 Last received FDCAN message did not have its BRS flag set. 0x0 B_0x1 Last received FDCAN message had its BRS flag set. 0x1 REDL Received FDCAN message This bit is set independent of acceptance filtering. Access type is RX: reset on read. 13 1 read-write B_0x0 Since this bit was reset by the CPU, no FDCAN message has been received. 0x0 B_0x1 Message in FDCAN format with EDL flag set has been received. 0x1 PXE Protocol exception event 14 1 read-write B_0x0 No protocol exception event occurred since last read access 0x0 B_0x1 Protocol exception event occurred 0x1 TDCV Transmitter delay compensation value Position of the secondary sample point, defined by the sum of the measured delay from FDCAN_TX to FDCAN_RX and TDCR.TDCO. The SSP position is, in the data phase, the number of minimum time quanta (mtq) between the start of the transmitted bit and the secondary sample point. Valid values are 0 to 127 mtq. 16 7 read-only FDCAN_TDCR FDCAN_TDCR FDCAN transmitter delay compensation register 0x48 0x20 0x00000000 0xFFFFFFFF TDCF Transmitter delay compensation filter window length Defines the minimum value for the SSP position, dominant edges on FDCAN_RX that would result in an earlier SSP position are ignored for transmitter delay measurements. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 0 7 read-write TDCO Transmitter delay compensation offset Offset value defining the distance between the measured delay from FDCAN_TX to FDCAN_RX and the secondary sample point. Valid values are 0 to 127 mtq. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 8 7 read-write FDCAN_IR FDCAN_IR FDCAN interrupt register 0x50 0x20 0x00000000 0xFFFFFFFF RF0N Rx FIFO 0 new message 0 1 read-write B_0x0 No new message written to Rx FIFO 0 0x0 B_0x1 New message written to Rx FIFO 0 0x1 RF0F Rx FIFO 0 full 1 1 read-write B_0x0 Rx FIFO 0 not full 0x0 B_0x1 Rx FIFO 0 full 0x1 RF0L Rx FIFO 0 message lost 2 1 read-write B_0x0 No Rx FIFO 0 message lost 0x0 B_0x1 Rx FIFO 0 message lost 0x1 RF1N Rx FIFO 1 new message 3 1 read-write B_0x0 No new message written to Rx FIFO 1 0x0 B_0x1 New message written to Rx FIFO 1 0x1 RF1F Rx FIFO 1 full 4 1 read-write B_0x0 Rx FIFO 1 not full 0x0 B_0x1 Rx FIFO 1 full 0x1 RF1L Rx FIFO 1 message lost 5 1 read-write B_0x0 No Rx FIFO 1 message lost 0x0 B_0x1 Rx FIFO 1 message lost 0x1 HPM High-priority message 6 1 read-write B_0x0 No high-priority message received 0x0 B_0x1 High-priority message received 0x1 TC Transmission completed 7 1 read-write B_0x0 No transmission completed 0x0 B_0x1 Transmission completed 0x1 TCF Transmission cancellation finished 8 1 read-write B_0x0 No transmission cancellation finished 0x0 B_0x1 Transmission cancellation finished 0x1 TFE Tx FIFO empty 9 1 read-write B_0x0 Tx FIFO non-empty 0x0 B_0x1 Tx FIFO empty 0x1 TEFN Tx event FIFO New Entry 10 1 read-write B_0x0 Tx event FIFO unchanged 0x0 B_0x1 Tx handler wrote Tx event FIFO element. 0x1 TEFF Tx event FIFO full 11 1 read-write B_0x0 Tx event FIFO Not full 0x0 B_0x1 Tx event FIFO full 0x1 TEFL Tx event FIFO element lost 12 1 read-write B_0x0 No Tx event FIFO element lost 0x0 B_0x1 Tx event FIFO element lost 0x1 TSW Timestamp wraparound 13 1 read-write B_0x0 No timestamp counter wrap-around 0x0 B_0x1 Timestamp counter wrapped around 0x1 MRAF Message RAM access failure The flag is set when the Rx handler: has not completed acceptance filtering or storage of an accepted message until the arbitration field of the following message has been received. In this case acceptance filtering or message storage is aborted and the Rx Handler starts processing of the following message. was unable to write a message to the message RAM. In this case message storage is aborted. In both cases the FIFO put index is not updated. The partly stored message is overwritten when the next message is stored to this location. The flag is also set when the Tx Handler was not able to read a message from the Message RAM in time. In this case message transmission is aborted. In case of a Tx Handler access failure the FDCAN is switched into Restricted Operation Mode (see mode). To leave Restricted Operation Mode, the Host CPU has to reset CCCR.ASM. 14 1 read-write B_0x0 No Message RAM access failure occurred 0x0 B_0x1 Message RAM access failure occurred 0x1 TOO Timeout occurred 15 1 read-write B_0x0 No timeout 0x0 B_0x1 Timeout reached 0x1 ELO Error logging overflow 16 1 read-write B_0x0 CAN error logging counter did not overflow. 0x0 B_0x1 Overflow of CAN error logging counter occurred. 0x1 EP Error passive 17 1 read-write B_0x0 Error_Passive status unchanged 0x0 B_0x1 Error_Passive status changed 0x1 EW Warning status 18 1 read-write B_0x0 Error_Warning status unchanged 0x0 B_0x1 Error_Warning status changed 0x1 BO Bus_Off status 19 1 read-write B_0x0 Bus_Off status unchanged 0x0 B_0x1 Bus_Off status changed 0x1 WDI Watchdog interrupt 20 1 read-write B_0x0 No message RAM watchdog event occurred 0x0 B_0x1 Message RAM watchdog event due to missing READY 0x1 PEA Protocol error in arbitration phase (nominal bit time is used) 21 1 read-write B_0x0 No protocol error in arbitration phase 0x0 B_0x1 Protocol error in arbitration phase detected (PSR.LEC different from 0,7) 0x1 PED Protocol error in data phase (data bit time is used) 22 1 read-write B_0x0 No protocol error in data phase 0x0 B_0x1 Protocol error in data phase detected (PSR.DLEC different from 0,7) 0x1 ARA Access to reserved address 23 1 read-write B_0x0 No access to reserved address occurred 0x0 B_0x1 Access to reserved address occurred 0x1 FDCAN_IE FDCAN_IE FDCAN interrupt enable register 0x54 0x20 0x00000000 0xFFFFFFFF RF0NE Rx FIFO 0 new message interrupt enable 0 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 RF0FE Rx FIFO 0 full interrupt enable 1 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 RF0LE Rx FIFO 0 message lost interrupt enable 2 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 RF1NE Rx FIFO 1 new message interrupt enable 3 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 RF1FE Rx FIFO 1 full interrupt enable 4 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 RF1LE Rx FIFO 1 message lost interrupt enable 5 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 HPME High-priority message interrupt enable 6 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TCE Transmission completed interrupt enable 7 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TCFE Transmission cancellation finished interrupt enable 8 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TFEE Tx FIFO empty interrupt enable 9 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TEFNE Tx event FIFO new entry interrupt enable 10 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TEFFE Tx event FIFO full interrupt enable 11 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TEFLE Tx event FIFO element lost interrupt enable 12 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TSWE Timestamp wraparound interrupt enable 13 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 MRAFE Message RAM access failure interrupt enable 14 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 TOOE Timeout occurred interrupt enable 15 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 ELOE Error logging overflow interrupt enable 16 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 EPE Error passive interrupt enable 17 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 EWE Warning status interrupt enable 18 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 BOE Bus_Off status 19 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 WDIE Watchdog interrupt enable 20 1 read-write B_0x0 Interrupt disabled 0x0 B_0x1 Interrupt enabled 0x1 PEAE Protocol error in arbitration phase enable 21 1 read-write PEDE Protocol error in data phase enable 22 1 read-write ARAE Access to reserved address enable 23 1 read-write FDCAN_ILS FDCAN_ILS FDCAN interrupt line select register 0x58 0x20 0x00000000 0xFFFFFFFF RxFIFO0 RX FIFO bit grouping the following interruption RF0LL: Rx FIFO 0 message lost interrupt line RF0FL: Rx FIFO 0 full interrupt line RF0NL: Rx FIFO 0 new message interrupt line 0 1 read-write RxFIFO1 RX FIFO bit grouping the following interruption RF1LL: Rx FIFO 1 message lost interrupt line RF1FL: Rx FIFO 1 full Interrupt line RF1NL: Rx FIFO 1 new message interrupt line 1 1 read-write SMSG Status message bit grouping the following interruption TCFL: Transmission cancellation finished interrupt line TCL: Transmission completed interrupt line HPML: High-priority message interrupt line 2 1 read-write TFERR Tx FIFO ERROR grouping the following interruption TEFLL: Tx event FIFO element lost interrupt line TEFFL: Tx event FIFO full interrupt line TEFNL: Tx event FIFO new entry interrupt line TFEL: Tx FIFO empty interrupt line 3 1 read-write MISC Interrupt regrouping the following interruption TOOL: Timeout occurred interrupt line MRAFL: Message RAM access failure interrupt line TSWL: Timestamp wraparound interrupt line 4 1 read-write BERR BERR 5 1 read-write PERR Protocol error grouping the following interruption ARAL: Access to reserved address line PEDL: Protocol error in data phase line PEAL: Protocol error in arbitration phase line WDIL: Watchdog interrupt line BOL: Bus_Off status EWL: Warning status interrupt line 6 1 read-write FDCAN_ILE FDCAN_ILE FDCAN interrupt line enable register 0x5c 0x20 0x00000000 0xFFFFFFFF EINT0 Enable interrupt line 0 0 1 read-write B_0x0 Interrupt line fdcan_intr1_it disabled 0x0 B_0x1 Interrupt line fdcan_intr1_it enabled 0x1 EINT1 Enable interrupt line 1 1 1 read-write B_0x0 Interrupt line fdcan_intr0_it disabled 0x0 B_0x1 Interrupt line fdcan_intr0_it enabled 0x1 FDCAN_RXGFC FDCAN_RXGFC FDCAN global filter configuration register 0x80 0x20 0x00000000 0xFFFFFFFF RRFE Reject remote frames extended These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 0 1 read-write B_0x0 Filter remote frames with 29-bit standard IDs 0x0 B_0x1 Reject all remote frames with 29-bit standard IDs 0x1 RRFS Reject remote frames standard These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 1 1 read-write B_0x0 Filter remote frames with 11-bit standard IDs 0x0 B_0x1 Reject all remote frames with 11-bit standard IDs 0x1 ANFE Accept non-matching frames extended Defines how received messages with 29-bit IDs that do not match any element of the filter list are treated. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 2 2 read-write B_0x0 Accept in Rx FIFO 0 0x0 B_0x1 Accept in Rx FIFO 1 0x1 B_0x2 Reject 0x2 B_0x3 Reject 0x3 ANFS Accept Non-matching frames standard Defines how received messages with 11-bit IDs that do not match any element of the filter list are treated. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 4 2 read-write B_0x0 Accept in Rx FIFO 0 0x0 B_0x1 Accept in Rx FIFO 1 0x1 B_0x2 Reject 0x2 B_0x3 Reject 0x3 F1OM FIFO 1 operation mode (overwrite or blocking) This is a protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 8 1 read-write F0OM FIFO 0 operation mode (overwrite or blocking) This is protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 9 1 read-write LSS List size standard >28: Values greater than 28 are interpreted as 28. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 16 5 read-write B_0x0 No standard message ID filter 0x0 B_0x1 Number of standard message ID filter elements 0x1 B_0x2 Number of standard message ID filter elements 0x2 B_0x3 Number of standard message ID filter elements 0x3 B_0x4 Number of standard message ID filter elements 0x4 B_0x5 Number of standard message ID filter elements 0x5 B_0x6 Number of standard message ID filter elements 0x6 B_0x7 Number of standard message ID filter elements 0x7 B_0x8 Number of standard message ID filter elements 0x8 B_0x9 Number of standard message ID filter elements 0x9 B_0xa Number of standard message ID filter elements 0xa B_0xb Number of standard message ID filter elements 0xb B_0xc Number of standard message ID filter elements 0xc B_0xd Number of standard message ID filter elements 0xd B_0xe Number of standard message ID filter elements 0xe B_0xf Number of standard message ID filter elements 0xf B_0x10 Number of standard message ID filter elements 0x10 B_0x11 Number of standard message ID filter elements 0x11 B_0x12 Number of standard message ID filter elements 0x12 B_0x13 Number of standard message ID filter elements 0x13 B_0x14 Number of standard message ID filter elements 0x14 B_0x15 Number of standard message ID filter elements 0x15 B_0x16 Number of standard message ID filter elements 0x16 B_0x17 Number of standard message ID filter elements 0x17 B_0x18 Number of standard message ID filter elements 0x18 B_0x19 Number of standard message ID filter elements 0x19 B_0x1a Number of standard message ID filter elements 0x1a B_0x1b Number of standard message ID filter elements 0x1b B_0x1c Number of standard message ID filter elements 0x1c LSE List size extended >8: Values greater than 8 are interpreted as 8. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 24 4 read-write B_0x0 No extended message ID filter 0x0 B_0x1 Number of extended message ID filter elements 0x1 B_0x2 Number of extended message ID filter elements 0x2 B_0x3 Number of extended message ID filter elements 0x3 B_0x4 Number of extended message ID filter elements 0x4 B_0x5 Number of extended message ID filter elements 0x5 B_0x6 Number of extended message ID filter elements 0x6 B_0x7 Number of extended message ID filter elements 0x7 B_0x8 Number of extended message ID filter elements 0x8 FDCAN_XIDAM FDCAN_XIDAM FDCAN extended ID and mask register 0x84 0x20 0x1FFFFFFF 0xFFFFFFFF EIDM Extended ID mask For acceptance filtering of extended frames the Extended ID AND Mask is AND-ed with the Message ID of a received frame. Intended for masking of 29-bit IDs in SAE J1939. With the reset value of all bits set to 1 the mask is not active. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 0 29 read-write FDCAN_HPMS FDCAN_HPMS FDCAN high-priority message status register 0x88 0x20 0x00000000 0xFFFFFFFF BIDX Buffer index Index of Rx FIFO element to which the message was stored. Only valid when MSI[1] = 1. 0 3 read-only MSI Message storage indicator 6 2 read-only B_0x0 No FIFO selected 0x0 B_0x1 FIFO overrun 0x1 B_0x2 Message stored in FIFO 0 0x2 B_0x3 Message stored in FIFO 1 0x3 FIDX Filter index Index of matching filter element. Range is 0 to RXGFC[LSS] - 1 or RXGFC[LSE] - 1. 8 5 read-only FLST Filter list Indicates the filter list of the matching filter element. 15 1 read-only B_0x0 Standard filter list 0x0 B_0x1 Extended filter list 0x1 FDCAN_RXF0S FDCAN_RXF0S FDCAN Rx FIFO 0 status register 0x90 0x20 0x00000000 0xFFFFFFFF F0FL Rx FIFO 0 fill level Number of elements stored in Rx FIFO 0, range 0 to 3. 0 4 read-only F0GI Rx FIFO 0 get index Rx FIFO 0 read index pointer, range 0 to 2. 8 2 read-only F0PI Rx FIFO 0 put index Rx FIFO 0 write index pointer, range 0 to 2. 16 2 read-only F0F Rx FIFO 0 full 24 1 read-only B_0x0 Rx FIFO 0 not full 0x0 B_0x1 Rx FIFO 0 full 0x1 RF0L Rx FIFO 0 message lost This bit is a copy of interrupt flag IR[RF0L]. When IR[RF0L] is reset, this bit is also reset. 25 1 read-only B_0x0 No Rx FIFO 0 message lost 0x0 B_0x1 Rx FIFO 0 message lost, also set after write attempt to Rx FIFO 0 of size 0 0x1 FDCAN_RXF0A FDCAN_RXF0A CAN Rx FIFO 0 acknowledge register 0x94 0x20 0x00000000 0xFFFFFFFF F0AI Rx FIFO 0 acknowledge index After the Host has read a message or a sequence of messages from Rx FIFO 0 it has to write the buffer index of the last element read from Rx FIFO 0 to F0AI. This sets the Rx FIFO 0 get index RXF0S[F0GI] to F0AI + 1 and update the FIFO 0 fill level RXF0S[F0FL]. 0 3 read-write FDCAN_RXF1S FDCAN_RXF1S FDCAN Rx FIFO 1 status register 0x98 0x20 0x00000000 0xFFFFFFFF F1FL Rx FIFO 1 fill level Number of elements stored in Rx FIFO 1, range 0 to 3. 0 4 read-only F1GI Rx FIFO 1 get index Rx FIFO 1 read index pointer, range 0 to 2. 8 2 read-only F1PI Rx FIFO 1 put index Rx FIFO 1 write index pointer, range 0 to 2. 16 2 read-only F1F Rx FIFO 1 full 24 1 read-only B_0x0 Rx FIFO 1 not full 0x0 B_0x1 Rx FIFO 1 full 0x1 RF1L Rx FIFO 1 message lost This bit is a copy of interrupt flag IR[RF1L]. When IR[RF1L] is reset, this bit is also reset. 25 1 read-only B_0x0 No Rx FIFO 1 message lost 0x0 B_0x1 Rx FIFO 1 message lost, also set after write attempt to Rx FIFO 1 of size 0 0x1 FDCAN_RXF1A FDCAN_RXF1A FDCAN Rx FIFO 1 acknowledge register 0x9c 0x20 0x00000000 0xFFFFFFFF F1AI Rx FIFO 1 acknowledge index After the Host has read a message or a sequence of messages from Rx FIFO 1 it has to write the buffer index of the last element read from Rx FIFO 1 to F1AI. This sets the Rx FIFO 1 get index RXF1S[F1GI] to F1AI + 1 and update the FIFO 1 Fill Level RXF1S[F1FL]. 0 3 read-write FDCAN_TXBC FDCAN_TXBC FDCAN Tx buffer configuration register 0xc0 0x20 0x00000000 0xFFFFFFFF TFQM Tx FIFO/queue mode This is a protected write (P) bit, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 24 1 read-write B_0x0 Tx FIFO operation 0x0 B_0x1 Tx queue operation. 0x1 FDCAN_TXFQS FDCAN_TXFQS FDCAN Tx FIFO/queue status register 0xc4 0x20 0x00000003 0xFFFFFFFF TFFL Tx FIFO free level Number of consecutive free Tx FIFO elements starting from TFGI, range 0 to 3. Read as 0 when Tx queue operation is configured (TXBC[TFQM] = 1). 0 3 read-only TFGI Tx FIFO get index Tx FIFO read index pointer, range 0 to 3. Read as 0 when Tx queue operation is configured (TXBC.TFQM = 1) 8 2 read-only TFQPI Tx FIFO/queue put index Tx FIFO/queue write index pointer, range 0 to 3 16 2 read-only TFQF Tx FIFO/queue full 21 1 read-only B_0x0 Tx FIFO/queue not full 0x0 B_0x1 Tx FIFO/queue full 0x1 FDCAN_TXBRP FDCAN_TXBRP FDCAN Tx buffer request pending register 0xc8 0x20 0x00000000 0xFFFFFFFF TRP Transmission request pending Each Tx Buffer has its own transmission request pending bit. The bits are set via register TXBAR. The bits are reset after a requested transmission has completed or has been canceled via register TXBCR. After a TXBRP bit has been set, a Tx scan is started to check for the pending Tx request with the highest priority (Tx Buffer with lowest Message ID). A cancellation request resets the corresponding transmission request pending bit of register TXBRP. In case a transmission has already been started when a cancellation is requested, this is done at the end of the transmission, regardless whether the transmission was successful or not. The cancellation request bits are reset directly after the corresponding TXBRP bit has been reset. After a cancellation has been requested, a finished cancellation is signaled via TXBCF after successful transmission together with the corresponding TXBTO bit when the transmission has not yet been started at the point of cancellation when the transmission has been aborted due to lost arbitration when an error occurred during frame transmission In DAR mode all transmissions are automatically canceled if they are not successful. The corresponding TXBCF bit is set for all unsuccessful transmissions. 0 3 read-only B_0x0 No transmission request pending 0x0 B_0x1 Transmission request pending 0x1 FDCAN_TXBAR FDCAN_TXBAR FDCAN Tx buffer add request register 0xcc 0x20 0x00000000 0xFFFFFFFF AR Add request Each Tx buffer has its own add request bit. Writing a 1 sets the corresponding add request bit; writing a 0 has no impact. This enables the Host to set transmission requests for multiple Tx buffers with one write to TXBAR. When no Tx scan is running, the bits are reset immediately, else the bits remain set until the Tx scan process has completed. 0 3 read-write B_0x0 No transmission request added 0x0 B_0x1 Transmission requested added. 0x1 FDCAN_TXBCR FDCAN_TXBCR FDCAN Tx buffer cancellation request register 0xd0 0x20 0x00000000 0xFFFFFFFF CR Cancellation request Each Tx buffer has its own cancellation request bit. Writing a 1 sets the corresponding CR bit; writing a 0 has no impact. This enables the Host to set cancellation requests for multiple Tx buffers with one write to TXBCR. The bits remain set until the corresponding TXBRP bit is reset. 0 3 read-write B_0x0 No cancellation pending 0x0 B_0x1 Cancellation pending 0x1 FDCAN_TXBTO FDCAN_TXBTO FDCAN Tx buffer transmission occurred register 0xd4 0x20 0x00000000 0xFFFFFFFF TO Transmission occurred. Each Tx buffer has its own TO bit. The bits are set when the corresponding TXBRP bit is cleared after a successful transmission. The bits are reset when a new transmission is requested by writing a 1 to the corresponding bit of register TXBAR. 0 3 read-only B_0x0 No transmission occurred 0x0 B_0x1 Transmission occurred 0x1 FDCAN_TXBCF FDCAN_TXBCF FDCAN Tx buffer cancellation finished register 0xd8 0x20 0x00000000 0xFFFFFFFF CF Cancellation finished Each Tx buffer has its own CF bit. The bits are set when the corresponding TXBRP bit is cleared after a cancellation was requested via TXBCR. In case the corresponding TXBRP bit was not set at the point of cancellation, CF is set immediately. The bits are reset when a new transmission is requested by writing a 1 to the corresponding bit of register TXBAR. 0 3 read-only B_0x0 No transmit buffer cancellation 0x0 B_0x1 Transmit buffer cancellation finished 0x1 FDCAN_TXBTIE FDCAN_TXBTIE FDCAN Tx buffer transmission interrupt enable register 0xdc 0x20 0x00000000 0xFFFFFFFF TIE Transmission interrupt enable Each Tx buffer has its own TIE bit. 0 3 read-write B_0x0 Transmission interrupt disabled 0x0 B_0x1 Transmission interrupt enable 0x1 FDCAN_TXBCIE FDCAN_TXBCIE FDCAN Tx buffer cancellation finished interrupt enable register 0xe0 0x20 0x00000000 0xFFFFFFFF CFIE Cancellation finished interrupt enable. Each Tx buffer has its own CFIE bit. 0 3 read-write B_0x0 Cancellation finished interrupt disabled 0x0 B_0x1 Cancellation finished interrupt enabled 0x1 FDCAN_TXEFS FDCAN_TXEFS FDCAN Tx event FIFO status register 0xe4 0x20 0x00000000 0xFFFFFFFF EFFL Event FIFO fill level Number of elements stored in Tx event FIFO, range 0 to 3. 0 3 read-only EFGI Event FIFO get index Tx Event FIFO read index pointer, range 0 to 3. 8 2 read-only EFPI Event FIFO put index Tx Event FIFO write index pointer, range 0 to 3. 16 2 read-only EFF Event FIFO full 24 1 read-only B_0x0 Tx event FIFO not full 0x0 B_0x1 Tx event FIFO full 0x1 TEFL Tx Event FIFO element lost This bit is a copy of interrupt flag IR[TEFL]. When IR[TEFL] is reset, this bit is also reset. 0 No Tx event FIFO element lost 1 Tx event FIFO element lost, also set after write attempt to Tx Event FIFO of size 0. 25 1 read-only FDCAN_TXEFA FDCAN_TXEFA FDCAN Tx event FIFO acknowledge register 0xe8 0x20 0x00000000 0xFFFFFFFF EFAI Event FIFO acknowledge index After the Host has read an element or a sequence of elements from the Tx event FIFO, it has to write the index of the last element read from Tx event FIFO to EFAI. This sets the Tx event FIFO get index TXEFS[EFGI] to EFAI + 1 and updates the FIFO 0 fill level TXEFS[EFFL]. 0 2 read-write FDCAN_CKDIV FDCAN_CKDIV FDCAN CFG clock divider register 0x100 0x20 0x00000000 0xFFFFFFFF PDIV input clock divider The APB clock could be divided prior to be used by the CAN sub system. The rate must be computed using the divider output clock. These are protected write (P) bits, which means that write access by the bits is possible only when the bit 1 [CCE] and bit 0 [INIT] of CCCR register are set to 1. 0 4 read-write B_0x0 Divide by 1 0x0 B_0x1 Divide by 2 0x1 B_0x2 Divide by 4 0x2 B_0x3 Divide by 6 0x3 B_0x4 Divide by 8 0x4 B_0x5 Divide by 10 0x5 B_0x6 Divide by 12 0x6 B_0x7 Divide by 14 0x7 B_0x8 Divide by 16 0x8 B_0x9 Divide by 18 0x9 B_0xA Divide by 20 0xA B_0xB Divide by 22 0xB B_0xC Divide by 24 0xC B_0xD Divide by 26 0xD B_0xE Divide by 28 0xE B_0xF Divide by 30 0xF FDCAN2 0x40006800 FLASH Flash Flash 0x40022000 0x0 0x400 registers FLASH Flash global interrupt 3 ACR ACR Access control register 0x0 0x20 read-write 0x00000600 LATENCY Latency 0 3 PRFTEN Prefetch enable 8 1 ICEN Instruction cache enable 9 1 ICRST Instruction cache reset 11 1 EMPTY Flash User area empty 16 1 DBG_SWEN Debug access software enable 18 1 KEYR KEYR Flash key register 0x8 0x20 write-only 0x00000000 KEYR KEYR 0 32 OPTKEYR OPTKEYR Option byte key register 0xC 0x20 write-only 0x00000000 OPTKEYR Option byte key 0 32 SR SR Status register 0x10 0x20 read-write 0x00000000 EOP End of operation 0 1 OPERR Operation error 1 1 PROGERR Programming error 3 1 WRPERR Write protected error 4 1 PGAERR Programming alignment error 5 1 SIZERR Size error 6 1 PGSERR Programming sequence error 7 1 MISERR Fast programming data miss error 8 1 FASTERR Fast programming error 9 1 RDERR PCROP read error 14 1 OPTVERR Option and Engineering bits loading validity error 15 1 BSY Busy 16 1 CFGBSY Programming or erase configuration busy. 18 1 CR CR Flash control register 0x14 0x20 read-write 0xC0000000 PG Programming 0 1 PER Page erase 1 1 MER Mass erase 2 1 PNB Page number 3 6 STRT Start 16 1 OPTSTRT Options modification start 17 1 FSTPG Fast programming 18 1 EOPIE End of operation interrupt enable 24 1 ERRIE Error interrupt enable 25 1 RDERRIE PCROP read error interrupt enable 26 1 OBL_LAUNCH Force the option byte loading 27 1 SEC_PROT Securable memory area protection enable 28 1 OPTLOCK Options Lock 30 1 LOCK FLASH_CR Lock 31 1 ECCR ECCR Flash ECC register 0x18 0x20 0x00000000 ADDR_ECC ECC fail address 0 14 read-only SYSF_ECC ECC fail for Corrected ECC Error or Double ECC Error in info block 20 1 read-only ECCIE ECC correction interrupt enable 24 1 read-write ECCC ECC correction 30 1 read-write ECCD ECC detection 31 1 read-write OPTR OPTR Flash option register 0x20 0x20 read-write 0xF0000000 RDP Read protection level 0 8 BOREN BOR reset Level 8 1 BORF_LEV These bits contain the VDD supply level threshold that activates the reset 9 2 BORR_LEV These bits contain the VDD supply level threshold that releases the reset. 11 2 nRST_STOP nRST_STOP 13 1 nRST_STDBY nRST_STDBY 14 1 nRSTS_HDW nRSTS_HDW 15 1 IDWG_SW Independent watchdog selection 16 1 IWDG_STOP Independent watchdog counter freeze in Stop mode 17 1 IWDG_STDBY Independent watchdog counter freeze in Standby mode 18 1 WWDG_SW Window watchdog selection 19 1 RAM_PARITY_CHECK SRAM parity check control 22 1 nBOOT_SEL nBOOT_SEL 24 1 nBOOT1 Boot configuration 25 1 nBOOT0 nBOOT0 option bit 26 1 NRST_MODE NRST_MODE 27 2 IRHEN Internal reset holder enable bit 29 1 PCROP1ASR PCROP1ASR Flash PCROP zone A Start address register 0x24 0x20 read-only 0xF0000000 PCROP1A_STRT PCROP1A area start offset 0 8 PCROP1AER PCROP1AER Flash PCROP zone A End address register 0x28 0x20 read-only 0xF0000000 PCROP1A_END PCROP1A area end offset 0 8 PCROP_RDP PCROP area preserved when RDP level decreased 31 1 WRP1AR WRP1AR Flash WRP area A address register 0x2C 0x20 read-only 0xF0000000 WRP1A_STRT WRP area A start offset 0 6 WRP1A_END WRP area A end offset 16 6 WRP1BR WRP1BR Flash WRP area B address register 0x30 0x20 read-only 0xF0000000 WRP1B_STRT WRP area B start offset 0 6 WRP1B_END WRP area B end offset 16 6 PCROP1BSR PCROP1BSR Flash PCROP zone B Start address register 0x34 0x20 read-only 0xF0000000 PCROP1B_STRT PCROP1B area start offset 0 8 PCROP1BER PCROP1BER Flash PCROP area B End address register 0x38 0x20 read-write 0xF0000000 PCROP1B_END PCROP1B area end offset 0 9 PCROP2ASR PCROP2ASR Flash PCROP2 area A start address register 0x44 0x20 read-write 0x00000000 PCROP2A_STRT PCROP2A area start offset, bank2 0 9 PCROP2AER PCROP2AER Flash PCROP2 area A end address register 0x48 0x20 read-write 0x00000000 PCROP2A_END PCROP2A area end offset, bank2 0 9 WRP2AR WRP2AR Flash WRP2 area A address register 0x4C 0x20 read-write 0x00000000 WRP2A_STRT WRP area A start offset, Bank 2 0 7 WRP2A_END WRP area A end offset, Bank 2 16 7 WRP2BR WRP2BR Flash WRP2 area B address register 0x50 0x20 read-write 0x00000000 WRP2B_STRT WRP area B start offset, Bank 2 0 7 WRP2B_END WRP area B end offset, Bank 2 16 7 PCROP2BSR PCROP2BSR FLASH PCROP2 area B start address register 0x54 0x20 read-write 0x00000000 PCROP2B_STRT PCROP2B area start offset, Bank 2 0 9 PCROP2BER PCROP2BER FLASH PCROP2 area B end address register 0x58 0x20 read-write 0x00000000 PCROP2B_END PCROP2B area end offset, Bank 2 0 9 SECR SECR Flash Security register 0x80 0x20 read-write 0xF0000000 SEC_SIZE Securable memory area size 0 8 BOOT_LOCK used to force boot from user area 16 1 SEC_SIZE2 Securable memory area size 20 8 GPIOA General-purpose I/Os GPIO 0x50000000 0x0 0x400 registers MODER MODER GPIO port mode register 0x0 0x20 read-write 0xEBFFFFFF MODER15 Port x configuration bits (y = 0..15) 30 2 MODER14 Port x configuration bits (y = 0..15) 28 2 MODER13 Port x configuration bits (y = 0..15) 26 2 MODER12 Port x configuration bits (y = 0..15) 24 2 MODER11 Port x configuration bits (y = 0..15) 22 2 MODER10 Port x configuration bits (y = 0..15) 20 2 MODER9 Port x configuration bits (y = 0..15) 18 2 MODER8 Port x configuration bits (y = 0..15) 16 2 MODER7 Port x configuration bits (y = 0..15) 14 2 MODER6 Port x configuration bits (y = 0..15) 12 2 MODER5 Port x configuration bits (y = 0..15) 10 2 MODER4 Port x configuration bits (y = 0..15) 8 2 MODER3 Port x configuration bits (y = 0..15) 6 2 MODER2 Port x configuration bits (y = 0..15) 4 2 MODER1 Port x configuration bits (y = 0..15) 2 2 MODER0 Port x configuration bits (y = 0..15) 0 2 OTYPER OTYPER GPIO port output type register 0x4 0x20 read-write 0x00000000 OT15 Port x configuration bits (y = 0..15) 15 1 OT14 Port x configuration bits (y = 0..15) 14 1 OT13 Port x configuration bits (y = 0..15) 13 1 OT12 Port x configuration bits (y = 0..15) 12 1 OT11 Port x configuration bits (y = 0..15) 11 1 OT10 Port x configuration bits (y = 0..15) 10 1 OT9 Port x configuration bits (y = 0..15) 9 1 OT8 Port x configuration bits (y = 0..15) 8 1 OT7 Port x configuration bits (y = 0..15) 7 1 OT6 Port x configuration bits (y = 0..15) 6 1 OT5 Port x configuration bits (y = 0..15) 5 1 OT4 Port x configuration bits (y = 0..15) 4 1 OT3 Port x configuration bits (y = 0..15) 3 1 OT2 Port x configuration bits (y = 0..15) 2 1 OT1 Port x configuration bits (y = 0..15) 1 1 OT0 Port x configuration bits (y = 0..15) 0 1 OSPEEDR OSPEEDR GPIO port output speed register 0x8 0x20 read-write 0x0C000000 OSPEEDR15 Port x configuration bits (y = 0..15) 30 2 OSPEEDR14 Port x configuration bits (y = 0..15) 28 2 OSPEEDR13 Port x configuration bits (y = 0..15) 26 2 OSPEEDR12 Port x configuration bits (y = 0..15) 24 2 OSPEEDR11 Port x configuration bits (y = 0..15) 22 2 OSPEEDR10 Port x configuration bits (y = 0..15) 20 2 OSPEEDR9 Port x configuration bits (y = 0..15) 18 2 OSPEEDR8 Port x configuration bits (y = 0..15) 16 2 OSPEEDR7 Port x configuration bits (y = 0..15) 14 2 OSPEEDR6 Port x configuration bits (y = 0..15) 12 2 OSPEEDR5 Port x configuration bits (y = 0..15) 10 2 OSPEEDR4 Port x configuration bits (y = 0..15) 8 2 OSPEEDR3 Port x configuration bits (y = 0..15) 6 2 OSPEEDR2 Port x configuration bits (y = 0..15) 4 2 OSPEEDR1 Port x configuration bits (y = 0..15) 2 2 OSPEEDR0 Port x configuration bits (y = 0..15) 0 2 PUPDR PUPDR GPIO port pull-up/pull-down register 0xC 0x20 read-write 0x24000000 PUPDR15 Port x configuration bits (y = 0..15) 30 2 PUPDR14 Port x configuration bits (y = 0..15) 28 2 PUPDR13 Port x configuration bits (y = 0..15) 26 2 PUPDR12 Port x configuration bits (y = 0..15) 24 2 PUPDR11 Port x configuration bits (y = 0..15) 22 2 PUPDR10 Port x configuration bits (y = 0..15) 20 2 PUPDR9 Port x configuration bits (y = 0..15) 18 2 PUPDR8 Port x configuration bits (y = 0..15) 16 2 PUPDR7 Port x configuration bits (y = 0..15) 14 2 PUPDR6 Port x configuration bits (y = 0..15) 12 2 PUPDR5 Port x configuration bits (y = 0..15) 10 2 PUPDR4 Port x configuration bits (y = 0..15) 8 2 PUPDR3 Port x configuration bits (y = 0..15) 6 2 PUPDR2 Port x configuration bits (y = 0..15) 4 2 PUPDR1 Port x configuration bits (y = 0..15) 2 2 PUPDR0 Port x configuration bits (y = 0..15) 0 2 IDR IDR GPIO port input data register 0x10 0x20 read-only 0x00000000 IDR15 Port input data (y = 0..15) 15 1 IDR14 Port input data (y = 0..15) 14 1 IDR13 Port input data (y = 0..15) 13 1 IDR12 Port input data (y = 0..15) 12 1 IDR11 Port input data (y = 0..15) 11 1 IDR10 Port input data (y = 0..15) 10 1 IDR9 Port input data (y = 0..15) 9 1 IDR8 Port input data (y = 0..15) 8 1 IDR7 Port input data (y = 0..15) 7 1 IDR6 Port input data (y = 0..15) 6 1 IDR5 Port input data (y = 0..15) 5 1 IDR4 Port input data (y = 0..15) 4 1 IDR3 Port input data (y = 0..15) 3 1 IDR2 Port input data (y = 0..15) 2 1 IDR1 Port input data (y = 0..15) 1 1 IDR0 Port input data (y = 0..15) 0 1 ODR ODR GPIO port output data register 0x14 0x20 read-write 0x00000000 ODR15 Port output data (y = 0..15) 15 1 ODR14 Port output data (y = 0..15) 14 1 ODR13 Port output data (y = 0..15) 13 1 ODR12 Port output data (y = 0..15) 12 1 ODR11 Port output data (y = 0..15) 11 1 ODR10 Port output data (y = 0..15) 10 1 ODR9 Port output data (y = 0..15) 9 1 ODR8 Port output data (y = 0..15) 8 1 ODR7 Port output data (y = 0..15) 7 1 ODR6 Port output data (y = 0..15) 6 1 ODR5 Port output data (y = 0..15) 5 1 ODR4 Port output data (y = 0..15) 4 1 ODR3 Port output data (y = 0..15) 3 1 ODR2 Port output data (y = 0..15) 2 1 ODR1 Port output data (y = 0..15) 1 1 ODR0 Port output data (y = 0..15) 0 1 BSRR BSRR GPIO port bit set/reset register 0x18 0x20 write-only 0x00000000 BR15 Port x reset bit y (y = 0..15) 31 1 BR14 Port x reset bit y (y = 0..15) 30 1 BR13 Port x reset bit y (y = 0..15) 29 1 BR12 Port x reset bit y (y = 0..15) 28 1 BR11 Port x reset bit y (y = 0..15) 27 1 BR10 Port x reset bit y (y = 0..15) 26 1 BR9 Port x reset bit y (y = 0..15) 25 1 BR8 Port x reset bit y (y = 0..15) 24 1 BR7 Port x reset bit y (y = 0..15) 23 1 BR6 Port x reset bit y (y = 0..15) 22 1 BR5 Port x reset bit y (y = 0..15) 21 1 BR4 Port x reset bit y (y = 0..15) 20 1 BR3 Port x reset bit y (y = 0..15) 19 1 BR2 Port x reset bit y (y = 0..15) 18 1 BR1 Port x reset bit y (y = 0..15) 17 1 BR0 Port x set bit y (y= 0..15) 16 1 BS15 Port x set bit y (y= 0..15) 15 1 BS14 Port x set bit y (y= 0..15) 14 1 BS13 Port x set bit y (y= 0..15) 13 1 BS12 Port x set bit y (y= 0..15) 12 1 BS11 Port x set bit y (y= 0..15) 11 1 BS10 Port x set bit y (y= 0..15) 10 1 BS9 Port x set bit y (y= 0..15) 9 1 BS8 Port x set bit y (y= 0..15) 8 1 BS7 Port x set bit y (y= 0..15) 7 1 BS6 Port x set bit y (y= 0..15) 6 1 BS5 Port x set bit y (y= 0..15) 5 1 BS4 Port x set bit y (y= 0..15) 4 1 BS3 Port x set bit y (y= 0..15) 3 1 BS2 Port x set bit y (y= 0..15) 2 1 BS1 Port x set bit y (y= 0..15) 1 1 BS0 Port x set bit y (y= 0..15) 0 1 LCKR LCKR GPIO port configuration lock register 0x1C 0x20 read-write 0x00000000 LCKK Port x lock bit y (y= 0..15) 16 1 LCK15 Port x lock bit y (y= 0..15) 15 1 LCK14 Port x lock bit y (y= 0..15) 14 1 LCK13 Port x lock bit y (y= 0..15) 13 1 LCK12 Port x lock bit y (y= 0..15) 12 1 LCK11 Port x lock bit y (y= 0..15) 11 1 LCK10 Port x lock bit y (y= 0..15) 10 1 LCK9 Port x lock bit y (y= 0..15) 9 1 LCK8 Port x lock bit y (y= 0..15) 8 1 LCK7 Port x lock bit y (y= 0..15) 7 1 LCK6 Port x lock bit y (y= 0..15) 6 1 LCK5 Port x lock bit y (y= 0..15) 5 1 LCK4 Port x lock bit y (y= 0..15) 4 1 LCK3 Port x lock bit y (y= 0..15) 3 1 LCK2 Port x lock bit y (y= 0..15) 2 1 LCK1 Port x lock bit y (y= 0..15) 1 1 LCK0 Port x lock bit y (y= 0..15) 0 1 AFRL AFRL GPIO alternate function low register 0x20 0x20 read-write 0x00000000 AFSEL7 Alternate function selection for port x bit y (y = 0..7) 28 4 AFSEL6 Alternate function selection for port x bit y (y = 0..7) 24 4 AFSEL5 Alternate function selection for port x bit y (y = 0..7) 20 4 AFSEL4 Alternate function selection for port x bit y (y = 0..7) 16 4 AFSEL3 Alternate function selection for port x bit y (y = 0..7) 12 4 AFSEL2 Alternate function selection for port x bit y (y = 0..7) 8 4 AFSEL1 Alternate function selection for port x bit y (y = 0..7) 4 4 AFSEL0 Alternate function selection for port x bit y (y = 0..7) 0 4 AFRH AFRH GPIO alternate function high register 0x24 0x20 read-write 0x00000000 AFSEL15 Alternate function selection for port x bit y (y = 8..15) 28 4 AFSEL14 Alternate function selection for port x bit y (y = 8..15) 24 4 AFSEL13 Alternate function selection for port x bit y (y = 8..15) 20 4 AFSEL12 Alternate function selection for port x bit y (y = 8..15) 16 4 AFSEL11 Alternate function selection for port x bit y (y = 8..15) 12 4 AFSEL10 Alternate function selection for port x bit y (y = 8..15) 8 4 AFSEL9 Alternate function selection for port x bit y (y = 8..15) 4 4 AFSEL8 Alternate function selection for port x bit y (y = 8..15) 0 4 BRR BRR port bit reset register 0x28 0x20 write-only 0x00000000 BR0 Port Reset bit 0 1 BR1 Port Reset bit 1 1 BR2 Port Reset bit 2 1 BR3 Port Reset bit 3 1 BR4 Port Reset bit 4 1 BR5 Port Reset bit 5 1 BR6 Port Reset bit 6 1 BR7 Port Reset bit 7 1 BR8 Port Reset bit 8 1 BR9 Port Reset bit 9 1 BR10 Port Reset bit 10 1 BR11 Port Reset bit 11 1 BR12 Port Reset bit 12 1 BR13 Port Reset bit 13 1 BR14 Port Reset bit 14 1 BR15 Port Reset bit 15 1 GPIOB General-purpose I/Os GPIO 0x50000400 0x0 0x400 registers MODER MODER GPIO port mode register 0x0 0x20 read-write 0xFFFFFFFF MODER15 Port x configuration bits (y = 0..15) 30 2 MODER14 Port x configuration bits (y = 0..15) 28 2 MODER13 Port x configuration bits (y = 0..15) 26 2 MODER12 Port x configuration bits (y = 0..15) 24 2 MODER11 Port x configuration bits (y = 0..15) 22 2 MODER10 Port x configuration bits (y = 0..15) 20 2 MODER9 Port x configuration bits (y = 0..15) 18 2 MODER8 Port x configuration bits (y = 0..15) 16 2 MODER7 Port x configuration bits (y = 0..15) 14 2 MODER6 Port x configuration bits (y = 0..15) 12 2 MODER5 Port x configuration bits (y = 0..15) 10 2 MODER4 Port x configuration bits (y = 0..15) 8 2 MODER3 Port x configuration bits (y = 0..15) 6 2 MODER2 Port x configuration bits (y = 0..15) 4 2 MODER1 Port x configuration bits (y = 0..15) 2 2 MODER0 Port x configuration bits (y = 0..15) 0 2 OTYPER OTYPER GPIO port output type register 0x4 0x20 read-write 0x00000000 OT15 Port x configuration bits (y = 0..15) 15 1 OT14 Port x configuration bits (y = 0..15) 14 1 OT13 Port x configuration bits (y = 0..15) 13 1 OT12 Port x configuration bits (y = 0..15) 12 1 OT11 Port x configuration bits (y = 0..15) 11 1 OT10 Port x configuration bits (y = 0..15) 10 1 OT9 Port x configuration bits (y = 0..15) 9 1 OT8 Port x configuration bits (y = 0..15) 8 1 OT7 Port x configuration bits (y = 0..15) 7 1 OT6 Port x configuration bits (y = 0..15) 6 1 OT5 Port x configuration bits (y = 0..15) 5 1 OT4 Port x configuration bits (y = 0..15) 4 1 OT3 Port x configuration bits (y = 0..15) 3 1 OT2 Port x configuration bits (y = 0..15) 2 1 OT1 Port x configuration bits (y = 0..15) 1 1 OT0 Port x configuration bits (y = 0..15) 0 1 OSPEEDR OSPEEDR GPIO port output speed register 0x8 0x20 read-write 0x00000000 OSPEEDR15 Port x configuration bits (y = 0..15) 30 2 OSPEEDR14 Port x configuration bits (y = 0..15) 28 2 OSPEEDR13 Port x configuration bits (y = 0..15) 26 2 OSPEEDR12 Port x configuration bits (y = 0..15) 24 2 OSPEEDR11 Port x configuration bits (y = 0..15) 22 2 OSPEEDR10 Port x configuration bits (y = 0..15) 20 2 OSPEEDR9 Port x configuration bits (y = 0..15) 18 2 OSPEEDR8 Port x configuration bits (y = 0..15) 16 2 OSPEEDR7 Port x configuration bits (y = 0..15) 14 2 OSPEEDR6 Port x configuration bits (y = 0..15) 12 2 OSPEEDR5 Port x configuration bits (y = 0..15) 10 2 OSPEEDR4 Port x configuration bits (y = 0..15) 8 2 OSPEEDR3 Port x configuration bits (y = 0..15) 6 2 OSPEEDR2 Port x configuration bits (y = 0..15) 4 2 OSPEEDR1 Port x configuration bits (y = 0..15) 2 2 OSPEEDR0 Port x configuration bits (y = 0..15) 0 2 PUPDR PUPDR GPIO port pull-up/pull-down register 0xC 0x20 read-write 0x00000000 PUPDR15 Port x configuration bits (y = 0..15) 30 2 PUPDR14 Port x configuration bits (y = 0..15) 28 2 PUPDR13 Port x configuration bits (y = 0..15) 26 2 PUPDR12 Port x configuration bits (y = 0..15) 24 2 PUPDR11 Port x configuration bits (y = 0..15) 22 2 PUPDR10 Port x configuration bits (y = 0..15) 20 2 PUPDR9 Port x configuration bits (y = 0..15) 18 2 PUPDR8 Port x configuration bits (y = 0..15) 16 2 PUPDR7 Port x configuration bits (y = 0..15) 14 2 PUPDR6 Port x configuration bits (y = 0..15) 12 2 PUPDR5 Port x configuration bits (y = 0..15) 10 2 PUPDR4 Port x configuration bits (y = 0..15) 8 2 PUPDR3 Port x configuration bits (y = 0..15) 6 2 PUPDR2 Port x configuration bits (y = 0..15) 4 2 PUPDR1 Port x configuration bits (y = 0..15) 2 2 PUPDR0 Port x configuration bits (y = 0..15) 0 2 IDR IDR GPIO port input data register 0x10 0x20 read-only 0x00000000 IDR15 Port input data (y = 0..15) 15 1 IDR14 Port input data (y = 0..15) 14 1 IDR13 Port input data (y = 0..15) 13 1 IDR12 Port input data (y = 0..15) 12 1 IDR11 Port input data (y = 0..15) 11 1 IDR10 Port input data (y = 0..15) 10 1 IDR9 Port input data (y = 0..15) 9 1 IDR8 Port input data (y = 0..15) 8 1 IDR7 Port input data (y = 0..15) 7 1 IDR6 Port input data (y = 0..15) 6 1 IDR5 Port input data (y = 0..15) 5 1 IDR4 Port input data (y = 0..15) 4 1 IDR3 Port input data (y = 0..15) 3 1 IDR2 Port input data (y = 0..15) 2 1 IDR1 Port input data (y = 0..15) 1 1 IDR0 Port input data (y = 0..15) 0 1 ODR ODR GPIO port output data register 0x14 0x20 read-write 0x00000000 ODR15 Port output data (y = 0..15) 15 1 ODR14 Port output data (y = 0..15) 14 1 ODR13 Port output data (y = 0..15) 13 1 ODR12 Port output data (y = 0..15) 12 1 ODR11 Port output data (y = 0..15) 11 1 ODR10 Port output data (y = 0..15) 10 1 ODR9 Port output data (y = 0..15) 9 1 ODR8 Port output data (y = 0..15) 8 1 ODR7 Port output data (y = 0..15) 7 1 ODR6 Port output data (y = 0..15) 6 1 ODR5 Port output data (y = 0..15) 5 1 ODR4 Port output data (y = 0..15) 4 1 ODR3 Port output data (y = 0..15) 3 1 ODR2 Port output data (y = 0..15) 2 1 ODR1 Port output data (y = 0..15) 1 1 ODR0 Port output data (y = 0..15) 0 1 BSRR BSRR GPIO port bit set/reset register 0x18 0x20 write-only 0x00000000 BR15 Port x reset bit y (y = 0..15) 31 1 BR14 Port x reset bit y (y = 0..15) 30 1 BR13 Port x reset bit y (y = 0..15) 29 1 BR12 Port x reset bit y (y = 0..15) 28 1 BR11 Port x reset bit y (y = 0..15) 27 1 BR10 Port x reset bit y (y = 0..15) 26 1 BR9 Port x reset bit y (y = 0..15) 25 1 BR8 Port x reset bit y (y = 0..15) 24 1 BR7 Port x reset bit y (y = 0..15) 23 1 BR6 Port x reset bit y (y = 0..15) 22 1 BR5 Port x reset bit y (y = 0..15) 21 1 BR4 Port x reset bit y (y = 0..15) 20 1 BR3 Port x reset bit y (y = 0..15) 19 1 BR2 Port x reset bit y (y = 0..15) 18 1 BR1 Port x reset bit y (y = 0..15) 17 1 BR0 Port x set bit y (y= 0..15) 16 1 BS15 Port x set bit y (y= 0..15) 15 1 BS14 Port x set bit y (y= 0..15) 14 1 BS13 Port x set bit y (y= 0..15) 13 1 BS12 Port x set bit y (y= 0..15) 12 1 BS11 Port x set bit y (y= 0..15) 11 1 BS10 Port x set bit y (y= 0..15) 10 1 BS9 Port x set bit y (y= 0..15) 9 1 BS8 Port x set bit y (y= 0..15) 8 1 BS7 Port x set bit y (y= 0..15) 7 1 BS6 Port x set bit y (y= 0..15) 6 1 BS5 Port x set bit y (y= 0..15) 5 1 BS4 Port x set bit y (y= 0..15) 4 1 BS3 Port x set bit y (y= 0..15) 3 1 BS2 Port x set bit y (y= 0..15) 2 1 BS1 Port x set bit y (y= 0..15) 1 1 BS0 Port x set bit y (y= 0..15) 0 1 LCKR LCKR GPIO port configuration lock register 0x1C 0x20 read-write 0x00000000 LCKK Port x lock bit y (y= 0..15) 16 1 LCK15 Port x lock bit y (y= 0..15) 15 1 LCK14 Port x lock bit y (y= 0..15) 14 1 LCK13 Port x lock bit y (y= 0..15) 13 1 LCK12 Port x lock bit y (y= 0..15) 12 1 LCK11 Port x lock bit y (y= 0..15) 11 1 LCK10 Port x lock bit y (y= 0..15) 10 1 LCK9 Port x lock bit y (y= 0..15) 9 1 LCK8 Port x lock bit y (y= 0..15) 8 1 LCK7 Port x lock bit y (y= 0..15) 7 1 LCK6 Port x lock bit y (y= 0..15) 6 1 LCK5 Port x lock bit y (y= 0..15) 5 1 LCK4 Port x lock bit y (y= 0..15) 4 1 LCK3 Port x lock bit y (y= 0..15) 3 1 LCK2 Port x lock bit y (y= 0..15) 2 1 LCK1 Port x lock bit y (y= 0..15) 1 1 LCK0 Port x lock bit y (y= 0..15) 0 1 AFRL AFRL GPIO alternate function low register 0x20 0x20 read-write 0x00000000 AFSEL7 Alternate function selection for port x bit y (y = 0..7) 28 4 AFSEL6 Alternate function selection for port x bit y (y = 0..7) 24 4 AFSEL5 Alternate function selection for port x bit y (y = 0..7) 20 4 AFSEL4 Alternate function selection for port x bit y (y = 0..7) 16 4 AFSEL3 Alternate function selection for port x bit y (y = 0..7) 12 4 AFSEL2 Alternate function selection for port x bit y (y = 0..7) 8 4 AFSEL1 Alternate function selection for port x bit y (y = 0..7) 4 4 AFSEL0 Alternate function selection for port x bit y (y = 0..7) 0 4 AFRH AFRH GPIO alternate function high register 0x24 0x20 read-write 0x00000000 AFSEL15 Alternate function selection for port x bit y (y = 8..15) 28 4 AFSEL14 Alternate function selection for port x bit y (y = 8..15) 24 4 AFSEL13 Alternate function selection for port x bit y (y = 8..15) 20 4 AFSEL12 Alternate function selection for port x bit y (y = 8..15) 16 4 AFSEL11 Alternate function selection for port x bit y (y = 8..15) 12 4 AFSEL10 Alternate function selection for port x bit y (y = 8..15) 8 4 AFSEL9 Alternate function selection for port x bit y (y = 8..15) 4 4 AFSEL8 Alternate function selection for port x bit y (y = 8..15) 0 4 BRR BRR port bit reset register 0x28 0x20 write-only 0x00000000 BR0 Port Reset bit 0 1 BR1 Port Reset bit 1 1 BR2 Port Reset bit 2 1 BR3 Port Reset bit 3 1 BR4 Port Reset bit 4 1 BR5 Port Reset bit 5 1 BR6 Port Reset bit 6 1 BR7 Port Reset bit 7 1 BR8 Port Reset bit 8 1 BR9 Port Reset bit 9 1 BR10 Port Reset bit 10 1 BR11 Port Reset bit 11 1 BR12 Port Reset bit 12 1 BR13 Port Reset bit 13 1 BR14 Port Reset bit 14 1 BR15 Port Reset bit 15 1 GPIOC 0x50000800 GPIOD 0x50000C00 GPIOE 0x50001000 GPIOF 0x50001400 HDMI_CEC HDMI-CEC CEC 0x40007800 0x0 0x400 registers CEC CEC global interrupt 30 CEC_CR CEC_CR CEC control register 0x0 0x20 read-write 0x00000000 CECEN CEC enable The CECEN bit is set and cleared by software. CECEN = 1 starts message reception and enables the TXSOM control. CECEN = 0 disables the CEC peripheral, clears all bits of CEC_CR register and aborts any on-going reception or transmission. 0 1 read-write B_0x0 CEC peripheral is off. 0x0 B_0x1 CEC peripheral is on. 0x1 TXSOM Tx start of message TXSOM is set by software to command transmission of the first byte of a CEC message. If the CEC message consists of only one byte, TXEOM must be set before of TXSOM. Start-bit is effectively started on the CEC line after SFT is counted. If TXSOM is set while a message reception is ongoing, transmission starts after the end of reception. TXSOM is cleared by hardware after the last byte of the message is sent with a positive acknowledge (TXEND = 1), in case of transmission underrun (TXUDR = 1), negative acknowledge (TXACKE = 1), and transmission error (TXERR = 1). It is also cleared by CECEN = 0. It is not cleared and transmission is automatically retried in case of arbitration lost (ARBLST = 1). TXSOM can be also used as a status bit informing application whether any transmission request is pending or under execution. The application can abort a transmission request at any time by clearing the CECEN bit. Note: TXSOM must be set when CECEN = 1. TXSOM must be set when transmission data is available into TXDR. HEADER first four bits containing own peripheral address are taken from TXDR[7:4], not from CEC_CFGR.OAR that is used only for reception. 1 1 read-write B_0x0 No CEC transmission is on-going 0x0 B_0x1 CEC transmission command 0x1 TXEOM Tx end of message The TXEOM bit is set by software to command transmission of the last byte of a CEC message. TXEOM is cleared by hardware at the same time and under the same conditions as for TXSOM. Note: TXEOM must be set when CECEN = 1. TXEOM must be set before writing transmission data to TXDR. If TXEOM is set when TXSOM = 0, transmitted message consists of 1 byte (HEADER) only (PING message). 2 1 read-write B_0x0 TXDR data byte is transmitted with EOM = 0 0x0 B_0x1 TXDR data byte is transmitted with EOM = 1 0x1 CEC_CFGR CEC_CFGR This register is used to configure the HDMI-CEC controller. It is mandatory to write CEC_CFGR only when CECEN=0. 0x4 0x20 read-write 0x00000000 SFT Signal free time SFT bits are set by software. In the SFT = 0x0 configuration, the number of nominal data bit periods waited before transmission is ruled by hardware according to the transmission history. In all the other configurations the SFT number is determined by software. 0x0 2.5 data-bit periods if CEC is the last bus initiator with unsuccessful transmission (ARBLST = 1, TXERR = 1, TXUDR = 1 or TXACKE = 1) 4 data-bit periods if CEC is the new bus initiator 6 data-bit periods if CEC is the last bus initiator with successful transmission (TXEOM = 1) 0 3 read-write B_0x1 0.5 nominal data bit periods 0x1 B_0x2 1.5 nominal data bit periods 0x2 B_0x3 2.5 nominal data bit periods 0x3 B_0x4 3.5 nominal data bit periods 0x4 B_0x5 4.5 nominal data bit periods 0x5 B_0x6 5.5 nominal data bit periods 0x6 B_0x7 6.5 nominal data bit periods 0x7 RXTOL Rx-tolerance The RXTOL bit is set and cleared by software. Start-bit, +/- 200 µs rise, +/- 200 µs fall Data-bit: +/- 200 µs rise. +/- 350 µs fall Start-bit: +/- 400 µs rise, +/- 400 µs fall Data-bit: +/-300 µs rise, +/- 500 µs fall 3 1 read-write B_0x0 Standard tolerance margin: 0x0 B_0x1 Extended tolerance 0x1 BRESTP Rx-stop on bit rising error The BRESTP bit is set and cleared by software. 4 1 read-write B_0x0 BRE detection does not stop reception of the CEC message. Data bit is sampled at 1.05 ms. 0x0 B_0x1 BRE detection stops message reception. 0x1 BREGEN Generate error-bit on bit rising error The BREGEN bit is set and cleared by software. Note: If BRDNOGEN = 0, an error-bit is generated upon BRE detection with BRESTP = 1 in broadcast even if BREGEN = 0. 5 1 read-write B_0x0 BRE detection does not generate an error-bit on the CEC line. 0x0 B_0x1 BRE detection generates an error-bit on the CEC line (if BRESTP is set). 0x1 LBPEGEN Generate error-bit on long bit period error The LBPEGEN bit is set and cleared by software. Note: If BRDNOGEN = 0, an error-bit is generated upon LBPE detection in broadcast even if LBPEGEN = 0. 6 1 read-write B_0x0 LBPE detection does not generate an error-bit on the CEC line. 0x0 B_0x1 LBPE detection generates an error-bit on the CEC line. 0x1 BRDNOGEN Avoid error-bit generation in broadcast The BRDNOGEN bit is set and cleared by software. error-bit on the CEC line. LBPE detection with LBPEGEN = 0 on a broadcast message generates an error-bit on the CEC line. 7 1 read-write B_0x0 BRE detection with BRESTP = 1 and BREGEN = 0 on a broadcast message generates an 0x0 B_0x1 Error-bit is not generated in the same condition as above. An error-bit is not generated even in case of an SBPE detection in a broadcast message if listen mode is set. 0x1 SFTOP SFT option bit The SFTOPT bit is set and cleared by software. 8 1 read-write B_0x0 SFT timer starts when TXSOM is set by software. 0x0 B_0x1 SFT timer starts automatically at the end of message transmission/reception. 0x1 OAR Own addresses configuration The OAR bits are set by software to select which destination logical addresses has to be considered in receive mode. Each bit, when set, enables the CEC logical address identified by the given bit position. At the end of HEADER reception, the received destination address is compared with the enabled addresses. In case of matching address, the incoming message is acknowledged and received. In case of non-matching address, the incoming message is received only in listen mode (LSTN = 1), but without acknowledge sent. Broadcast messages are always received. Example: OAR = 0b000 0000 0010 0001 means that CEC acknowledges addresses 0x0 and 0x5. Consequently, each message directed to one of these addresses is received. 16 15 read-write LSTN Listen mode LSTN bit is set and cleared by software. 31 1 read-write B_0x0 CEC peripheral receives only message addressed to its own address (OAR). Messages addressed to different destination are ignored. Broadcast messages are always received. 0x0 B_0x1 CEC peripheral receives messages addressed to its own address (OAR) with positive acknowledge. Messages addressed to different destination are received, but without interfering with the CEC bus: no acknowledge sent. 0x1 CEC_TXDR CEC_TXDR CEC Tx data register 0x8 0x20 write-only 0x00000000 TXD Tx Data register. TXD is a write-only register containing the data byte to be transmitted. Note: TXD must be written when TXSTART=1 0 8 CEC_RXDR CEC_RXDR CEC Rx Data Register 0xC 0x20 read-only 0x00000000 RXD Rx Data register. RXD is read-only and contains the last data byte which has been received from the CEC line. 0 8 CEC_ISR CEC_ISR CEC Interrupt and Status Register 0x10 0x20 read-write 0x00000000 RXBR Rx-Byte Received The RXBR bit is set by hardware to inform application that a new byte has been received from the CEC line and stored into the RXD buffer. RXBR is cleared by software write at 1. 0 1 RXEND End Of Reception RXEND is set by hardware to inform application that the last byte of a CEC message is received from the CEC line and stored into the RXD buffer. RXEND is set at the same time of RXBR. RXEND is cleared by software write at 1. 1 1 RXOVR Rx-Overrun RXOVR is set by hardware if RXBR is not yet cleared at the time a new byte is received on the CEC line and stored into RXD. RXOVR assertion stops message reception so that no acknowledge is sent. In case of broadcast, a negative acknowledge is sent. RXOVR is cleared by software write at 1. 2 1 BRE Rx-Bit Rising Error BRE is set by hardware in case a Data-Bit waveform is detected with Bit Rising Error. BRE is set either at the time the misplaced rising edge occurs, or at the end of the maximum BRE tolerance allowed by RXTOL, in case rising edge is still longing. BRE stops message reception if BRESTP=1. BRE generates an Error-Bit on the CEC line if BREGEN=1. BRE is cleared by software write at 1. 3 1 SBPE Rx-Short Bit Period Error SBPE is set by hardware in case a Data-Bit waveform is detected with Short Bit Period Error. SBPE is set at the time the anticipated falling edge occurs. SBPE generates an Error-Bit on the CEC line. SBPE is cleared by software write at 1. 4 1 LBPE Rx-Long Bit Period Error LBPE is set by hardware in case a Data-Bit waveform is detected with Long Bit Period Error. LBPE is set at the end of the maximum bit-extension tolerance allowed by RXTOL, in case falling edge is still longing. LBPE always stops reception of the CEC message. LBPE generates an Error-Bit on the CEC line if LBPEGEN=1. In case of broadcast, Error-Bit is generated even in case of LBPEGEN=0. LBPE is cleared by software write at 1. 5 1 RXACKE Rx-Missing Acknowledge In receive mode, RXACKE is set by hardware to inform application that no acknowledge was seen on the CEC line. RXACKE applies only for broadcast messages and in listen mode also for not directly addressed messages (destination address not enabled in OAR). RXACKE aborts message reception. RXACKE is cleared by software write at 1. 6 1 ARBLST Arbitration Lost ARBLST is set by hardware to inform application that CEC device is switching to reception due to arbitration lost event following the TXSOM command. ARBLST can be due either to a contending CEC device starting earlier or starting at the same time but with higher HEADER priority. After ARBLST assertion TXSOM bit keeps pending for next transmission attempt. ARBLST is cleared by software write at 1. 7 1 TXBR Tx-Byte Request TXBR is set by hardware to inform application that the next transmission data has to be written to TXDR. TXBR is set when the 4th bit of currently transmitted byte is sent. Application must write the next byte to TXDR within 6 nominal data-bit periods before transmission underrun error occurs (TXUDR). TXBR is cleared by software write at 1. 8 1 TXEND End of Transmission TXEND is set by hardware to inform application that the last byte of the CEC message has been successfully transmitted. TXEND clears the TXSOM and TXEOM control bits. TXEND is cleared by software write at 1. 9 1 TXUDR Tx-Buffer Underrun In transmission mode, TXUDR is set by hardware if application was not in time to load TXDR before of next byte transmission. TXUDR aborts message transmission and clears TXSOM and TXEOM control bits. TXUDR is cleared by software write at 1 10 1 TXERR Tx-Error In transmission mode, TXERR is set by hardware if the CEC initiator detects low impedance on the CEC line while it is released. TXERR aborts message transmission and clears TXSOM and TXEOM controls. TXERR is cleared by software write at 1. 11 1 TXACKE Tx-Missing Acknowledge Error In transmission mode, TXACKE is set by hardware to inform application that no acknowledge was received. In case of broadcast transmission, TXACKE informs application that a negative acknowledge was received. TXACKE aborts message transmission and clears TXSOM and TXEOM controls. TXACKE is cleared by software write at 1. 12 1 CEC_IER CEC_IER CEC interrupt enable register 0x14 0x20 read-write 0x00000000 RXBRIE Rx-byte received interrupt enable The RXBRIE bit is set and cleared by software. 0 1 read-write B_0x0 RXBR interrupt disabled 0x0 B_0x1 RXBR interrupt enabled 0x1 RXENDIE End of reception interrupt enable The RXENDIE bit is set and cleared by software. 1 1 read-write B_0x0 RXEND interrupt disabled 0x0 B_0x1 RXEND interrupt enabled 0x1 RXOVRIE Rx-buffer overrun interrupt enable The RXOVRIE bit is set and cleared by software. 2 1 read-write B_0x0 RXOVR interrupt disabled 0x0 B_0x1 RXOVR interrupt enabled 0x1 BREIE Bit rising error interrupt enable The BREIE bit is set and cleared by software. 3 1 read-write B_0x0 BRE interrupt disabled 0x0 B_0x1 BRE interrupt enabled 0x1 SBPEIE Short bit period error interrupt enable The SBPEIE bit is set and cleared by software. 4 1 read-write B_0x0 SBPE interrupt disabled 0x0 B_0x1 SBPE interrupt enabled 0x1 LBPEIE Long bit period error interrupt enable The LBPEIE bit is set and cleared by software. 5 1 read-write B_0x0 LBPE interrupt disabled 0x0 B_0x1 LBPE interrupt enabled 0x1 RXACKIE Rx-missing acknowledge error interrupt enable The RXACKIE bit is set and cleared by software. 6 1 read-write B_0x0 RXACKE interrupt disabled 0x0 B_0x1 RXACKE interrupt enabled 0x1 ARBLSTIE Arbitration lost interrupt enable The ARBLSTIE bit is set and cleared by software. 7 1 read-write B_0x0 ARBLST interrupt disabled 0x0 B_0x1 ARBLST interrupt enabled 0x1 TXBRIE Tx-byte request interrupt enable The TXBRIE bit is set and cleared by software. 8 1 read-write B_0x0 TXBR interrupt disabled 0x0 B_0x1 TXBR interrupt enabled 0x1 TXENDIE Tx-end of message interrupt enable The TXENDIE bit is set and cleared by software. 9 1 read-write B_0x0 TXEND interrupt disabled 0x0 B_0x1 TXEND interrupt enabled 0x1 TXUDRIE Tx-underrun interrupt enable The TXUDRIE bit is set and cleared by software. 10 1 read-write B_0x0 TXUDR interrupt disabled 0x0 B_0x1 TXUDR interrupt enabled 0x1 TXERRIE Tx-error interrupt enable The TXERRIE bit is set and cleared by software. 11 1 read-write B_0x0 TXERR interrupt disabled 0x0 B_0x1 TXERR interrupt enabled 0x1 TXACKIE Tx-missing acknowledge error interrupt enable The TXACKEIE bit is set and cleared by software. 12 1 read-write B_0x0 TXACKE interrupt disabled 0x0 B_0x1 TXACKE interrupt enabled 0x1 I2C1 Inter-integrated circuit I2C 0x40005400 0x0 0x400 registers I2C1 I2C1 global interrupt 23 I2C_CR1 I2C_CR1 Control register 1 0x0 0x20 read-write 0x00000000 PE Peripheral enable Note: When PE=0, the I2C SCL and SDA lines are released. Internal state machines and status bits are put back to their reset value. When cleared, PE must be kept low for at least 3 APB clock cycles. 0 1 read-write B_0x0 Peripheral disable 0x0 B_0x1 Peripheral enable 0x1 TXIE TX Interrupt enable 1 1 read-write B_0x0 Transmit (TXIS) interrupt disabled 0x0 B_0x1 Transmit (TXIS) interrupt enabled 0x1 RXIE RX Interrupt enable 2 1 read-write B_0x0 Receive (RXNE) interrupt disabled 0x0 B_0x1 Receive (RXNE) interrupt enabled 0x1 ADDRIE Address match Interrupt enable (slave only) 3 1 read-write B_0x0 Address match (ADDR) interrupts disabled 0x0 B_0x1 Address match (ADDR) interrupts enabled 0x1 NACKIE Not acknowledge received Interrupt enable 4 1 read-write B_0x0 Not acknowledge (NACKF) received interrupts disabled 0x0 B_0x1 Not acknowledge (NACKF) received interrupts enabled 0x1 STOPIE Stop detection Interrupt enable 5 1 read-write B_0x0 Stop detection (STOPF) interrupt disabled 0x0 B_0x1 Stop detection (STOPF) interrupt enabled 0x1 TCIE Transfer Complete interrupt enable Note: Any of these events generate an interrupt: Transfer Complete (TC) Transfer Complete Reload (TCR) 6 1 read-write B_0x0 Transfer Complete interrupt disabled 0x0 B_0x1 Transfer Complete interrupt enabled 0x1 ERRIE Error interrupts enable Note: Any of these errors generate an interrupt: Arbitration Loss (ARLO) Bus Error detection (BERR) Overrun/Underrun (OVR) Timeout detection (TIMEOUT) PEC error detection (PECERR) Alert pin event detection (ALERT) 7 1 read-write B_0x0 Error detection interrupts disabled 0x0 B_0x1 Error detection interrupts enabled 0x1 DNF Digital noise filter These bits are used to configure the digital noise filter on SDA and SCL input. The digital filter, filters spikes with a length of up to DNF[3:0] * tI2CCLK ... Note: If the analog filter is also enabled, the digital filter is added to the analog filter. This filter can only be programmed when the I2C is disabled (PE = 0). 8 4 read-write B_0x0 Digital filter disabled 0x0 B_0x1 Digital filter enabled and filtering capability up to 1 tI2CCLK 0x1 B_0xF digital filter enabled and filtering capability up to15 tI2CCLK 0xF ANFOFF Analog noise filter OFF Note: This bit can only be programmed when the I2C is disabled (PE = 0). 12 1 read-write B_0x0 Analog noise filter enabled 0x0 B_0x1 Analog noise filter disabled 0x1 TXDMAEN DMA transmission requests enable 14 1 read-write B_0x0 DMA mode disabled for transmission 0x0 B_0x1 DMA mode enabled for transmission 0x1 RXDMAEN DMA reception requests enable 15 1 read-write B_0x0 DMA mode disabled for reception 0x0 B_0x1 DMA mode enabled for reception 0x1 SBC Slave byte control This bit is used to enable hardware byte control in slave mode. 16 1 read-write B_0x0 Slave byte control disabled 0x0 B_0x1 Slave byte control enabled 0x1 NOSTRETCH Clock stretching disable This bit is used to disable clock stretching in slave mode. It must be kept cleared in master mode. Note: This bit can only be programmed when the I2C is disabled (PE = 0). 17 1 read-write B_0x0 Clock stretching enabled 0x0 B_0x1 Clock stretching disabled 0x1 WUPEN Wakeup from Stop mode enable Note: If the Wakeup from Stop mode feature is not supported, this bit is reserved and forced by hardware to '0’. Refer to . Note: WUPEN can be set only when DNF = '0000’ 18 1 read-write B_0x0 Wakeup from Stop mode disable. 0x0 B_0x1 Wakeup from Stop mode enable. 0x1 GCEN General call enable 19 1 read-write B_0x0 General call disabled. Address 0b00000000 is NACKed. 0x0 B_0x1 General call enabled. Address 0b00000000 is ACKed. 0x1 SMBHEN SMBus Host Address enable Note: If the SMBus feature is not supported, this bit is reserved and forced by hardware to '0’. Refer to . 20 1 read-write B_0x0 Host Address disabled. Address 0b0001000x is NACKed. 0x0 B_0x1 Host Address enabled. Address 0b0001000x is ACKed. 0x1 SMBDEN SMBus Device Default Address enable Note: If the SMBus feature is not supported, this bit is reserved and forced by hardware to '0’. Refer to . 21 1 read-write B_0x0 Device Default Address disabled. Address 0b1100001x is NACKed. 0x0 B_0x1 Device Default Address enabled. Address 0b1100001x is ACKed. 0x1 ALERTEN SMBus alert enable Note: When ALERTEN=0, the SMBA pin can be used as a standard GPIO. If the SMBus feature is not supported, this bit is reserved and forced by hardware to '0’. Refer to . 22 1 read-write B_0x0 The SMBus alert pin (SMBA) is not supported in host mode (SMBHEN=1). In device mode (SMBHEN=0), the SMBA pin is released and the Alert Response Address header is disabled (0001100x followed by NACK). 0x0 B_0x1 The SMBus alert pin is supported in host mode (SMBHEN=1). In device mode (SMBHEN=0), the SMBA pin is driven low and the Alert Response Address header is enabled (0001100x followed by ACK). 0x1 PECEN PEC enable Note: If the SMBus feature is not supported, this bit is reserved and forced by hardware to '0’. Refer to . 23 1 read-write B_0x0 PEC calculation disabled 0x0 B_0x1 PEC calculation enabled 0x1 I2C_CR2 I2C_CR2 Control register 2 0x4 0x20 read-write 0x00000000 SADD Slave address (master mode) In 7-bit addressing mode (ADD10 = 0): SADD[7:1] should be written with the 7-bit slave address to be sent. The bits SADD[9], SADD[8] and SADD[0] are don't care. In 10-bit addressing mode (ADD10 = 1): SADD[9:0] should be written with the 10-bit slave address to be sent. Note: Changing these bits when the START bit is set is not allowed. 0 10 read-write RD_WRN Transfer direction (master mode) Note: Changing this bit when the START bit is set is not allowed. 10 1 read-write B_0x0 Master requests a write transfer. 0x0 B_0x1 Master requests a read transfer. 0x1 ADD10 10-bit addressing mode (master mode) Note: Changing this bit when the START bit is set is not allowed. 11 1 read-write B_0x0 The master operates in 7-bit addressing mode, 0x0 B_0x1 The master operates in 10-bit addressing mode 0x1 HEAD10R 10-bit address header only read direction (master receiver mode) Note: Changing this bit when the START bit is set is not allowed. 12 1 read-write B_0x0 The master sends the complete 10 bit slave address read sequence: Start + 2 bytes 10bit address in write direction + Restart + 1st 7 bits of the 10 bit address in read direction. 0x0 B_0x1 The master only sends the 1st 7 bits of the 10 bit address, followed by Read direction. 0x1 START Start generation This bit is set by software, and cleared by hardware after the Start followed by the address sequence is sent, by an arbitration loss, by a timeout error detection, or when PE = 0. It can also be cleared by software by writing '1’ to the ADDRCF bit in the I2C_ICR register. If the I2C is already in master mode with AUTOEND = 0, setting this bit generates a Repeated Start condition when RELOAD=0, after the end of the NBYTES transfer. Otherwise setting this bit generates a START condition once the bus is free. Note: Writing '0’ to this bit has no effect. The START bit can be set even if the bus is BUSY or I2C is in slave mode. This bit has no effect when RELOAD is set. 13 1 read-write B_0x0 No Start generation. 0x0 B_0x1 Restart/Start generation: 0x1 STOP Stop generation (master mode) The bit is set by software, cleared by hardware when a STOP condition is detected, or when PE = 0. In Master Mode: Note: Writing '0’ to this bit has no effect. 14 1 read-write B_0x0 No Stop generation. 0x0 B_0x1 Stop generation after current byte transfer. 0x1 NACK NACK generation (slave mode) The bit is set by software, cleared by hardware when the NACK is sent, or when a STOP condition or an Address matched is received, or when PE=0. Note: Writing '0’ to this bit has no effect. This bit is used in slave mode only: in master receiver mode, NACK is automatically generated after last byte preceding STOP or RESTART condition, whatever the NACK bit value. When an overrun occurs in slave receiver NOSTRETCH mode, a NACK is automatically generated whatever the NACK bit value. When hardware PEC checking is enabled (PECBYTE=1), the PEC acknowledge value does not depend on the NACK value. 15 1 read-write B_0x0 an ACK is sent after current received byte. 0x0 B_0x1 a NACK is sent after current received byte. 0x1 NBYTES Number of bytes The number of bytes to be transmitted/received is programmed there. This field is don’t care in slave mode with SBC=0. Note: Changing these bits when the START bit is set is not allowed. 16 8 read-write RELOAD NBYTES reload mode This bit is set and cleared by software. 24 1 read-write B_0x0 The transfer is completed after the NBYTES data transfer (STOP or RESTART follows). 0x0 B_0x1 The transfer is not completed after the NBYTES data transfer (NBYTES is reloaded). TCR flag is set when NBYTES data are transferred, stretching SCL low. 0x1 AUTOEND Automatic end mode (master mode) This bit is set and cleared by software. Note: This bit has no effect in slave mode or when the RELOAD bit is set. 25 1 read-write B_0x0 software end mode: TC flag is set when NBYTES data are transferred, stretching SCL low. 0x0 B_0x1 Automatic end mode: a STOP condition is automatically sent when NBYTES data are transferred. 0x1 PECBYTE Packet error checking byte This bit is set by software, and cleared by hardware when the PEC is transferred, or when a STOP condition or an Address matched is received, also when PE=0. Note: Writing '0’ to this bit has no effect. This bit has no effect when RELOAD is set. This bit has no effect is slave mode when SBC=0. If the SMBus feature is not supported, this bit is reserved and forced by hardware to '0’. Refer to . 26 1 read-write B_0x0 No PEC transfer. 0x0 B_0x1 PEC transmission/reception is requested 0x1 I2C_OAR1 I2C_OAR1 Own address register 1 0x8 0x20 read-write 0x00000000 OA1 Interface own slave address 7-bit addressing mode: OA1[7:1] contains the 7-bit own slave address. The bits OA1[9], OA1[8] and OA1[0] are don't care. 10-bit addressing mode: OA1[9:0] contains the 10-bit own slave address. Note: These bits can be written only when OA1EN=0. 0 10 read-write OA1MODE Own Address 1 10-bit mode Note: This bit can be written only when OA1EN=0. 10 1 read-write B_0x0 Own address 1 is a 7-bit address. 0x0 B_0x1 Own address 1 is a 10-bit address. 0x1 OA1EN Own Address 1 enable 15 1 read-write B_0x0 Own address 1 disabled. The received slave address OA1 is NACKed. 0x0 B_0x1 Own address 1 enabled. The received slave address OA1 is ACKed. 0x1 I2C_OAR2 I2C_OAR2 Own address register 2 0xC 0x20 read-write 0x00000000 OA2 Interface address 7-bit addressing mode: 7-bit address Note: These bits can be written only when OA2EN=0. 1 7 read-write OA2MSK Own Address 2 masks Note: These bits can be written only when OA2EN=0. As soon as OA2MSK is not equal to 0, the reserved I2C addresses (0b0000xxx and 0b1111xxx) are not acknowledged even if the comparison matches. 8 3 read-write B_0x0 No mask 0x0 B_0x1 OA2[1] is masked and don’t care. Only OA2[7:2] are compared. 0x1 B_0x2 OA2[2:1] are masked and don’t care. Only OA2[7:3] are compared. 0x2 B_0x3 OA2[3:1] are masked and don’t care. Only OA2[7:4] are compared. 0x3 B_0x4 OA2[4:1] are masked and don’t care. Only OA2[7:5] are compared. 0x4 B_0x5 OA2[5:1] are masked and don’t care. Only OA2[7:6] are compared. 0x5 B_0x6 OA2[6:1] are masked and don’t care. Only OA2[7] is compared. 0x6 B_0x7 OA2[7:1] are masked and don’t care. No comparison is done, and all (except reserved) 7-bit received addresses are acknowledged. 0x7 OA2EN Own Address 2 enable 15 1 read-write B_0x0 Own address 2 disabled. The received slave address OA2 is NACKed. 0x0 B_0x1 Own address 2 enabled. The received slave address OA2 is ACKed. 0x1 I2C_TIMINGR I2C_TIMINGR Timing register 0x10 0x20 read-write 0x00000000 SCLL SCL low period (master mode) 0 8 SCLH SCL high period (master mode) 8 8 SDADEL Data hold time 16 4 SCLDEL Data setup time 20 4 PRESC Timing prescaler 28 4 I2C_TIMEOUTR I2C_TIMEOUTR Status register 1 0x14 0x20 read-write 0x00000000 TIMEOUTA Bus Timeout A This field is used to configure: The SCL low timeout condition tTIMEOUT when TIDLE=0 tTIMEOUT= (TIMEOUTA+1) x 2048 x tI2CCLK The bus idle condition (both SCL and SDA high) when TIDLE=1 tIDLE= (TIMEOUTA+1) x 4 x tI2CCLK Note: These bits can be written only when TIMOUTEN=0. 0 12 read-write TIDLE Idle clock timeout detection Note: This bit can be written only when TIMOUTEN=0. 12 1 read-write B_0x0 TIMEOUTA is used to detect SCL low timeout 0x0 B_0x1 TIMEOUTA is used to detect both SCL and SDA high timeout (bus idle condition) 0x1 TIMOUTEN Clock timeout enable 15 1 read-write B_0x0 SCL timeout detection is disabled 0x0 B_0x1 SCL timeout detection is enabled: when SCL is low for more than tTIMEOUT (TIDLE=0) or high for more than tIDLE (TIDLE=1), a timeout error is detected (TIMEOUT=1). 0x1 TIMEOUTB Bus timeout B This field is used to configure the cumulative clock extension timeout: In master mode, the master cumulative clock low extend time (tLOW:MEXT) is detected In slave mode, the slave cumulative clock low extend time (tLOW:SEXT) is detected tLOW:EXT= (TIMEOUTB+1) x 2048 x tI2CCLK Note: These bits can be written only when TEXTEN=0. 16 12 read-write TEXTEN Extended clock timeout enable 31 1 read-write B_0x0 Extended clock timeout detection is disabled 0x0 B_0x1 Extended clock timeout detection is enabled. When a cumulative SCL stretch for more than tLOW:EXT is done by the I2C interface, a timeout error is detected (TIMEOUT=1). 0x1 I2C_ISR I2C_ISR Interrupt and Status register 0x18 0x20 0x00000001 ADDCODE Address match code (Slave mode) 17 7 read-only DIR Transfer direction (Slave mode) This flag is updated when an address match event occurs (ADDR=1). 16 1 read-only B_0x0 Write transfer, slave enters receiver mode. 0x0 B_0x1 Read transfer, slave enters transmitter mode. 0x1 BUSY Bus busy 15 1 read-only ALERT SMBus alert 13 1 read-only TIMEOUT Timeout or t_low detection flag 12 1 read-only PECERR PEC Error in reception 11 1 read-only OVR Overrun/Underrun (slave mode) 10 1 read-only ARLO Arbitration lost 9 1 read-only BERR Bus error 8 1 read-only TCR Transfer Complete Reload 7 1 read-only TC Transfer Complete (master mode) 6 1 read-only STOPF Stop detection flag 5 1 read-only NACKF Not acknowledge received flag 4 1 read-only ADDR Address matched (slave mode) 3 1 read-only RXNE Receive data register not empty (receivers) 2 1 read-only TXIS Transmit interrupt status (transmitters) 1 1 read-write TXE Transmit data register empty (transmitters) 0 1 read-write I2C_ICR I2C_ICR Interrupt clear register 0x1C 0x20 write-only 0x00000000 ALERTCF Alert flag clear 13 1 TIMOUTCF Timeout detection flag clear 12 1 PECCF PEC Error flag clear 11 1 OVRCF Overrun/Underrun flag clear 10 1 ARLOCF Arbitration lost flag clear 9 1 BERRCF Bus error flag clear 8 1 STOPCF Stop detection flag clear 5 1 NACKCF Not Acknowledge flag clear 4 1 ADDRCF Address Matched flag clear 3 1 I2C_PECR I2C_PECR PEC register 0x20 0x20 read-only 0x00000000 PEC Packet error checking register 0 8 I2C_RXDR I2C_RXDR Receive data register 0x24 0x20 read-only 0x00000000 RXDATA 8-bit receive data 0 8 I2C_TXDR I2C_TXDR Transmit data register 0x28 0x20 read-write 0x00000000 TXDATA 8-bit transmit data 0 8 I2C2 0x40005800 I2C2_I2C3 I2C2 and I2C3 global interrupt 24 I2C3 0x40008800 IWDG Independent watchdog IWDG 0x40003000 0x0 0x400 registers IWDG_KR IWDG_KR Key register 0x0 0x20 write-only 0x00000000 KEY Key value (write only, read 0x0000) 0 16 IWDG_PR IWDG_PR Prescaler register 0x4 0x20 read-write 0x00000000 PR Prescaler divider These bits are write access protected see . They are written by software to select the prescaler divider feeding the counter clock. PVU bit of the must be reset in order to be able to change the prescaler divider. Note: Reading this register returns the prescaler value from the VDD voltage domain. This value may not be up to date/valid if a write operation to this register is ongoing. For this reason the value read from this register is valid only when the PVU bit in the status register (IWDG_SR) is reset. 0 3 read-write B_0x0 divider /4 0x0 B_0x1 divider /8 0x1 B_0x2 divider /16 0x2 B_0x3 divider /32 0x3 B_0x4 divider /64 0x4 B_0x5 divider /128 0x5 B_0x6 divider /256 0x6 B_0x7 divider /256 0x7 IWDG_RLR IWDG_RLR Reload register 0x8 0x20 read-write 0x00000FFF RL Watchdog counter reload value 0 12 IWDG_SR IWDG_SR Status register 0xC 0x20 read-only 0x00000000 PVU Watchdog prescaler value update This bit is set by hardware to indicate that an update of the prescaler value is ongoing. It is reset by hardware when the prescaler update operation is completed in the VDD voltage domain (takes up to five LSI cycles). Prescaler value can be updated only when PVU bit is reset. 0 1 read-only RVU Watchdog counter reload value update This bit is set by hardware to indicate that an update of the reload value is ongoing. It is reset by hardware when the reload value update operation is completed in the VDD voltage domain (takes up to five LSI cycles). Reload value can be updated only when RVU bit is reset. 1 1 read-only WVU Watchdog counter window value update This bit is set by hardware to indicate that an update of the window value is ongoing. It is reset by hardware when the reload value update operation is completed in the VDD voltage domain (takes up to five LSI cycles). Window value can be updated only when WVU bit is reset. 2 1 read-only IWDG_WINR IWDG_WINR Window register 0x10 0x20 read-write 0x00000FFF WIN Watchdog counter window value 0 12 LPTIM1 Low power timer LPTIM 0x40007C00 0x0 0x400 registers LPTIM_ISR LPTIM_ISR Interrupt and Status Register 0x0 0x20 read-only 0x00000000 CMPM Compare match The CMPM bit is set by hardware to inform application that LPTIM_CNT register value reached the LPTIM_CMP register’s value. 0 1 read-only ARRM Autoreload match ARRM is set by hardware to inform application that LPTIM_CNT register’s value reached the LPTIM_ARR register’s value. ARRM flag can be cleared by writing 1 to the ARRMCF bit in the LPTIM_ICR register. 1 1 read-only EXTTRIG External trigger edge event EXTTRIG is set by hardware to inform application that a valid edge on the selected external trigger input has occurred. If the trigger is ignored because the timer has already started, then this flag is not set. EXTTRIG flag can be cleared by writing 1 to the EXTTRIGCF bit in the LPTIM_ICR register. 2 1 read-only CMPOK Compare register update OK CMPOK is set by hardware to inform application that the APB bus write operation to the LPTIM_CMP register has been successfully completed. 3 1 read-only ARROK Autoreload register update OK ARROK is set by hardware to inform application that the APB bus write operation to the LPTIM_ARR register has been successfully completed. ARROK flag can be cleared by writing 1 to the ARROKCF bit in the LPTIM_ICR register. 4 1 read-only UP Counter direction change down to up In Encoder mode, UP bit is set by hardware to inform application that the counter direction has changed from down to up. UP flag can be cleared by writing 1 to the UPCF bit in the LPTIM_ICR register. Note: If the LPTIM does not support encoder mode feature, this bit is reserved. Please refer to . 5 1 read-only DOWN Counter direction change up to down In Encoder mode, DOWN bit is set by hardware to inform application that the counter direction has changed from up to down. DOWN flag can be cleared by writing 1 to the DOWNCF bit in the LPTIM_ICR register. Note: If the LPTIM does not support encoder mode feature, this bit is reserved. Please refer to . 6 1 read-only LPTIM_ICR LPTIM_ICR Interrupt Clear Register 0x4 0x20 write-only 0x00000000 CMPMCF Compare match clear flag Writing 1 to this bit clears the CMP flag in the LPTIM_ISR register 0 1 write-only ARRMCF Autoreload match clear flag Writing 1 to this bit clears the ARRM flag in the LPTIM_ISR register 1 1 write-only EXTTRIGCF External trigger valid edge clear flag Writing 1 to this bit clears the EXTTRIG flag in the LPTIM_ISR register 2 1 write-only CMPOKCF Compare register update OK clear flag Writing 1 to this bit clears the CMPOK flag in the LPTIM_ISR register 3 1 write-only ARROKCF Autoreload register update OK clear flag Writing 1 to this bit clears the ARROK flag in the LPTIM_ISR register 4 1 write-only UPCF Direction change to UP clear flag Writing 1 to this bit clear the UP flag in the LPTIM_ISR register. Note: If the LPTIM does not support encoder mode feature, this bit is reserved. Please refer to . 5 1 write-only DOWNCF Direction change to down clear flag Writing 1 to this bit clear the DOWN flag in the LPTIM_ISR register. Note: If the LPTIM does not support encoder mode feature, this bit is reserved. Please refer to . 6 1 write-only LPTIM_IER LPTIM_IER Interrupt Enable Register 0x8 0x20 read-write 0x00000000 CMPMIE Compare match Interrupt Enable 0 1 read-write B_0x0 CMPM interrupt disabled 0x0 B_0x1 CMPM interrupt enabled 0x1 ARRMIE Autoreload match Interrupt Enable 1 1 read-write B_0x0 ARRM interrupt disabled 0x0 B_0x1 ARRM interrupt enabled 0x1 EXTTRIGIE External trigger valid edge Interrupt Enable 2 1 read-write B_0x0 EXTTRIG interrupt disabled 0x0 B_0x1 EXTTRIG interrupt enabled 0x1 CMPOKIE Compare register update OK Interrupt Enable 3 1 read-write B_0x0 CMPOK interrupt disabled 0x0 B_0x1 CMPOK interrupt enabled 0x1 ARROKIE Autoreload register update OK Interrupt Enable 4 1 read-write B_0x0 ARROK interrupt disabled 0x0 B_0x1 ARROK interrupt enabled 0x1 UPIE Direction change to UP Interrupt Enable Note: If the LPTIM does not support encoder mode feature, this bit is reserved. Please refer to . 5 1 read-write B_0x0 UP interrupt disabled 0x0 B_0x1 UP interrupt enabled 0x1 DOWNIE Direction change to down Interrupt Enable Note: If the LPTIM does not support encoder mode feature, this bit is reserved. Please refer to . 6 1 read-write B_0x0 DOWN interrupt disabled 0x0 B_0x1 DOWN interrupt enabled 0x1 LPTIM_CFGR LPTIM_CFGR Configuration Register 0xC 0x20 read-write 0x00000000 CKSEL Clock selector The CKSEL bit selects which clock source the LPTIM will use: 0 1 read-write B_0x0 LPTIM is clocked by internal clock source (APB clock or any of the embedded oscillators) 0x0 B_0x1 LPTIM is clocked by an external clock source through the LPTIM external Input1 0x1 CKPOL Clock Polarity If LPTIM is clocked by an external clock source: When the LPTIM is clocked by an external clock source, CKPOL bits is used to configure the active edge or edges used by the counter: If the LPTIM is configured in Encoder mode (ENC bit is set), the encoder sub-mode 1 is active. If the LPTIM is configured in Encoder mode (ENC bit is set), the encoder sub-mode 2 is active. Refer to for more details about Encoder mode sub-modes. 1 2 read-write B_0x0 the rising edge is the active edge used for counting. 0x0 B_0x1 the falling edge is the active edge used for counting 0x1 B_0x2 both edges are active edges. When both external clock signal edges are considered active ones, the LPTIM must also be clocked by an internal clock source with a frequency equal to at least four times the external clock frequency.If the LPTIM is configured in Encoder mode (ENC bit is set), the encoder sub-mode 3 is active. 0x2 B_0x3 not allowed 0x3 CKFLT Configurable digital filter for external clock The CKFLT value sets the number of consecutive equal samples that should be detected when a level change occurs on an external clock signal before it is considered as a valid level transition. An internal clock source must be present to use this feature 3 2 read-write B_0x0 any external clock signal level change is considered as a valid transition 0x0 B_0x1 external clock signal level change must be stable for at least 2 clock periods before it is considered as valid transition. 0x1 B_0x2 external clock signal level change must be stable for at least 4 clock periods before it is considered as valid transition. 0x2 B_0x3 external clock signal level change must be stable for at least 8 clock periods before it is considered as valid transition. 0x3 TRGFLT Configurable digital filter for trigger The TRGFLT value sets the number of consecutive equal samples that should be detected when a level change occurs on an internal trigger before it is considered as a valid level transition. An internal clock source must be present to use this feature 6 2 read-write B_0x0 any trigger active level change is considered as a valid trigger 0x0 B_0x1 trigger active level change must be stable for at least 2 clock periods before it is considered as valid trigger. 0x1 B_0x2 trigger active level change must be stable for at least 4 clock periods before it is considered as valid trigger. 0x2 B_0x3 trigger active level change must be stable for at least 8 clock periods before it is considered as valid trigger. 0x3 PRESC Clock prescaler The PRESC bits configure the prescaler division factor. It can be one among the following division factors: 9 3 read-write B_0x0 /1 0x0 B_0x1 /2 0x1 B_0x2 /4 0x2 B_0x3 /8 0x3 B_0x4 /16 0x4 B_0x5 /32 0x5 B_0x6 /64 0x6 B_0x7 /128 0x7 TRIGSEL Trigger selector The TRIGSEL bits select the trigger source that will serve as a trigger event for the LPTIM among the below 8 available sources: See for details. 13 3 read-write B_0x0 lptim_ext_trig0 0x0 B_0x1 lptim_ext_trig1 0x1 B_0x2 lptim_ext_trig2 0x2 B_0x3 lptim_ext_trig3 0x3 B_0x4 lptim_ext_trig4 0x4 B_0x5 lptim_ext_trig5 0x5 B_0x6 lptim_ext_trig6 0x6 B_0x7 lptim_ext_trig7 0x7 TRIGEN Trigger enable and polarity The TRIGEN bits controls whether the LPTIM counter is started by an external trigger or not. If the external trigger option is selected, three configurations are possible for the trigger active edge: 17 2 read-write B_0x0 software trigger (counting start is initiated by software) 0x0 B_0x1 rising edge is the active edge 0x1 B_0x2 falling edge is the active edge 0x2 B_0x3 both edges are active edges 0x3 TIMOUT Timeout enable The TIMOUT bit controls the Timeout feature 19 1 read-write B_0x0 A trigger event arriving when the timer is already started will be ignored 0x0 B_0x1 A trigger event arriving when the timer is already started will reset and restart the counter 0x1 WAVE Waveform shape The WAVE bit controls the output shape 20 1 read-write B_0x0 Deactivate Set-once mode, PWM or One Pulse waveform depending on how the timer was started, CNTSTRT for PWM or SNGSTRT for One Pulse waveform. 0x0 B_0x1 Activate the Set-once mode 0x1 WAVPOL Waveform shape polarity The WAVEPOL bit controls the output polarity 21 1 read-write B_0x0 The LPTIM output reflects the compare results between LPTIM_CNT and LPTIM_CMP registers 0x0 B_0x1 The LPTIM output reflects the inverse of the compare results between LPTIM_CNT and LPTIM_CMP registers 0x1 PRELOAD Registers update mode The PRELOAD bit controls the LPTIM_ARR and the LPTIM_CMP registers update modality 22 1 read-write B_0x0 Registers are updated after each APB bus write access 0x0 B_0x1 Registers are updated at the end of the current LPTIM period 0x1 COUNTMODE counter mode enabled The COUNTMODE bit selects which clock source is used by the LPTIM to clock the counter: 23 1 read-write B_0x0 the counter is incremented following each internal clock pulse 0x0 B_0x1 the counter is incremented following each valid clock pulse on the LPTIM external Input1 0x1 ENC Encoder mode enable The ENC bit controls the Encoder mode Note: If the LPTIM does not support encoder mode feature, this bit is reserved. Please refer to . 24 1 read-write B_0x0 Encoder mode disabled 0x0 B_0x1 Encoder mode enabled 0x1 LPTIM_CR LPTIM_CR Control Register 0x10 0x20 read-write 0x00000000 ENABLE LPTIM enable The ENABLE bit is set and cleared by software. 0 1 read-write B_0x0 LPTIM is disabled 0x0 B_0x1 LPTIM is enabled 0x1 SNGSTRT LPTIM start in Single mode This bit is set by software and cleared by hardware. In case of software start (TRIGEN[1:0] = '00’), setting this bit starts the LPTIM in single pulse mode. If the software start is disabled (TRIGEN[1:0] different than '00’), setting this bit starts the LPTIM in single pulse mode as soon as an external trigger is detected. If this bit is set when the LPTIM is in continuous counting mode, then the LPTIM will stop at the following match between LPTIM_ARR and LPTIM_CNT registers. This bit can only be set when the LPTIM is enabled. It will be automatically reset by hardware. 1 1 read-write CNTSTRT Timer start in Continuous mode This bit is set by software and cleared by hardware. In case of software start (TRIGEN[1:0] = '00’), setting this bit starts the LPTIM in Continuous mode. If the software start is disabled (TRIGEN[1:0] different than '00’), setting this bit starts the timer in Continuous mode as soon as an external trigger is detected. If this bit is set when a single pulse mode counting is ongoing, then the timer will not stop at the next match between the LPTIM_ARR and LPTIM_CNT registers and the LPTIM counter keeps counting in Continuous mode. This bit can be set only when the LPTIM is enabled. It will be automatically reset by hardware. 2 1 read-write COUNTRST Counter reset This bit is set by software and cleared by hardware. When set to '1' this bit will trigger a synchronous reset of the LPTIM_CNT counter register. Due to the synchronous nature of this reset, it only takes place after a synchronization delay of 3 LPTimer core clock cycles (LPTimer core clock may be different from APB clock). COUNTRST must never be set to '1' by software before it is already cleared to '0' by hardware. Software should consequently check that COUNTRST bit is already cleared to '0' before attempting to set it to '1'. 3 1 read-write RSTARE Reset after read enable This bit is set and cleared by software. When RSTARE is set to '1', any read access to LPTIM_CNT register will asynchronously reset LPTIM_CNT register content. 4 1 read-write LPTIM_CMP LPTIM_CMP Compare Register 0x14 0x20 read-write 0x00000000 CMP Compare value 0 16 LPTIM_ARR LPTIM_ARR Autoreload Register 0x18 0x20 read-write 0x00000001 ARR Auto reload value 0 16 LPTIM_CNT LPTIM_CNT Counter Register 0x1C 0x20 read-only 0x00000000 CNT Counter value 0 16 LPTIM_CFGR2 LPTIM_CFGR2 LPTIM configuration register 2 0x24 0x20 read-write 0x00000000 IN1SEL LPTIM input 1 selection The IN1SEL bits control the LPTIM Input 1 multiplexer, which connects LPTIM Input 1 to one of the available inputs. For connection details refer to . 0 2 read-write B_0x0 lptim_in1_mux0 0x0 B_0x1 lptim_in1_mux1 0x1 B_0x2 lptim_in1_mux2 0x2 B_0x3 lptim_in1_mux3 0x3 IN2SEL LPTIM input 2 selection The IN2SEL bits control the LPTIM Input 2 multiplexer, which connect LPTIM Input 2 to one of the available inputs. For connection details refer to . Note: If the LPTIM does not support encoder mode feature, these bits are reserved. Please refer to . 4 2 read-write B_0x0 lptim_in2_mux0 0x0 B_0x1 lptim_in2_mux1 0x1 B_0x2 lptim_in2_mux2 0x2 B_0x3 lptim_in2_mux3 0x3 LPTIM2 0x40009400 LPUART1 Low-power universal asynchronous receiver transmitter LPUART 0x40008000 0x0 0x400 registers LPUART_CR1_enabled LPUART_CR1_enabled LPUART control register 1 [alternate] 0x0 0x20 0x00000000 0xFFFFFFFF UE LPUART enable When this bit is cleared, the LPUART prescalers and outputs are stopped immediately, and current operations are discarded. The configuration of the LPUART is kept, but all the status flags, in the LPUART_ISR are reset. This bit is set and cleared by software. Note: To enter low-power mode without generating errors on the line, the TE bit must be reset before and the software must wait for the TC bit in the LPUART_ISR to be set before resetting the UE bit. The DMA requests are also reset when UE = 0 so the DMA channel must be disabled before resetting the UE bit. 0 1 read-write B_0x0 LPUART prescaler and outputs disabled, low-power mode 0x0 B_0x1 LPUART enabled 0x1 UESM LPUART enable in Stop mode When this bit is cleared, the LPUART is not able to wake up the MCU from low-power mode. When this bit is set, the LPUART is able to wake up the MCU from low-power mode, provided that the LPUART clock selection is HSI or LSE in the RCC. This bit is set and cleared by software. Note: It is recommended to set the UESM bit just before entering low-power mode and clear it on exit from low-power mode. 1 1 read-write B_0x0 LPUART not able to wake up the MCU from low-power mode. 0x0 B_0x1 LPUART able to wake up the MCU from low-power mode. When this function is active, the clock source for the LPUART must be HSI or LSE (see RCC chapter) 0x1 RE Receiver enable This bit enables the receiver. It is set and cleared by software. 2 1 read-write B_0x0 Receiver is disabled 0x0 B_0x1 Receiver is enabled and begins searching for a start bit 0x1 TE Transmitter enable This bit enables the transmitter. It is set and cleared by software. Note: During transmission, a low pulse on the TE bit (“0” followed by “1”) sends a preamble (idle line) after the current word. In order to generate an idle character, the TE must not be immediately written to 1. In order to ensure the required duration, the software can poll the TEACK bit in the LPUART_ISR register. When TE is set there is a 1 bit-time delay before the transmission starts. 3 1 read-write B_0x0 Transmitter is disabled 0x0 B_0x1 Transmitter is enabled 0x1 IDLEIE IDLE interrupt enable This bit is set and cleared by software. 4 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated whenever IDLE = 1 in the LPUART_ISR register 0x1 RXFNEIE RXFIFO not empty interrupt enable This bit is set and cleared by software. 5 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 A LPUART interrupt is generated whenever ORE = 1 or RXNE/RXFNE = 1 in the LPUART_ISR register 0x1 TCIE Transmission complete interrupt enable This bit is set and cleared by software. 6 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated whenever TC = 1 in the LPUART_ISR register 0x1 TXFNFIE TXFIFO not full interrupt enable This bit is set and cleared by software. 7 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 A LPUART interrupt is generated whenever TXE/TXFNF =1 in the LPUART_ISR register 0x1 PEIE PE interrupt enable This bit is set and cleared by software. 8 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated whenever PE = 1 in the LPUART_ISR register 0x1 PS Parity selection This bit selects the odd or even parity when the parity generation/detection is enabled (PCE bit set). It is set and cleared by software. The parity is selected after the current byte. This bitfield can only be written when the LPUART is disabled (UE = 0). 9 1 read-write B_0x0 Even parity 0x0 B_0x1 Odd parity 0x1 PCE Parity control enable This bit selects the hardware parity control (generation and detection). When the parity control is enabled, the computed parity is inserted at the MSB position (9th bit if M = 1; 8th bit if M = 0) and parity is checked on the received data. This bit is set and cleared by software. Once it is set, PCE is active after the current byte (in reception and in transmission). This bitfield can only be written when the LPUART is disabled (UE = 0). 10 1 read-write B_0x0 Parity control disabled 0x0 B_0x1 Parity control enabled 0x1 WAKE Receiver wakeup method This bit determines the LPUART wakeup method from Mute mode. It is set or cleared by software. This bitfield can only be written when the LPUART is disabled (UE = 0). 11 1 read-write B_0x0 Idle line 0x0 B_0x1 Address mark 0x1 M0 Word length This bit is used in conjunction with bit 28 (M1) to determine the word length. It is set or cleared by software (refer to bit 28 (M1) description). This bit can only be written when the LPUART is disabled (UE = 0). 12 1 read-write MME Mute mode enable This bit activates the Mute mode function of the LPUART. When set, the LPUART can switch between the active and Mute modes, as defined by the WAKE bit. It is set and cleared by software. 13 1 read-write B_0x0 Receiver in active mode permanently 0x0 B_0x1 Receiver can switch between Mute mode and active mode. 0x1 CMIE Character match interrupt enable This bit is set and cleared by software. 14 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 A LPUART interrupt is generated when the CMF bit is set in the LPUART_ISR register. 0x1 DEDT Driver Enable deassertion time This 5-bit value defines the time between the end of the last stop bit, in a transmitted message, and the de-activation of the DE (Driver Enable) signal.It is expressed in lpuart_ker_ck clock cycles. For more details, refer control and RS485 Driver Enable. If the LPUART_TDR register is written during the DEDT time, the new data is transmitted only when the DEDT and DEAT times have both elapsed. This bitfield can only be written when the LPUART is disabled (UE = 0). 16 5 read-write DEAT Driver Enable assertion time This 5-bit value defines the time between the activation of the DE (Driver Enable) signal and the beginning of the start bit. It is expressed in lpuart_ker_ck clock cycles. For more details, refer . This bitfield can only be written when the LPUART is disabled (UE = 0). 21 5 read-write M1 Word length This bit must be used in conjunction with bit 12 (M0) to determine the word length. It is set or cleared by software. M[1:0] = '00’: 1 Start bit, 8 Data bits, n Stop bit M[1:0] = '01’: 1 Start bit, 9 Data bits, n Stop bit M[1:0] = '10’: 1 Start bit, 7 Data bits, n Stop bit This bit can only be written when the LPUART is disabled (UE = 0). Note: In 7-bit data length mode, the Smartcard mode, LIN master mode and Auto baud rate (0x7F and 0x55 frames detection) are not supported. 28 1 read-write FIFOEN FIFO mode enable This bit is set and cleared by software. 29 1 read-write B_0x0 FIFO mode is disabled. 0x0 B_0x1 FIFO mode is enabled. 0x1 TXFEIE TXFIFO empty interrupt enable This bit is set and cleared by software. 30 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated when TXFE = 1 in the LPUART_ISR register 0x1 RXFFIE RXFIFO Full interrupt enable This bit is set and cleared by software. 31 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated when RXFF = 1 in the LPUART_ISR register 0x1 LPUART_CR1_disabled LPUART_CR1_disabled LPUART control register 1 [alternate] LPUART_CR1_enabled 0x0 0x20 0x00000000 0xFFFFFFFF UE LPUART enable When this bit is cleared, the LPUART prescalers and outputs are stopped immediately, and current operations are discarded. The configuration of the LPUART is kept, but all the status flags, in the LPUART_ISR are reset. This bit is set and cleared by software. Note: To enter low-power mode without generating errors on the line, the TE bit must be reset before and the software must wait for the TC bit in the LPUART_ISR to be set before resetting the UE bit. The DMA requests are also reset when UE = 0 so the DMA channel must be disabled before resetting the UE bit. 0 1 read-write B_0x0 LPUART prescaler and outputs disabled, low-power mode 0x0 B_0x1 LPUART enabled 0x1 UESM LPUART enable in Stop mode When this bit is cleared, the LPUART is not able to wake up the MCU from low-power mode. When this bit is set, the LPUART is able to wake up the MCU from low-power mode, provided that the LPUART clock selection is HSI or LSE in the RCC. This bit is set and cleared by software. Note: It is recommended to set the UESM bit just before entering low-power mode and clear it on exit from low-power mode. 1 1 read-write B_0x0 LPUART not able to wake up the MCU from low-power mode. 0x0 B_0x1 LPUART able to wake up the MCU from low-power mode. When this function is active, the clock source for the LPUART must be HSI or LSE (see RCC chapter) 0x1 RE Receiver enable This bit enables the receiver. It is set and cleared by software. 2 1 read-write B_0x0 Receiver is disabled 0x0 B_0x1 Receiver is enabled and begins searching for a start bit 0x1 TE Transmitter enable This bit enables the transmitter. It is set and cleared by software. Note: During transmission, a low pulse on the TE bit (“0” followed by “1”) sends a preamble (idle line) after the current word. In order to generate an idle character, the TE must not be immediately written to 1. In order to ensure the required duration, the software can poll the TEACK bit in the LPUART_ISR register. When TE is set there is a 1 bit-time delay before the transmission starts. 3 1 read-write B_0x0 Transmitter is disabled 0x0 B_0x1 Transmitter is enabled 0x1 IDLEIE IDLE interrupt enable This bit is set and cleared by software. 4 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated whenever IDLE = 1 in the LPUART_ISR register 0x1 RXFNEIE RXFIFO not empty interrupt enable This bit is set and cleared by software. 5 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 A LPUART interrupt is generated whenever ORE = 1 or RXNE/RXFNE = 1 in the LPUART_ISR register 0x1 TCIE Transmission complete interrupt enable This bit is set and cleared by software. 6 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated whenever TC = 1 in the LPUART_ISR register 0x1 TXFNFIE TXFIFO not full interrupt enable This bit is set and cleared by software. 7 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 A LPUART interrupt is generated whenever TXE/TXFNF =1 in the LPUART_ISR register 0x1 PEIE PE interrupt enable This bit is set and cleared by software. 8 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated whenever PE = 1 in the LPUART_ISR register 0x1 PS Parity selection This bit selects the odd or even parity when the parity generation/detection is enabled (PCE bit set). It is set and cleared by software. The parity is selected after the current byte. This bitfield can only be written when the LPUART is disabled (UE = 0). 9 1 read-write B_0x0 Even parity 0x0 B_0x1 Odd parity 0x1 PCE Parity control enable This bit selects the hardware parity control (generation and detection). When the parity control is enabled, the computed parity is inserted at the MSB position (9th bit if M = 1; 8th bit if M = 0) and parity is checked on the received data. This bit is set and cleared by software. Once it is set, PCE is active after the current byte (in reception and in transmission). This bitfield can only be written when the LPUART is disabled (UE = 0). 10 1 read-write B_0x0 Parity control disabled 0x0 B_0x1 Parity control enabled 0x1 WAKE Receiver wakeup method This bit determines the LPUART wakeup method from Mute mode. It is set or cleared by software. This bitfield can only be written when the LPUART is disabled (UE = 0). 11 1 read-write B_0x0 Idle line 0x0 B_0x1 Address mark 0x1 M0 Word length This bit is used in conjunction with bit 28 (M1) to determine the word length. It is set or cleared by software (refer to bit 28 (M1) description). This bit can only be written when the LPUART is disabled (UE = 0). 12 1 read-write MME Mute mode enable This bit activates the Mute mode function of the LPUART. When set, the LPUART can switch between the active and Mute modes, as defined by the WAKE bit. It is set and cleared by software. 13 1 read-write B_0x0 Receiver in active mode permanently 0x0 B_0x1 Receiver can switch between Mute mode and active mode. 0x1 CMIE Character match interrupt enable This bit is set and cleared by software. 14 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 A LPUART interrupt is generated when the CMF bit is set in the LPUART_ISR register. 0x1 DEDT Driver Enable deassertion time This 5-bit value defines the time between the end of the last stop bit, in a transmitted message, and the de-activation of the DE (Driver Enable) signal.It is expressed in lpuart_ker_ck clock cycles. For more details, refer control and RS485 Driver Enable. If the LPUART_TDR register is written during the DEDT time, the new data is transmitted only when the DEDT and DEAT times have both elapsed. This bitfield can only be written when the LPUART is disabled (UE = 0). 16 5 read-write DEAT Driver Enable assertion time This 5-bit value defines the time between the activation of the DE (Driver Enable) signal and the beginning of the start bit. It is expressed in lpuart_ker_ck clock cycles. For more details, refer . This bitfield can only be written when the LPUART is disabled (UE = 0). 21 5 read-write M1 Word length This bit must be used in conjunction with bit 12 (M0) to determine the word length. It is set or cleared by software. M[1:0] = '00’: 1 Start bit, 8 Data bits, n Stop bit M[1:0] = '01’: 1 Start bit, 9 Data bits, n Stop bit M[1:0] = '10’: 1 Start bit, 7 Data bits, n Stop bit This bit can only be written when the LPUART is disabled (UE = 0). Note: In 7-bit data length mode, the Smartcard mode, LIN master mode and Auto baud rate (0x7F and 0x55 frames detection) are not supported. 28 1 read-write FIFOEN FIFO mode enable This bit is set and cleared by software. 29 1 read-write B_0x0 FIFO mode is disabled. 0x0 B_0x1 FIFO mode is enabled. 0x1 LPUART_CR2 LPUART_CR2 LPUART control register 2 0x4 0x20 0x00000000 0xFFFFFFFF ADDM7 7-bit Address Detection/4-bit Address Detection This bit is for selection between 4-bit address detection or 7-bit address detection. This bit can only be written when the LPUART is disabled (UE = 0) Note: In 7-bit and 9-bit data modes, the address detection is done on 6-bit and 8-bit address (ADD[5:0] and ADD[7:0]) respectively. 4 1 read-write B_0x0 4-bit address detection 0x0 B_0x1 7-bit address detection (in 8-bit data mode) 0x1 STOP STOP bits These bits are used for programming the stop bits. This bitfield can only be written when the LPUART is disabled (UE = 0). 12 2 read-write B_0x0 1 stop bit 0x0 B_0x2 2 stop bits 0x2 SWAP Swap TX/RX pins This bit is set and cleared by software. This bitfield can only be written when the LPUART is disabled (UE = 0). 15 1 read-write B_0x0 TX/RX pins are used as defined in standard pinout 0x0 B_0x1 The TX and RX pins functions are swapped. This enables to work in the case of a cross-wired connection to another UART. 0x1 RXINV RX pin active level inversion This bit is set and cleared by software. This enables the use of an external inverter on the RX line. This bitfield can only be written when the LPUART is disabled (UE = 0). 16 1 read-write B_0x0 RX pin signal works using the standard logic levels (VDD = 1/idle, Gnd = 0/mark) 0x0 B_0x1 RX pin signal values are inverted (VDD = 0/mark, Gnd = 1/idle). 0x1 TXINV TX pin active level inversion This bit is set and cleared by software. This enables the use of an external inverter on the TX line. This bitfield can only be written when the LPUART is disabled (UE = 0). 17 1 read-write B_0x0 TX pin signal works using the standard logic levels (VDD = 1/idle, Gnd = 0/mark) 0x0 B_0x1 TX pin signal values are inverted (VDD = 0/mark, Gnd = 1/idle). 0x1 DATAINV Binary data inversion This bit is set and cleared by software. This bitfield can only be written when the LPUART is disabled (UE = 0). 18 1 read-write B_0x0 Logical data from the data register are send/received in positive/direct logic. (1 = H, 0 = L) 0x0 B_0x1 Logical data from the data register are send/received in negative/inverse logic. (1 = L, 0 = H). The parity bit is also inverted. 0x1 MSBFIRST Most significant bit first This bit is set and cleared by software. This bitfield can only be written when the LPUART is disabled (UE = 0). 19 1 read-write B_0x0 data is transmitted/received with data bit 0 first, following the start bit. 0x0 B_0x1 data is transmitted/received with the MSB (bit 7/8) first, following the start bit. 0x1 ADD Address of the LPUART node ADD[7:4]: These bits give the address of the LPUART node or a character code to be recognized. They are used to wake up the MCU with 7-bit address mark detection in multiprocessor communication during Mute mode or Stop mode. The MSB of the character sent by the transmitter should be equal to 1. They can also be used for character detection during normal reception, Mute mode inactive (for example, end of block detection in ModBus protocol). In this case, the whole received character (8-bit) is compared to the ADD[7:0] value and CMF flag is set on match. These bits can only be written when reception is disabled (RE = 0) or the LPUART is disabled (UE = 0) ADD[3:0]: These bits give the address of the LPUART node or a character code to be recognized. They are used for wakeup with address mark detection in multiprocessor communication during Mute mode or low-power mode. These bits can only be written when reception is disabled (RE = 0) or the LPUART is disabled (UE = 0) 24 8 read-write LPUART_CR3 LPUART_CR3 LPUART control register 3 0x8 0x20 0x00000000 0xFFFFFFFF EIE Error interrupt enable Error Interrupt Enable Bit is required to enable interrupt generation in case of a framing error, overrun error or noise flag (FE = 1 or ORE = 1 or NE = 1 in the LPUART_ISR register). 0 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An interrupt is generated when FE = 1 or ORE = 1 or NE = 1 in the LPUART_ISR register. 0x1 HDSEL Half-duplex selection Selection of Single-wire Half-duplex mode This bit can only be written when the LPUART is disabled (UE = 0). 3 1 read-write B_0x0 Half duplex mode is not selected 0x0 B_0x1 Half duplex mode is selected 0x1 DMAR DMA enable receiver This bit is set/reset by software 6 1 read-write B_0x1 DMA mode is enabled for reception 0x1 B_0x0 DMA mode is disabled for reception 0x0 DMAT DMA enable transmitter This bit is set/reset by software 7 1 read-write B_0x1 DMA mode is enabled for transmission 0x1 B_0x0 DMA mode is disabled for transmission 0x0 RTSE RTS enable This bit can only be written when the LPUART is disabled (UE = 0). 8 1 read-write B_0x0 RTS hardware flow control disabled 0x0 B_0x1 RTS output enabled, data is only requested when there is space in the receive buffer. The transmission of data is expected to cease after the current character has been transmitted. The nRTS output is asserted (pulled to 0) when data can be received. 0x1 CTSE CTS enable This bit can only be written when the LPUART is disabled (UE = 0) 9 1 read-write B_0x0 CTS hardware flow control disabled 0x0 B_0x1 CTS mode enabled, data is only transmitted when the nCTS input is asserted (tied to 0). If the nCTS input is deasserted while data is being transmitted, then the transmission is completed before stopping. If data is written into the data register while nCTS is asserted, the transmission is postponed until nCTS is asserted. 0x1 CTSIE CTS interrupt enable 10 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An interrupt is generated whenever CTSIF = 1 in the LPUART_ISR register 0x1 OVRDIS Overrun Disable This bit is used to disable the receive overrun detection. the ORE flag is not set and the new received data overwrites the previous content of the LPUART_RDR register. This bit can only be written when the LPUART is disabled (UE = 0). Note: This control bit enables checking the communication flow w/o reading the data. 12 1 read-write B_0x0 Overrun Error Flag, ORE is set when received data is not read before receiving new data. 0x0 B_0x1 Overrun functionality is disabled. If new data is received while the RXNE flag is still set 0x1 DDRE DMA Disable on Reception Error This bit can only be written when the LPUART is disabled (UE = 0). Note: The reception errors are: parity error, framing error or noise error. 13 1 read-write B_0x0 DMA is not disabled in case of reception error. The corresponding error flag is set but RXNE is kept 0 preventing from overrun. As a consequence, the DMA request is not asserted, so the erroneous data is not transferred (no DMA request), but next correct received data is transferred. 0x0 B_0x1 DMA is disabled following a reception error. The corresponding error flag is set, as well as RXNE. The DMA request is masked until the error flag is cleared. This means that the software must first disable the DMA request (DMAR = 0) or clear RXNE before clearing the error flag. 0x1 DEM Driver enable mode This bit enables the user to activate the external transceiver control, through the DE signal. This bit can only be written when the LPUART is disabled (UE = 0). 14 1 read-write B_0x0 DE function is disabled. 0x0 B_0x1 DE function is enabled. The DE signal is output on the RTS pin. 0x1 DEP Driver enable polarity selection This bit can only be written when the LPUART is disabled (UE = 0). 15 1 read-write B_0x0 DE signal is active high. 0x0 B_0x1 DE signal is active low. 0x1 WUS Wakeup from low-power mode interrupt flag selection This bitfield specifies the event which activates the WUF (Wakeup from low-power mode flag). This bitfield can only be written when the LPUART is disabled (UE = 0). Note: If the LPUART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Refer to . 20 2 read-write B_0x0 WUF active on address match (as defined by ADD[7:0] and ADDM7) 0x0 B_0x2 WUF active on Start bit detection 0x2 B_0x3 WUF active on RXNE. 0x3 WUFIE Wakeup from low-power mode interrupt enable This bit is set and cleared by software. Note: WUFIE must be set before entering in low-power mode. If the LPUART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Refer to . 22 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated whenever WUF = 1 in the LPUART_ISR register 0x1 TXFTIE TXFIFO threshold interrupt enable This bit is set and cleared by software. 23 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 A LPUART interrupt is generated when TXFIFO reaches the threshold programmed in TXFTCFG. 0x1 RXFTCFG Receive FIFO threshold configuration Remaining combinations: Reserved. 25 3 read-write B_0x0 Receive FIFO reaches 1/8 of its depth. 0x0 B_0x1 Receive FIFO reaches 1/4 of its depth. 0x1 B_0x6 Receive FIFO reaches 1/2 of its depth. 0x6 B_0x3 Receive FIFO reaches 3/4 of its depth. 0x3 B_0x4 Receive FIFO reaches 7/8 of its depth. 0x4 B_0x5 Receive FIFO becomes full. 0x5 RXFTIE RXFIFO threshold interrupt enable This bit is set and cleared by software. 28 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An LPUART interrupt is generated when Receive FIFO reaches the threshold programmed in RXFTCFG. 0x1 TXFTCFG TXFIFO threshold configuration Remaining combinations: Reserved. 29 3 read-write B_0x0 TXFIFO reaches 1/8 of its depth. 0x0 B_0x1 TXFIFO reaches 1/4 of its depth. 0x1 B_0x6 TXFIFO reaches 1/2 of its depth. 0x6 B_0x3 TXFIFO reaches 3/4 of its depth. 0x3 B_0x4 TXFIFO reaches 7/8 of its depth. 0x4 B_0x5 TXFIFO becomes empty. 0x5 LPUART_BRR LPUART_BRR LPUART baud rate register 0xc 0x20 0x00000000 0xFFFFFFFF BRR LPUART baud rate 0 20 read-write LPUART_RQR LPUART_RQR LPUART request register 0x18 0x20 0x00000000 0xFFFFFFFF SBKRQ Send break request Writing 1 to this bit sets the SBKF flag and request to send a BREAK on the line, as soon as the transmit machine is available. Note: If the application needs to send the break character following all previously inserted data, including the ones not yet transmitted, the software should wait for the TXE flag assertion before setting the SBKRQ bit. 1 1 write-only MMRQ Mute mode request Writing 1 to this bit puts the LPUART in Mute mode and resets the RWU flag. 2 1 write-only RXFRQ Receive data flush request Writing 1 to this bit clears the RXNE flag. This enables discarding the received data without reading it, and avoid an overrun condition. 3 1 write-only TXFRQ Transmit data flush request This bit is used when FIFO mode is enabled. TXFRQ bit is set to flush the whole FIFO. This sets the flag TXFE (TXFIFO empty, bit 23 in the LPUART_ISR register). Note: In FIFO mode, the TXFNF flag is reset during the flush request until TxFIFO is empty in order to ensure that no data are written in the data register. 4 1 write-only LPUART_ISR_enabled LPUART_ISR_enabled LPUART interrupt and status register [alternate] 0x1c 0x20 0x008000C0 0xFFFFFFFF PE Parity error This bit is set by hardware when a parity error occurs in receiver mode. It is cleared by software, writing 1 to the PECF in the LPUART_ICR register. An interrupt is generated if PEIE = 1 in the LPUART_CR1 register. Note: This error is associated with the character in the LPUART_RDR. 0 1 read-only B_0x0 No parity error 0x0 B_0x1 Parity error 0x1 FE Framing error This bit is set by hardware when a de-synchronization, excessive noise or a break character is detected. It is cleared by software, writing 1 to the FECF bit in the LPUART_ICR register. When transmitting data in Smartcard mode, this bit is set when the maximum number of transmit attempts is reached without success (the card NACKs the data frame). An interrupt is generated if EIE = 1 in the LPUART_CR1 register. Note: This error is associated with the character in the LPUART_RDR. 1 1 read-only B_0x0 No Framing error is detected 0x0 B_0x1 Framing error or break character is detected 0x1 NE Start bit noise detection flag This bit is set by hardware when noise is detected on the start bit of a received frame. It is cleared by software, writing 1 to the NECF bit in the LPUART_ICR register. Note: This bit does not generate an interrupt as it appears at the same time as the RXFNE bit which itself generates an interrupt. An interrupt is generated when the NE flag is set during multi buffer communication if the EIE bit is set. This error is associated with the character in the LPUART_RDR. 2 1 read-only B_0x0 No noise is detected 0x0 B_0x1 Noise is detected 0x1 ORE Overrun error This bit is set by hardware when the data currently being received in the shift register is ready to be transferred into the LPUART_RDR register while RXFF = 1. It is cleared by a software, writing 1 to the ORECF, in the LPUART_ICR register. An interrupt is generated if RXFNEIE = 1 or EIE = 1 in the LPUART_CR1 register. Note: When this bit is set, the LPUART_RDR register content is not lost but the shift register is overwritten. An interrupt is generated if the ORE flag is set during multi buffer communication if the EIE bit is set. This bit is permanently forced to 0 (no overrun detection) when the bit OVRDIS is set in the LPUART_CR3 register. 3 1 read-only B_0x0 No overrun error 0x0 B_0x1 Overrun error is detected 0x1 IDLE Idle line detected This bit is set by hardware when an Idle line is detected. An interrupt is generated if IDLEIE = 1 in the LPUART_CR1 register. It is cleared by software, writing 1 to the IDLECF in the LPUART_ICR register. Note: The IDLE bit is not set again until the RXFNE bit has been set (i.e. a new idle line occurs). If Mute mode is enabled (MME = 1), IDLE is set if the LPUART is not mute (RWU = 0), whatever the Mute mode selected by the WAKE bit. If RWU = 1, IDLE is not set. 4 1 read-only B_0x0 No Idle line is detected 0x0 B_0x1 Idle line is detected 0x1 RXFNE RXFIFO not empty RXFNE bit is set by hardware when the RXFIFO is not empty, and so data can be read from the LPUART_RDR register. Every read of the LPUART_RDR frees a location in the RXFIFO. It is cleared when the RXFIFO is empty. The RXFNE flag can also be cleared by writing 1 to the RXFRQ in the LPUART_RQR register. An interrupt is generated if RXFNEIE = 1 in the LPUART_CR1 register. 5 1 read-only B_0x0 Data is not received 0x0 B_0x1 Received data is ready to be read. 0x1 TC Transmission complete This bit is set by hardware if the transmission of a frame containing data is complete and if TXFF is set. An interrupt is generated if TCIE = 1 in the LPUART_CR1 register. It is cleared by software, writing 1 to the TCCF in the LPUART_ICR register or by a write to the LPUART_TDR register. An interrupt is generated if TCIE = 1 in the LPUART_CR1 register. Note: If TE bit is reset and no transmission is on going, the TC bit is set immediately. 6 1 read-only B_0x0 Transmission is not complete 0x0 B_0x1 Transmission is complete 0x1 TXFNF TXFIFO not full TXFNF is set by hardware when TXFIFO is not full, and so data can be written in the LPUART_TDR. Every write in the LPUART_TDR places the data in the TXFIFO. This flag remains set until the TXFIFO is full. When the TXFIFO is full, this flag is cleared indicating that data can not be written into the LPUART_TDR. The TXFNF is kept reset during the flush request until TXFIFO is empty. After sending the flush request (by setting TXFRQ bit), the flag TXFNF should be checked prior to writing in TXFIFO (TXFNF and TXFE are set at the same time). An interrupt is generated if the TXFNFIE bit  = 1 in the LPUART_CR1 register. Note: This bit is used during single buffer transmission. 7 1 read-only B_0x0 Data register is full/Transmit FIFO is full. 0x0 B_0x1 Data register/Transmit FIFO is not full. 0x1 CTSIF CTS interrupt flag This bit is set by hardware when the nCTS input toggles, if the CTSE bit is set. It is cleared by software, by writing 1 to the CTSCF bit in the LPUART_ICR register. An interrupt is generated if CTSIE = 1 in the LPUART_CR3 register. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 9 1 read-only B_0x0 No change occurred on the nCTS status line 0x0 B_0x1 A change occurred on the nCTS status line 0x1 CTS CTS flag This bit is set/reset by hardware. It is an inverted copy of the status of the nCTS input pin. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 10 1 read-only B_0x0 nCTS line set 0x0 B_0x1 nCTS line reset 0x1 BUSY Busy flag This bit is set and reset by hardware. It is active when a communication is ongoing on the RX line (successful start bit detected). It is reset at the end of the reception (successful or not). 16 1 read-only B_0x0 LPUART is idle (no reception) 0x0 B_0x1 Reception on going 0x1 CMF Character match flag This bit is set by hardware, when a the character defined by ADD[7:0] is received. It is cleared by software, writing 1 to the CMCF in the LPUART_ICR register. An interrupt is generated if CMIE = 1in the LPUART_CR1 register. 17 1 read-only B_0x0 No Character match detected 0x0 B_0x1 Character Match detected 0x1 SBKF Send break flag This bit indicates that a send break character was requested. It is set by software, by writing 1 to the SBKRQ bit in the LPUART_CR3 register. It is automatically reset by hardware during the stop bit of break transmission. 18 1 read-only B_0x0 Break character transmitted 0x0 B_0x1 Break character requested by setting SBKRQ bit in LPUART_RQR register 0x1 RWU Receiver wakeup from Mute mode This bit indicates if the LPUART is in Mute mode. It is cleared/set by hardware when a wakeup/mute sequence is recognized. The Mute mode control sequence (address or IDLE) is selected by the WAKE bit in the LPUART_CR1 register. When wakeup on IDLE mode is selected, this bit can only be set by software, writing 1 to the MMRQ bit in the LPUART_RQR register. Note: If the LPUART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. 19 1 read-only B_0x0 Receiver in Active mode 0x0 B_0x1 Receiver in Mute mode 0x1 WUF Wakeup from low-power mode flag This bit is set by hardware, when a wakeup event is detected. The event is defined by the WUS bitfield. It is cleared by software, writing a 1 to the WUCF in the LPUART_ICR register. An interrupt is generated if WUFIE = 1 in the LPUART_CR3 register. Note: When UESM is cleared, WUF flag is also cleared. If the LPUART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value 20 1 read-only TEACK Transmit enable acknowledge flag This bit is set/reset by hardware, when the Transmit Enable value is taken into account by the LPUART. It can be used when an idle frame request is generated by writing TE = 0, followed by TE = 1 in the LPUART_CR1 register, in order to respect the TE = 0 minimum period. 21 1 read-only REACK Receive enable acknowledge flag This bit is set/reset by hardware, when the Receive Enable value is taken into account by the LPUART. It can be used to verify that the LPUART is ready for reception before entering low-power mode. Note: If the LPUART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. 22 1 read-only TXFE TXFIFO empty This bit is set by hardware when TXFIFO is empty. When the TXFIFO contains at least one data, this flag is cleared. The TXFE flag can also be set by writing 1 to the bit TXFRQ (bit 4) in the LPUART_RQR register. An interrupt is generated if the TXFEIE bit  = 1 (bit 30) in the LPUART_CR1 register. 23 1 read-only B_0x0 TXFIFO is not empty 0x0 B_0x1 TXFIFO is empty 0x1 RXFF RXFIFO full This bit is set by hardware when the number of received data corresponds to RXFIFO size + 1 (RXFIFO full + 1 data in the LPUART_RDR register. An interrupt is generated if the RXFFIE bit  = 1 in the LPUART_CR1 register. 24 1 read-only B_0x0 RXFIFO is not full 0x0 B_0x1 RXFIFO is full 0x1 RXFT RXFIFO threshold flag This bit is set by hardware when the RXFIFO reaches the threshold programmed in RXFTCFG in LPUART_CR3 register i.e. the Receive FIFO contains RXFTCFG data. An interrupt is generated if the RXFTIE bit  = 1 (bit 27) in the LPUART_CR3 register. 26 1 read-only B_0x0 Receive FIFO does not reach the programmed threshold. 0x0 B_0x1 Receive FIFO reached the programmed threshold. 0x1 TXFT TXFIFO threshold flag This bit is set by hardware when the TXFIFO reaches the threshold programmed in TXFTCFG in LPUART_CR3 register i.e. the TXFIFO contains TXFTCFG empty locations. An interrupt is generated if the TXFTIE bit  = 1 (bit 31) in the LPUART_CR3 register. 27 1 read-only B_0x0 TXFIFO does not reach the programmed threshold. 0x0 B_0x1 TXFIFO reached the programmed threshold. 0x1 LPUART_ISR_disabled LPUART_ISR_disabled LPUART interrupt and status register [alternate] LPUART_ISR_enabled 0x1c 0x20 0x008000C0 0xFFFFFFFF PE Parity error This bit is set by hardware when a parity error occurs in receiver mode. It is cleared by software, writing 1 to the PECF in the LPUART_ICR register. An interrupt is generated if PEIE = 1 in the LPUART_CR1 register. Note: This error is associated with the character in the LPUART_RDR. 0 1 read-only B_0x0 No parity error 0x0 B_0x1 Parity error 0x1 FE Framing error This bit is set by hardware when a de-synchronization, excessive noise or a break character is detected. It is cleared by software, writing 1 to the FECF bit in the LPUART_ICR register. When transmitting data in Smartcard mode, this bit is set when the maximum number of transmit attempts is reached without success (the card NACKs the data frame). An interrupt is generated if EIE = 1 in the LPUART_CR1 register. Note: This error is associated with the character in the LPUART_RDR. 1 1 read-only B_0x0 No Framing error is detected 0x0 B_0x1 Framing error or break character is detected 0x1 NE Start bit noise detection flag This bit is set by hardware when noise is detected on the start bit of a received frame. It is cleared by software, writing 1 to the NECF bit in the LPUART_ICR register. Note: This bit does not generate an interrupt as it appears at the same time as the RXFNE bit which itself generates an interrupt. An interrupt is generated when the NE flag is set during multi buffer communication if the EIE bit is set. This error is associated with the character in the LPUART_RDR. 2 1 read-only B_0x0 No noise is detected 0x0 B_0x1 Noise is detected 0x1 ORE Overrun error This bit is set by hardware when the data currently being received in the shift register is ready to be transferred into the LPUART_RDR register while RXFF = 1. It is cleared by a software, writing 1 to the ORECF, in the LPUART_ICR register. An interrupt is generated if RXFNEIE = 1 or EIE = 1 in the LPUART_CR1 register. Note: When this bit is set, the LPUART_RDR register content is not lost but the shift register is overwritten. An interrupt is generated if the ORE flag is set during multi buffer communication if the EIE bit is set. This bit is permanently forced to 0 (no overrun detection) when the bit OVRDIS is set in the LPUART_CR3 register. 3 1 read-only B_0x0 No overrun error 0x0 B_0x1 Overrun error is detected 0x1 IDLE Idle line detected This bit is set by hardware when an Idle line is detected. An interrupt is generated if IDLEIE = 1 in the LPUART_CR1 register. It is cleared by software, writing 1 to the IDLECF in the LPUART_ICR register. Note: The IDLE bit is not set again until the RXFNE bit has been set (i.e. a new idle line occurs). If Mute mode is enabled (MME = 1), IDLE is set if the LPUART is not mute (RWU = 0), whatever the Mute mode selected by the WAKE bit. If RWU = 1, IDLE is not set. 4 1 read-only B_0x0 No Idle line is detected 0x0 B_0x1 Idle line is detected 0x1 RXFNE RXFIFO not empty RXFNE bit is set by hardware when the RXFIFO is not empty, and so data can be read from the LPUART_RDR register. Every read of the LPUART_RDR frees a location in the RXFIFO. It is cleared when the RXFIFO is empty. The RXFNE flag can also be cleared by writing 1 to the RXFRQ in the LPUART_RQR register. An interrupt is generated if RXFNEIE = 1 in the LPUART_CR1 register. 5 1 read-only B_0x0 Data is not received 0x0 B_0x1 Received data is ready to be read. 0x1 TC Transmission complete This bit is set by hardware if the transmission of a frame containing data is complete and if TXFF is set. An interrupt is generated if TCIE = 1 in the LPUART_CR1 register. It is cleared by software, writing 1 to the TCCF in the LPUART_ICR register or by a write to the LPUART_TDR register. An interrupt is generated if TCIE = 1 in the LPUART_CR1 register. Note: If TE bit is reset and no transmission is on going, the TC bit is set immediately. 6 1 read-only B_0x0 Transmission is not complete 0x0 B_0x1 Transmission is complete 0x1 TXFNF TXFIFO not full TXFNF is set by hardware when TXFIFO is not full, and so data can be written in the LPUART_TDR. Every write in the LPUART_TDR places the data in the TXFIFO. This flag remains set until the TXFIFO is full. When the TXFIFO is full, this flag is cleared indicating that data can not be written into the LPUART_TDR. The TXFNF is kept reset during the flush request until TXFIFO is empty. After sending the flush request (by setting TXFRQ bit), the flag TXFNF should be checked prior to writing in TXFIFO (TXFNF and TXFE are set at the same time). An interrupt is generated if the TXFNFIE bit  = 1 in the LPUART_CR1 register. Note: This bit is used during single buffer transmission. 7 1 read-only B_0x0 Data register is full/Transmit FIFO is full. 0x0 B_0x1 Data register/Transmit FIFO is not full. 0x1 CTSIF CTS interrupt flag This bit is set by hardware when the nCTS input toggles, if the CTSE bit is set. It is cleared by software, by writing 1 to the CTSCF bit in the LPUART_ICR register. An interrupt is generated if CTSIE = 1 in the LPUART_CR3 register. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 9 1 read-only B_0x0 No change occurred on the nCTS status line 0x0 B_0x1 A change occurred on the nCTS status line 0x1 CTS CTS flag This bit is set/reset by hardware. It is an inverted copy of the status of the nCTS input pin. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 10 1 read-only B_0x0 nCTS line set 0x0 B_0x1 nCTS line reset 0x1 BUSY Busy flag This bit is set and reset by hardware. It is active when a communication is ongoing on the RX line (successful start bit detected). It is reset at the end of the reception (successful or not). 16 1 read-only B_0x0 LPUART is idle (no reception) 0x0 B_0x1 Reception on going 0x1 CMF Character match flag This bit is set by hardware, when a the character defined by ADD[7:0] is received. It is cleared by software, writing 1 to the CMCF in the LPUART_ICR register. An interrupt is generated if CMIE = 1in the LPUART_CR1 register. 17 1 read-only B_0x0 No Character match detected 0x0 B_0x1 Character Match detected 0x1 SBKF Send break flag This bit indicates that a send break character was requested. It is set by software, by writing 1 to the SBKRQ bit in the LPUART_CR3 register. It is automatically reset by hardware during the stop bit of break transmission. 18 1 read-only B_0x0 Break character transmitted 0x0 B_0x1 Break character requested by setting SBKRQ bit in LPUART_RQR register 0x1 RWU Receiver wakeup from Mute mode This bit indicates if the LPUART is in Mute mode. It is cleared/set by hardware when a wakeup/mute sequence is recognized. The Mute mode control sequence (address or IDLE) is selected by the WAKE bit in the LPUART_CR1 register. When wakeup on IDLE mode is selected, this bit can only be set by software, writing 1 to the MMRQ bit in the LPUART_RQR register. Note: If the LPUART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. 19 1 read-only B_0x0 Receiver in Active mode 0x0 B_0x1 Receiver in Mute mode 0x1 WUF Wakeup from low-power mode flag This bit is set by hardware, when a wakeup event is detected. The event is defined by the WUS bitfield. It is cleared by software, writing a 1 to the WUCF in the LPUART_ICR register. An interrupt is generated if WUFIE = 1 in the LPUART_CR3 register. Note: When UESM is cleared, WUF flag is also cleared. If the LPUART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value 20 1 read-only TEACK Transmit enable acknowledge flag This bit is set/reset by hardware, when the Transmit Enable value is taken into account by the LPUART. It can be used when an idle frame request is generated by writing TE = 0, followed by TE = 1 in the LPUART_CR1 register, in order to respect the TE = 0 minimum period. 21 1 read-only REACK Receive enable acknowledge flag This bit is set/reset by hardware, when the Receive Enable value is taken into account by the LPUART. It can be used to verify that the LPUART is ready for reception before entering low-power mode. Note: If the LPUART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. 22 1 read-only LPUART_ICR LPUART_ICR LPUART interrupt flag clear register 0x20 0x20 0x00000000 0xFFFFFFFF PECF Parity error clear flag Writing 1 to this bit clears the PE flag in the LPUART_ISR register. 0 1 write-only FECF Framing error clear flag Writing 1 to this bit clears the FE flag in the LPUART_ISR register. 1 1 write-only NECF Noise detected clear flag Writing 1 to this bit clears the NE flag in the LPUART_ISR register. 2 1 write-only ORECF Overrun error clear flag Writing 1 to this bit clears the ORE flag in the LPUART_ISR register. 3 1 write-only IDLECF Idle line detected clear flag Writing 1 to this bit clears the IDLE flag in the LPUART_ISR register. 4 1 write-only TCCF Transmission complete clear flag Writing 1 to this bit clears the TC flag in the LPUART_ISR register. 6 1 write-only CTSCF CTS clear flag Writing 1 to this bit clears the CTSIF flag in the LPUART_ISR register. 9 1 write-only CMCF Character match clear flag Writing 1 to this bit clears the CMF flag in the LPUART_ISR register. 17 1 write-only WUCF Wakeup from low-power mode clear flag Writing 1 to this bit clears the WUF flag in the LPUART_ISR register. Note: If the LPUART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. Refer to . 20 1 write-only LPUART_RDR LPUART_RDR LPUART receive data register 0x24 0x20 0x00000000 0xFFFFFFFF RDR Receive data value Contains the received data character. The RDR register provides the parallel interface between the input shift register and the internal bus (see ). When receiving with the parity enabled, the value read in the MSB bit is the received parity bit. 0 9 read-only LPUART_TDR LPUART_TDR LPUART transmit data register 0x28 0x20 0x00000000 0xFFFFFFFF TDR Transmit data value Contains the data character to be transmitted. The TDR register provides the parallel interface between the internal bus and the output shift register (see ). When transmitting with the parity enabled (PCE bit set to 1 in the LPUART_CR1 register), the value written in the MSB (bit 7 or bit 8 depending on the data length) has no effect because it is replaced by the parity. Note: This register must be written only when TXE/TXFNF = 1. 0 9 read-write LPUART_PRESC LPUART_PRESC LPUART prescaler register 0x2c 0x20 0x00000000 0xFFFFFFFF PRESCALER Clock prescaler The LPUART input clock can be divided by a prescaler: Remaining combinations: Reserved. Note: When PRESCALER is programmed with a value different of the allowed ones, programmed prescaler value is 1011 i.e. input clock divided by 256. 0 4 read-write B_0x0 input clock not divided 0x0 B_0x1 input clock divided by 2 0x1 B_0x2 input clock divided by 4 0x2 B_0x3 input clock divided by 6 0x3 B_0x4 input clock divided by 8 0x4 B_0x5 input clock divided by 10 0x5 B_0x6 input clock divided by 12 0x6 B_0x7 input clock divided by 16 0x7 B_0x8 input clock divided by 32 0x8 B_0x9 input clock divided by 64 0x9 B_0xA input clock divided by 128 0xA B_0xB input clock divided by 256 0xB LPUART2 0x40008400 PWR Power control PWR 0x40007000 0x0 0x400 registers PVD Power voltage detector interrupt 1 CR1 CR1 Power control register 1 0x0 0x20 read-write 0x00000208 LPR Low-power run 14 1 VOS Voltage scaling range selection 9 2 DBP Disable backup domain write protection 8 1 FPD_LPSLP Flash memory powered down during Low-power sleep mode 5 1 FPD_LPRUN Flash memory powered down during Low-power run mode 4 1 FPD_STOP Flash memory powered down during Stop mode 3 1 LPMS Low-power mode selection 0 3 CR2 CR2 Power control register 2 0x4 0x20 read-write 0x00000000 PVDE Power voltage detector enable 0 1 PVDFT Power voltage detector falling threshold selection 1 3 PVDRT Power voltage detector rising threshold selection 4 3 PVMENDAC PVMENDAC 7 1 PVMENUSB PVMENUSB 8 1 IOSV IOSV 9 1 USV USV 10 1 CR3 CR3 Power control register 3 0x8 0x20 read-write 0X00008000 EWUP1 Enable Wakeup pin WKUP1 0 1 EWUP2 Enable Wakeup pin WKUP2 1 1 EWUP3 Enable Wakeup pin WKUP3 2 1 EWUP4 Enable Wakeup pin WKUP4 3 1 EWUP5 Enable WKUP5 wakeup pin 4 1 EWUP6 Enable WKUP6 wakeup pin 5 1 RRS SRAM retention in Standby mode 8 1 ENB_ULP Ultra-low-power enable 9 1 APC Apply pull-up and pull-down configuration 10 1 EIWUL Enable internal wakeup line 15 1 CR4 CR4 Power control register 4 0xC 0x20 read-write 0x00000000 WP1 Wakeup pin WKUP1 polarity 0 1 WP2 Wakeup pin WKUP2 polarity 1 1 WP3 Wakeup pin WKUP3 polarity 2 1 WP4 Wakeup pin WKUP4 polarity 3 1 WP5 Wakeup pin WKUP5 polarity 4 1 WP6 WKUP6 wakeup pin polarity 5 1 VBE VBAT battery charging enable 8 1 VBRS VBAT battery charging resistor selection 9 1 SR1 SR1 Power status register 1 0x10 0x20 read-only 0x00000000 WUF1 Wakeup flag 1 0 1 WUF2 Wakeup flag 2 1 1 WUF3 Wakeup flag 3 2 1 WUF4 Wakeup flag 4 3 1 WUF5 Wakeup flag 5 4 1 WUF6 Wakeup flag 6 5 1 SBF Standby flag 8 1 WUFI Wakeup flag internal 15 1 SR2 SR2 Power status register 2 0x14 0x20 read-only 0x00000000 PVMODAC VDDA monitoring output flag 15 1 PVMOUSB USB supply voltage monitoring output flag 12 1 PVDO Power voltage detector output 11 1 VOSF Voltage scaling flag 10 1 REGLPF Low-power regulator flag 9 1 REGLPS Low-power regulator started 8 1 FLASH_RDY Flash ready flag 7 1 SCR SCR Power status clear register 0x18 0x20 write-only 0x00000000 CSBF Clear standby flag 8 1 CWUF6 Clear wakeup flag 6 5 1 CWUF5 Clear wakeup flag 5 4 1 CWUF4 Clear wakeup flag 4 3 1 CWUF3 Clear wakeup flag 3 2 1 CWUF2 Clear wakeup flag 2 1 1 CWUF1 Clear wakeup flag 1 0 1 PUCRA PUCRA Power Port A pull-up control register 0x20 0x20 read-write 0x00000000 PU15 Port A pull-up bit y (y=0..15) 15 1 PU14 Port A pull-up bit y (y=0..15) 14 1 PU13 Port A pull-up bit y (y=0..15) 13 1 PU12 Port A pull-up bit y (y=0..15) 12 1 PU11 Port A pull-up bit y (y=0..15) 11 1 PU10 Port A pull-up bit y (y=0..15) 10 1 PU9 Port A pull-up bit y (y=0..15) 9 1 PU8 Port A pull-up bit y (y=0..15) 8 1 PU7 Port A pull-up bit y (y=0..15) 7 1 PU6 Port A pull-up bit y (y=0..15) 6 1 PU5 Port A pull-up bit y (y=0..15) 5 1 PU4 Port A pull-up bit y (y=0..15) 4 1 PU3 Port A pull-up bit y (y=0..15) 3 1 PU2 Port A pull-up bit y (y=0..15) 2 1 PU1 Port A pull-up bit y (y=0..15) 1 1 PU0 Port A pull-up bit y (y=0..15) 0 1 PDCRA PDCRA Power Port A pull-down control register 0x24 0x20 read-write 0x00000000 PD15 Port A pull-down bit y (y=0..15) 15 1 PD14 Port A pull-down bit y (y=0..15) 14 1 PD13 Port A pull-down bit y (y=0..15) 13 1 PD12 Port A pull-down bit y (y=0..15) 12 1 PD11 Port A pull-down bit y (y=0..15) 11 1 PD10 Port A pull-down bit y (y=0..15) 10 1 PD9 Port A pull-down bit y (y=0..15) 9 1 PD8 Port A pull-down bit y (y=0..15) 8 1 PD7 Port A pull-down bit y (y=0..15) 7 1 PD6 Port A pull-down bit y (y=0..15) 6 1 PD5 Port A pull-down bit y (y=0..15) 5 1 PD4 Port A pull-down bit y (y=0..15) 4 1 PD3 Port A pull-down bit y (y=0..15) 3 1 PD2 Port A pull-down bit y (y=0..15) 2 1 PD1 Port A pull-down bit y (y=0..15) 1 1 PD0 Port A pull-down bit y (y=0..15) 0 1 PUCRB PUCRB Power Port B pull-up control register 0x28 0x20 read-write 0x00000000 PU15 Port B pull-up bit y (y=0..15) 15 1 PU14 Port B pull-up bit y (y=0..15) 14 1 PU13 Port B pull-up bit y (y=0..15) 13 1 PU12 Port B pull-up bit y (y=0..15) 12 1 PU11 Port B pull-up bit y (y=0..15) 11 1 PU10 Port B pull-up bit y (y=0..15) 10 1 PU9 Port B pull-up bit y (y=0..15) 9 1 PU8 Port B pull-up bit y (y=0..15) 8 1 PU7 Port B pull-up bit y (y=0..15) 7 1 PU6 Port B pull-up bit y (y=0..15) 6 1 PU5 Port B pull-up bit y (y=0..15) 5 1 PU4 Port B pull-up bit y (y=0..15) 4 1 PU3 Port B pull-up bit y (y=0..15) 3 1 PU2 Port B pull-up bit y (y=0..15) 2 1 PU1 Port B pull-up bit y (y=0..15) 1 1 PU0 Port B pull-up bit y (y=0..15) 0 1 PDCRB PDCRB Power Port B pull-down control register 0x2C 0x20 read-write 0x00000000 PD15 Port B pull-down bit y (y=0..15) 15 1 PD14 Port B pull-down bit y (y=0..15) 14 1 PD13 Port B pull-down bit y (y=0..15) 13 1 PD12 Port B pull-down bit y (y=0..15) 12 1 PD11 Port B pull-down bit y (y=0..15) 11 1 PD10 Port B pull-down bit y (y=0..15) 10 1 PD9 Port B pull-down bit y (y=0..15) 9 1 PD8 Port B pull-down bit y (y=0..15) 8 1 PD7 Port B pull-down bit y (y=0..15) 7 1 PD6 Port B pull-down bit y (y=0..15) 6 1 PD5 Port B pull-down bit y (y=0..15) 5 1 PD4 Port B pull-down bit y (y=0..15) 4 1 PD3 Port B pull-down bit y (y=0..15) 3 1 PD2 Port B pull-down bit y (y=0..15) 2 1 PD1 Port B pull-down bit y (y=0..15) 1 1 PD0 Port B pull-down bit y (y=0..15) 0 1 PUCRC PUCRC Power Port C pull-up control register 0x30 0x20 read-write 0x00000000 PU15 Port C pull-up bit y (y=0..15) 15 1 PU14 Port C pull-up bit y (y=0..15) 14 1 PU13 Port C pull-up bit y (y=0..15) 13 1 PU12 Port C pull-up bit y (y=0..15) 12 1 PU11 Port C pull-up bit y (y=0..15) 11 1 PU10 Port C pull-up bit y (y=0..15) 10 1 PU9 Port C pull-up bit y (y=0..15) 9 1 PU8 Port C pull-up bit y (y=0..15) 8 1 PU7 Port C pull-up bit y (y=0..15) 7 1 PU6 Port C pull-up bit y (y=0..15) 6 1 PU5 Port C pull-up bit y (y=0..15) 5 1 PU4 Port C pull-up bit y (y=0..15) 4 1 PU3 Port C pull-up bit y (y=0..15) 3 1 PU2 Port C pull-up bit y (y=0..15) 2 1 PU1 Port C pull-up bit y (y=0..15) 1 1 PU0 Port C pull-up bit y (y=0..15) 0 1 PDCRC PDCRC Power Port C pull-down control register 0x34 0x20 read-write 0x00000000 PD15 Port C pull-down bit y (y=0..15) 15 1 PD14 Port C pull-down bit y (y=0..15) 14 1 PD13 Port C pull-down bit y (y=0..15) 13 1 PD12 Port C pull-down bit y (y=0..15) 12 1 PD11 Port C pull-down bit y (y=0..15) 11 1 PD10 Port C pull-down bit y (y=0..15) 10 1 PD9 Port C pull-down bit y (y=0..15) 9 1 PD8 Port C pull-down bit y (y=0..15) 8 1 PD7 Port C pull-down bit y (y=0..15) 7 1 PD6 Port C pull-down bit y (y=0..15) 6 1 PD5 Port C pull-down bit y (y=0..15) 5 1 PD4 Port C pull-down bit y (y=0..15) 4 1 PD3 Port C pull-down bit y (y=0..15) 3 1 PD2 Port C pull-down bit y (y=0..15) 2 1 PD1 Port C pull-down bit y (y=0..15) 1 1 PD0 Port C pull-down bit y (y=0..15) 0 1 PUCRD PUCRD Power Port D pull-up control register 0x38 0x20 read-write 0x00000000 PU15 Port D pull-up bit y (y=0..15) 15 1 PU14 Port D pull-up bit y (y=0..15) 14 1 PU13 Port D pull-up bit y (y=0..15) 13 1 PU12 Port D pull-up bit y (y=0..15) 12 1 PU11 Port D pull-up bit y (y=0..15) 11 1 PU10 Port D pull-up bit y (y=0..15) 10 1 PU9 Port D pull-up bit y (y=0..15) 9 1 PU8 Port D pull-up bit y (y=0..15) 8 1 PU7 Port D pull-up bit y (y=0..15) 7 1 PU6 Port D pull-up bit y (y=0..15) 6 1 PU5 Port D pull-up bit y (y=0..15) 5 1 PU4 Port D pull-up bit y (y=0..15) 4 1 PU3 Port D pull-up bit y (y=0..15) 3 1 PU2 Port D pull-up bit y (y=0..15) 2 1 PU1 Port D pull-up bit y (y=0..15) 1 1 PU0 Port D pull-up bit y (y=0..15) 0 1 PDCRD PDCRD Power Port D pull-down control register 0x3C 0x20 read-write 0x00000000 PD15 Port D pull-down bit y (y=0..15) 15 1 PD14 Port D pull-down bit y (y=0..15) 14 1 PD13 Port D pull-down bit y (y=0..15) 13 1 PD12 Port D pull-down bit y (y=0..15) 12 1 PD11 Port D pull-down bit y (y=0..15) 11 1 PD10 Port D pull-down bit y (y=0..15) 10 1 PD9 Port D pull-down bit y (y=0..15) 9 1 PD8 Port D pull-down bit y (y=0..15) 8 1 PD7 Port D pull-down bit y (y=0..15) 7 1 PD6 Port D pull-down bit y (y=0..15) 6 1 PD5 Port D pull-down bit y (y=0..15) 5 1 PD4 Port D pull-down bit y (y=0..15) 4 1 PD3 Port D pull-down bit y (y=0..15) 3 1 PD2 Port D pull-down bit y (y=0..15) 2 1 PD1 Port D pull-down bit y (y=0..15) 1 1 PD0 Port D pull-down bit y (y=0..15) 0 1 PUCRE PUCRE Power Port E pull-UP control register 0x40 0x20 read-write 0x00000000 PU15 Port E pull-up bit y (y=0..15) 15 1 PU14 Port E pull-up bit y (y=0..15) 14 1 PU13 Port E pull-up bit y (y=0..15) 13 1 PU12 Port E pull-up bit y (y=0..15) 12 1 PU11 Port E pull-up bit y (y=0..15) 11 1 PU10 Port E pull-up bit y (y=0..15) 10 1 PU9 Port E pull-up bit y (y=0..15) 9 1 PU8 Port E pull-up bit y (y=0..15) 8 1 PU7 Port E pull-up bit y (y=0..15) 7 1 PU6 Port E pull-up bit y (y=0..15) 6 1 PU5 Port E pull-up bit y (y=0..15) 5 1 PU4 Port E pull-up bit y (y=0..15) 4 1 PU3 Port E pull-up bit y (y=0..15) 3 1 PU2 Port E pull-up bit y (y=0..15) 2 1 PU1 Port E pull-up bit y (y=0..15) 1 1 PU0 Port E pull-up bit y (y=0..15) 0 1 PDCRE PDCRE Power Port E pull-down control register 0x44 0x20 read-write 0x00000000 PD15 Port E pull-down bit y (y=0..15) 15 1 PD14 Port E pull-down bit y (y=0..15) 14 1 PD13 Port E pull-down bit y (y=0..15) 13 1 PD12 Port E pull-down bit y (y=0..15) 12 1 PD11 Port E pull-down bit y (y=0..15) 11 1 PD10 Port E pull-down bit y (y=0..15) 10 1 PD9 Port E pull-down bit y (y=0..15) 9 1 PD8 Port E pull-down bit y (y=0..15) 8 1 PD7 Port E pull-down bit y (y=0..15) 7 1 PD6 Port E pull-down bit y (y=0..15) 6 1 PD5 Port E pull-down bit y (y=0..15) 5 1 PD4 Port E pull-down bit y (y=0..15) 4 1 PD3 Port E pull-down bit y (y=0..15) 3 1 PD2 Port E pull-down bit y (y=0..15) 2 1 PD1 Port E pull-down bit y (y=0..15) 1 1 PD0 Port E pull-down bit y (y=0..15) 0 1 PUCRF PUCRF Power Port F pull-up control register 0x48 0x20 read-write 0x00000000 PU13 Port F pull-up bit y (y=0..15) 13 1 PU12 Port F pull-up bit y (y=0..15) 12 1 PU11 Port F pull-up bit y (y=0..15) 11 1 PU10 Port F pull-up bit y (y=0..15) 10 1 PU9 Port F pull-up bit y (y=0..15) 9 1 PU8 Port F pull-up bit y (y=0..15) 8 1 PU7 Port F pull-up bit y (y=0..15) 7 1 PU6 Port F pull-up bit y (y=0..15) 6 1 PU5 Port F pull-up bit y (y=0..15) 5 1 PU4 Port F pull-up bit y (y=0..15) 4 1 PU3 Port F pull-up bit y (y=0..15) 3 1 PU2 Port F pull-up bit y (y=0..15) 2 1 PU1 Port F pull-up bit y (y=0..15) 1 1 PU0 Port F pull-up bit y (y=0..15) 0 1 PDCRF PDCRF Power Port F pull-down control register 0x4C 0x20 read-write 0x00000000 PD13 Port F pull-down bit y (y=0..15) 13 1 PD12 Port F pull-down bit y (y=0..15) 12 1 PD11 Port F pull-down bit y (y=0..15) 11 1 PD10 Port F pull-down bit y (y=0..15) 10 1 PD9 Port F pull-down bit y (y=0..15) 9 1 PD8 Port F pull-down bit y (y=0..15) 8 1 PD7 Port F pull-down bit y (y=0..15) 7 1 PD6 Port F pull-down bit y (y=0..15) 6 1 PD5 Port F pull-down bit y (y=0..15) 5 1 PD4 Port F pull-down bit y (y=0..15) 4 1 PD3 Port F pull-down bit y (y=0..15) 3 1 PD2 Port F pull-down bit y (y=0..15) 2 1 PD1 Port F pull-down bit y (y=0..15) 1 1 PD0 Port F pull-down bit y (y=0..15) 0 1 RCC Reset and clock control RCC 0x40021000 0x0 0x400 registers RCC_CRS RCC global interrupt 4 CR CR Clock control register 0x0 0x20 read-write 0x00000500 HSION HSI16 clock enable 8 1 HSIKERON HSI16 always enable for peripheral kernels 9 1 HSIRDY HSI16 clock ready flag 10 1 read-only HSIDIV HSI16 clock division factor 11 3 HSEON HSE clock enable 16 1 HSERDY HSE clock ready flag 17 1 HSEBYP HSE crystal oscillator bypass 18 1 CSSON Clock security system enable 19 1 HSI48ON HSI48ON 22 1 read-write HSI48RDY HSI48RDY 23 1 read-only PLLON PLL enable 24 1 PLLRDY PLL clock ready flag 25 1 read-only ICSCR ICSCR Internal clock sources calibration register 0x4 0x20 0x00004000 HSICAL HSI16 clock calibration 0 8 read-only HSITRIM HSI16 clock trimming 8 7 read-write CFGR CFGR Clock configuration register 0x8 0x20 0x00000000 MCOPRE Microcontroller clock output prescaler 28 4 read-write MCOSEL Microcontroller clock output 24 4 read-write MCO2PRE MCO2PRE 20 4 read-write MCO2SEL MCO2SEL 16 4 read-write PPRE APB prescaler 12 3 read-write HPRE AHB prescaler 8 4 read-write SWS System clock switch status 3 3 read-only SW System clock switch 0 3 read-write PLLCFGR PLLCFGR PLL configuration register 0xC 0x20 read-write 0x00001000 PLLSRC PLL input clock source 0 2 PLLM Division factor M of the PLL input clock divider 4 3 PLLN PLL frequency multiplication factor N 8 8 PLLPEN PLLPCLK clock output enable 16 1 PLLP PLL VCO division factor P for PLLPCLK clock output 17 5 PLLQEN PLLQCLK clock output enable 24 1 PLLQ PLL VCO division factor Q for PLLQCLK clock output 25 3 PLLREN PLLRCLK clock output enable 28 1 PLLR PLL VCO division factor R for PLLRCLK clock output 29 3 CRRCR CRRCR RCC clock recovery RC register 0x14 0x20 read-only 0x00000000 HSI48CAL HSI48 clock calibration 0 9 CIER CIER Clock interrupt enable register 0x18 0x20 read-write 0x00000000 LSIRDYIE LSI ready interrupt enable 0 1 LSERDYIE LSE ready interrupt enable 1 1 HSIRDYIE HSI ready interrupt enable 3 1 HSERDYIE HSE ready interrupt enable 4 1 PLLSYSRDYIE PLL ready interrupt enable 5 1 CIFR CIFR Clock interrupt flag register 0x1C 0x20 read-only 0x00000000 LSIRDYF LSI ready interrupt flag 0 1 LSERDYF LSE ready interrupt flag 1 1 HSI48RDYF HSI48RDYF 2 1 HSIRDYF HSI ready interrupt flag 3 1 HSERDYF HSE ready interrupt flag 4 1 PLLSYSRDYF PLL ready interrupt flag 5 1 CSSF Clock security system interrupt flag 8 1 LSECSSF LSE Clock security system interrupt flag 9 1 CICR CICR Clock interrupt clear register 0x20 0x20 write-only 0x00000000 LSIRDYC LSI ready interrupt clear 0 1 LSERDYC LSE ready interrupt clear 1 1 HSI48RDYC HSI48RDYC 2 1 HSIRDYC HSI ready interrupt clear 3 1 HSERDYC HSE ready interrupt clear 4 1 PLLSYSRDYC PLL ready interrupt clear 5 1 CSSC Clock security system interrupt clear 8 1 LSECSSC LSE Clock security system interrupt clear 9 1 IOPRSTR IOPRSTR I/O port reset register 0x24 0x20 read-write 0x00000000 GPIOARST GPIOARST 0 1 GPIOBRST GPIOBRST 1 1 GPIOCRST GPIOCRST 2 1 GPIODRST GPIODRST 3 1 GPIOERST GPIOERST 4 1 GPIOFRST GPIOFRST 5 1 AHBRSTR AHBRSTR AHB peripheral reset register 0x28 0x20 read-write 0x00000000 DMA1RST DMA1 reset 0 1 DMA2RST DMA1 reset 1 1 FLASHRST FLITF reset 8 1 CRCRST CRC reset 12 1 AESRST AES hardware accelerator reset 16 1 RNGRST Random number generator reset 18 1 APBRSTR1 APBRSTR1 APB peripheral reset register 1 0x2C 0x20 read-write 0x00000000 TIM2RST TIM2 timer reset 0 1 TIM3RST TIM3 timer reset 1 1 TIM4RST TIM4 timer reset 2 1 TIM6RST TIM6 timer reset 4 1 TIM7RST TIM7 timer reset 5 1 LPUART2RST LPUART2RST 7 1 USART5RST USART5RST 8 1 USART6RST USART6RST 9 1 FDCANRST FDCANRST 12 1 USBRST USBRST 13 1 SPI2RST SPI2 reset 14 1 SPI3RST SPI3 reset 15 1 CRSRST CRSRST 16 1 USART2RST USART2 reset 17 1 USART3RST USART3 reset 18 1 USART4RST USART4 reset 19 1 LPUART1RST LPUART1 reset 20 1 I2C1RST I2C1 reset 21 1 I2C2RST I2C2 reset 22 1 I2C3RST I2C3RST reset 23 1 CECRST HDMI CEC reset 24 1 UCPD1RST UCPD1 reset 25 1 UCPD2RST UCPD2 reset 26 1 DBGRST Debug support reset 27 1 PWRRST Power interface reset 28 1 DAC1RST DAC1 interface reset 29 1 LPTIM2RST Low Power Timer 2 reset 30 1 LPTIM1RST Low Power Timer 1 reset 31 1 APBRSTR2 APBRSTR2 APB peripheral reset register 2 0x30 0x20 read-write 0x00000000 SYSCFGRST SYSCFG, COMP and VREFBUF reset 0 1 TIM1RST TIM1 timer reset 11 1 SPI1RST SPI1 reset 12 1 USART1RST USART1 reset 14 1 TIM14RST TIM14 timer reset 15 1 TIM15RST TIM15 timer reset 16 1 TIM16RST TIM16 timer reset 17 1 TIM17RST TIM17 timer reset 18 1 ADCRST ADC reset 20 1 IOPENR IOPENR GPIO clock enable register 0x34 0x20 read-write 0x00000000 GPIOAEN I/O port A clock enable during Sleep mode 0 1 GPIOBEN I/O port B clock enable during Sleep mode 1 1 GPIOCEN I/O port C clock enable during Sleep mode 2 1 GPIODEN I/O port D clock enable during Sleep mode 3 1 GPIOEEN I/O port E clock enable during Sleep mode 4 1 GPIOFEN I/O port F clock enable during Sleep mode 5 1 AHBENR AHBENR AHB peripheral clock enable register 0x38 0x20 read-write 0x00000100 DMA1EN DMA1 clock enable 0 1 DMA2EN DMA2 clock enable 1 1 FLASHEN Flash memory interface clock enable 8 1 CRCEN CRC clock enable 12 1 AESEN AES hardware accelerator 16 1 RNGEN Random number generator clock enable 18 1 APBENR1 APBENR1 APB peripheral clock enable register 1 0x3C 0x20 read-write 0x00000000 TIM2EN TIM2 timer clock enable 0 1 TIM3EN TIM3 timer clock enable 1 1 TIM4EN TIM4 timer clock enable 2 1 TIM6EN TIM6 timer clock enable 4 1 TIM7EN TIM7 timer clock enable 5 1 LPUART2EN LPUART2 clock enable 7 1 USART5EN USART5EN 8 1 USART6EN USART6EN 9 1 RTCAPBEN RTC APB clock enable 10 1 WWDGEN WWDG clock enable 11 1 FDCANEN USBEN 12 1 USBEN USBEN 13 1 SPI2EN SPI2 clock enable 14 1 SPI3EN SPI3 clock enable 15 1 CRSEN CRSEN 16 1 USART2EN USART2 clock enable 17 1 USART3EN USART3 clock enable 18 1 USART4EN USART4 clock enable 19 1 LPUART1EN LPUART1 clock enable 20 1 I2C1EN I2C1 clock enable 21 1 I2C2EN I2C2 clock enable 22 1 I2C3EN I2C3 clock enable 23 1 CECEN HDMI CEC clock enable 24 1 UCPD1EN UCPD1 clock enable 25 1 UCPD2EN UCPD2 clock enable 26 1 DBGEN Debug support clock enable 27 1 PWREN Power interface clock enable 28 1 DAC1EN DAC1 interface clock enable 29 1 LPTIM2EN LPTIM2 clock enable 30 1 LPTIM1EN LPTIM1 clock enable 31 1 APBENR2 APBENR2 APB peripheral clock enable register 2 0x40 0x20 read-write 0x00000000 SYSCFGEN SYSCFG, COMP and VREFBUF clock enable 0 1 TIM1EN TIM1 timer clock enable 11 1 SPI1EN SPI1 clock enable 12 1 USART1EN USART1 clock enable 14 1 TIM14EN TIM14 timer clock enable 15 1 TIM15EN TIM15 timer clock enable 16 1 TIM16EN TIM16 timer clock enable 17 1 TIM17EN TIM16 timer clock enable 18 1 ADCEN ADC clock enable 20 1 IOPSMENR IOPSMENR GPIO in Sleep mode clock enable register 0x44 0x20 read-write 0x0000003F GPIOASMEN I/O port A clock enable during Sleep mode 0 1 GPIOBSMEN I/O port B clock enable during Sleep mode 1 1 GPIOCSMEN I/O port C clock enable during Sleep mode 2 1 GPIODSMEN I/O port D clock enable during Sleep mode 3 1 GPIOESMEN I/O port E clock enable during Sleep mode 4 1 GPIOFSMEN I/O port F clock enable during Sleep mode 5 1 AHBSMENR AHBSMENR AHB peripheral clock enable in Sleep mode register 0x48 0x20 read-write 0x00051303 DMA1SMEN DMA1 clock enable during Sleep mode 0 1 DMA2SMEN DMA2 clock enable during Sleep mode 1 1 FLASHSMEN Flash memory interface clock enable during Sleep mode 8 1 SRAMSMEN SRAM clock enable during Sleep mode 9 1 CRCSMEN CRC clock enable during Sleep mode 12 1 AESSMEN AES hardware accelerator clock enable during Sleep mode 16 1 RNGSMEN Random number generator clock enable during Sleep mode 18 1 APBSMENR1 APBSMENR1 APB peripheral clock enable in Sleep mode register 1 0x4C 0x20 read-write 0xFFFFFFB7 TIM2SMEN TIM2 timer clock enable during Sleep mode 0 1 TIM3SMEN TIM3 timer clock enable during Sleep mode 1 1 TIM4SMEN TIM4 timer clock enable during Sleep mode 2 1 TIM6SMEN TIM6 timer clock enable during Sleep mode 4 1 TIM7SMEN TIM7 timer clock enable during Sleep mode 5 1 LPUART2SMEN LPUART2 clock enable 7 1 USART5SMEN USART5 clock enable 8 1 USART6SMEN USART6 clock enable 9 1 RTCAPBSMEN RTC APB clock enable during Sleep mode 10 1 WWDGSMEN WWDG clock enable during Sleep mode 11 1 FDCANSMEN FDCAN clock enable during Sleep mode 12 1 USBSMEN USB clock enable during Sleep mode 13 1 SPI2SMEN SPI2 clock enable during Sleep mode 14 1 SPI3SMEN SPI3 clock enable during Sleep mode 15 1 CRSSSMEN CRSS clock enable during Sleep mode 16 1 USART2SMEN USART2 clock enable during Sleep mode 17 1 USART3SMEN USART3 clock enable during Sleep mode 18 1 USART4SMEN USART4 clock enable during Sleep mode 19 1 LPUART1SMEN LPUART1 clock enable during Sleep mode 20 1 I2C1SMEN I2C1 clock enable during Sleep mode 21 1 I2C2SMEN I2C2 clock enable during Sleep mode 22 1 I2C3SMEN I2C3 clock enable during Sleep mode 23 1 CECSMEN HDMI CEC clock enable during Sleep mode 24 1 UCPD1SMEN UCPD1 clock enable during Sleep mode 25 1 UCPD2SMEN UCPD2 clock enable during Sleep mode 26 1 DBGSMEN Debug support clock enable during Sleep mode 27 1 PWRSMEN Power interface clock enable during Sleep mode 28 1 DAC1SMEN DAC1 interface clock enable during Sleep mode 29 1 LPTIM2SMEN Low Power Timer 2 clock enable during Sleep mode 30 1 LPTIM1SMEN Low Power Timer 1 clock enable during Sleep mode 31 1 APBSMENR2 APBSMENR2 APB peripheral clock enable in Sleep mode register 2 0x50 0x20 read-write 0x0017D801 SYSCFGSMEN SYSCFG, COMP and VREFBUF clock enable during Sleep mode 0 1 TIM1SMEN TIM1 timer clock enable during Sleep mode 11 1 SPI1SMEN SPI1 clock enable during Sleep mode 12 1 USART1SMEN USART1 clock enable during Sleep mode 14 1 TIM14SMEN TIM14 timer clock enable during Sleep mode 15 1 TIM15SMEN TIM15 timer clock enable during Sleep mode 16 1 TIM16SMEN TIM16 timer clock enable during Sleep mode 17 1 TIM17SMEN TIM16 timer clock enable during Sleep mode 18 1 ADCSMEN ADC clock enable during Sleep mode 20 1 CCIPR CCIPR Peripherals independent clock configuration register 0x54 0x20 read-write 0x00000000 USART1SEL USART1 clock source selection 0 2 USART2SEL USART2 clock source selection 2 2 USART3SEL USART3 clock source selection 4 2 CECSEL HDMI CEC clock source selection 6 1 LPUART2SEL LPUART2 clock source selection 8 2 LPUART1SEL LPUART1 clock source selection 10 2 I2C1SEL I2C1 clock source selection 12 2 I2S2SEL I2S1 clock source selection 14 2 LPTIM1SEL LPTIM1 clock source selection 18 2 LPTIM2SEL LPTIM2 clock source selection 20 2 TIM1SEL TIM1 clock source selection 22 1 TIM15SEL TIM15 clock source selection 24 1 RNGSEL RNG clock source selection 26 2 RNGDIV Division factor of RNG clock divider 28 2 ADCSEL ADCs clock source selection 30 2 CCIPR2 CCIPR2 Peripherals independent clock configuration register 2 0x58 0x20 read-write 0x00000000 I2S1SEL 2S1SEL 0 2 I2S2SEL I2S2SEL 2 2 FDCANSEL FDCANSEL 8 2 USBSEL USBSEL 12 1 BDCR BDCR RTC domain control register 0x5C 0x20 read-write 0x00000000 LSEON LSE oscillator enable 0 1 LSERDY LSE oscillator ready 1 1 read-only LSEBYP LSE oscillator bypass 2 1 LSEDRV LSE oscillator drive capability 3 2 LSECSSON CSS on LSE enable 5 1 LSECSSD CSS on LSE failure Detection 6 1 read-only RTCSEL RTC clock source selection 8 2 RTCEN RTC clock enable 15 1 BDRST RTC domain software reset 16 1 LSCOEN Low-speed clock output (LSCO) enable 24 1 LSCOSEL Low-speed clock output selection 25 1 CSR CSR Control/status register 0x60 0x20 read-write 0x00000000 LSION LSI oscillator enable 0 1 LSIRDY LSI oscillator ready 1 1 read-only RMVF Remove reset flags 23 1 OBLRSTF Option byte loader reset flag 25 1 read-only PINRSTF Pin reset flag 26 1 read-only PWRRSTF BOR or POR/PDR flag 27 1 read-only SFTRSTF Software reset flag 28 1 read-only IWDGRSTF Independent window watchdog reset flag 29 1 read-only WWDGRSTF Window watchdog reset flag 30 1 read-only LPWRRSTF Low-power reset flag 31 1 read-only RNG Random number generator RNG 0x40025000 0x0 0x400 registers AES_RNG AES and RNG global interrupts 31 RNG_CR RNG_CR control register 0x0 0x20 read-write 0x00000000 RNGEN True random number generator enable 2 1 read-write B_0x0 True random number generator is disabled. Analog noise sources are powered off and logic clocked by the RNG clock is gated. 0x0 B_0x1 True random number generator is enabled. 0x1 IE Interrupt Enable 3 1 read-write B_0x0 RNG Interrupt is disabled 0x0 B_0x1 RNG Interrupt is enabled. An interrupt is pending as soon as DRDY='1', SEIS='1' or CEIS=1 in the RNG_SR register. 0x1 CED Clock error detection The clock error detection cannot be enabled nor disabled on-the-fly when the RNG is enabled, i.e. to enable or disable CED the RNG must be disabled. 5 1 read-write B_0x0 Clock error detection is enable 0x0 B_0x1 Clock error detection is disable 0x1 RNG_SR RNG_SR status register 0x4 0x20 0x00000000 DRDY Data Ready Once the output buffer becomes empty (after reading the RNG_DR register), this bit returns to 0 until a new random value is generated. Note: The DRDY bit can rise when the peripheral is disabled (RNGEN=0 in the RNG_CR register). If IE=1 in the RNG_CR register, an interrupt is generated when DRDY=1. 0 1 read-only B_0x0 The RNG_DR register is not yet valid, no random data is available. 0x0 B_0x1 The RNG_DR register contains valid random data. 0x1 CECS Clock error current status Note: CECS bit is valid only if the CED bit in the RNG_CR register is set to 0. 1 1 read-only B_0x0 The RNG clock is correct (fRNGCLK> fHCLK/32). If the CEIS bit is set, this means that a slow clock was detected and the situation has been recovered. 0x0 B_0x1 The RNG clock is too slow (fRNGCLK< fHCLK/32). 0x1 SECS Seed error current status One of the noise source has provided more than 64 consecutive bits at a constant value (“0” or “1”), or more than 32 consecutive occurrence of two bit patterns (“01” or “10”) Both noise sources have delivered more than 32 consecutive bits at a constant value (“0” or “1”), or more than 16 consecutive occurrence of two bit patterns (“01” or “10”) 2 1 read-only B_0x0 No faulty sequence has currently been detected. If the SEIS bit is set, this means that a faulty sequence was detected and the situation has been recovered. 0x0 B_0x1 At least one of the following faulty sequence has been detected: 0x1 CEIS Clock error interrupt status This bit is set at the same time as CECS. It is cleared by writing 0. Writing 1 has no effect. An interrupt is pending if IE = 1 in the RNG_CR register. 5 1 read-write B_0x0 The RNG clock is correct (fRNGCLK> fHCLK/32) 0x0 B_0x1 The RNG has been detected too slow (fRNGCLK< fHCLK/32) 0x1 SEIS Seed error interrupt status This bit is set at the same time as SECS. It is cleared by writing 0. Writing 1 has no effect. An interrupt is pending if IE = 1 in the RNG_CR register. 6 1 read-write B_0x0 No faulty sequence detected 0x0 B_0x1 At least one faulty sequence has been detected. See SECS bit description for details. 0x1 RNG_DR RNG_DR data register 0x8 0x20 read-only 0x00000000 RNDATA Random data 0 32 RTC Real-time clock RTC 0x40002800 0x0 0x400 registers RTC_TAMP RTC and TAMP interrupts 2 RTC_TR RTC_TR RTC time register 0x0 0x20 0x00000007 0xFFFFFFFF SU Second units in BCD format 0 4 read-write ST Second tens in BCD format 4 3 read-write MNU Minute units in BCD format 8 4 read-write MNT Minute tens in BCD format 12 3 read-write HU Hour units in BCD format 16 4 read-write HT Hour tens in BCD format 20 2 read-write PM AM/PM notation 22 1 read-write B_0x0 AM or 24-hour format 0x0 B_0x1 PM 0x1 RTC_DR RTC_DR RTC date register 0x4 0x20 0x00002101 0xFFFFFFFF DU Date units in BCD format 0 4 read-write DT Date tens in BCD format 4 2 read-write MU Month units in BCD format 8 4 read-write MT Month tens in BCD format 12 1 read-write WDU Week day units ... 13 3 read-write B_0x0 forbidden 0x0 B_0x1 Monday 0x1 B_0x7 Sunday 0x7 YU Year units in BCD format 16 4 read-write YT Year tens in BCD format 20 4 read-write RTC_SSR RTC_SSR RTC sub second register 0x8 0x20 0x00000000 0xFFFFFFFF SS Sub second value SS[15:0] is the value in the synchronous prescaler counter. The fraction of a second is given by the formula below: Second fraction = (PREDIV_S - SS) / (PREDIV_S + 1) Note: SS can be larger than PREDIV_S only after a shift operation. In that case, the correct time/date is one second less than as indicated by RTC_TR/RTC_DR. 0 16 read-only RTC_ICSR RTC_ICSR RTC initialization control and status register 0xc 0x20 0x00000007 0xFFFFFFFF ALRAWF Alarm A write flag This bit is set by hardware when alarm A values can be changed, after the ALRAE bit has been set to 0 in RTC_CR. It is cleared by hardware in initialization mode. 0 1 read-only B_0x0 Alarm A update not allowed 0x0 B_0x1 Alarm A update allowed 0x1 ALRBWF Alarm B write flag This bit is set by hardware when alarm B values can be changed, after the ALRBE bit has been set to 0 in RTC_CR. It is cleared by hardware in initialization mode. 1 1 read-only B_0x0 Alarm B update not allowed 0x0 B_0x1 Alarm B update allowed 0x1 WUTWF Wakeup timer write flag This bit is set by hardware when WUT value can be changed, after the WUTE bit has been set to 0 in RTC_CR. It is cleared by hardware in initialization mode. 2 1 read-only B_0x0 Wakeup timer configuration update not allowed except in initialization mode 0x0 B_0x1 Wakeup timer configuration update allowed 0x1 SHPF Shift operation pending This flag is set by hardware as soon as a shift operation is initiated by a write to the RTC_SHIFTR register. It is cleared by hardware when the corresponding shift operation has been executed. Writing to the SHPF bit has no effect. 3 1 read-only B_0x0 No shift operation is pending 0x0 B_0x1 A shift operation is pending 0x1 INITS Initialization status flag This bit is set by hardware when the calendar year field is different from 0 (RTC domain reset state). 4 1 read-only B_0x0 Calendar has not been initialized 0x0 B_0x1 Calendar has been initialized 0x1 RSF Registers synchronization flag This bit is set by hardware each time the calendar registers are copied into the shadow registers (RTC_SSRx, RTC_TRx and RTC_DRx). This bit is cleared by hardware in initialization mode, while a shift operation is pending (SHPF = 1), or when in bypass shadow register mode (BYPSHAD = 1). This bit can also be cleared by software. It is cleared either by software or by hardware in initialization mode. 5 1 read-write B_0x0 Calendar shadow registers not yet synchronized 0x0 B_0x1 Calendar shadow registers synchronized 0x1 INITF Initialization flag When this bit is set to 1, the RTC is in initialization state, and the time, date and prescaler registers can be updated. 6 1 read-only B_0x0 Calendar registers update is not allowed 0x0 B_0x1 Calendar registers update is allowed 0x1 INIT Initialization mode 7 1 read-write B_0x0 Free running mode 0x0 B_0x1 Initialization mode used to program time and date register (RTC_TR and RTC_DR), and prescaler register (RTC_PRER). Counters are stopped and start counting from the new value when INIT is reset. 0x1 RECALPF Recalibration pending Flag The RECALPF status flag is automatically set to 1 when software writes to the RTC_CALR register, indicating that the RTC_CALR register is blocked. When the new calibration settings are taken into account, this bit returns to 0. Refer to . 16 1 read-only RTC_PRER RTC_PRER RTC prescaler register 0x10 0x20 0x007F00FF 0xFFFFFFFF PREDIV_S Synchronous prescaler factor This is the synchronous division factor: ck_spre frequency = ck_apre frequency/(PREDIV_S+1) 0 15 read-write PREDIV_A Asynchronous prescaler factor This is the asynchronous division factor: ck_apre frequency = RTCCLK frequency/(PREDIV_A+1) 16 7 read-write RTC_WUTR RTC_WUTR RTC wakeup timer register 0x14 0x20 0x0000FFFF 0xFFFFFFFF WUT Wakeup auto-reload value bits When the wakeup timer is enabled (WUTE set to 1), the WUTF flag is set every (WUT[15:0] + 1) ck_wut cycles. The ck_wut period is selected through WUCKSEL[2:0] bits of the RTC_CR register. When WUCKSEL[2] = 1, the wakeup timer becomes 17-bits and WUCKSEL[1] effectively becomes WUT[16] the most-significant bit to be reloaded into the timer. The first assertion of WUTF occurs between WUT and (WUT + 1) ck_wut cycles after WUTE is set. Setting WUT[15:0] to 0x0000 with WUCKSEL[2:0] = 011 (RTCCLK/2) is forbidden. 0 16 read-write RTC_CR RTC_CR RTC control register 0x18 0x20 0x00000000 0xFFFFFFFF WUCKSEL ck_wut wakeup clock selection 10x: ck_spre (usually 1 Hz) clock is selected 11x: ck_spre (usually 1 Hz) clock is selected and 216 is added to the WUT counter value 0 3 read-write B_0x0 RTC/16 clock is selected 0x0 B_0x1 RTC/8 clock is selected 0x1 B_0x2 RTC/4 clock is selected 0x2 B_0x3 RTC/2 clock is selected 0x3 TSEDGE Timestamp event active edge TSE must be reset when TSEDGE is changed to avoid unwanted TSF setting. 3 1 read-write B_0x0 RTC_TS input rising edge generates a timestamp event 0x0 B_0x1 RTC_TS input falling edge generates a timestamp event 0x1 REFCKON RTC_REFIN reference clock detection enable (50 or 60 Hz) Note: PREDIV_S must be 0x00FF. 4 1 read-write B_0x0 RTC_REFIN detection disabled 0x0 B_0x1 RTC_REFIN detection enabled 0x1 BYPSHAD Bypass the shadow registers Note: If the frequency of the APB1 clock is less than seven times the frequency of RTCCLK, BYPSHAD must be set to 1. 5 1 read-write B_0x0 Calendar values (when reading from RTC_SSR, RTC_TR, and RTC_DR) are taken from the shadow registers, which are updated once every two RTCCLK cycles. 0x0 B_0x1 Calendar values (when reading from RTC_SSR, RTC_TR, and RTC_DR) are taken directly from the calendar counters. 0x1 FMT Hour format 6 1 read-write B_0x0 24 hour/day format 0x0 B_0x1 AM/PM hour format 0x1 ALRAE Alarm A enable 8 1 read-write B_0x0 Alarm A disabled 0x0 B_0x1 Alarm A enabled 0x1 ALRBE Alarm B enable 9 1 read-write B_0x0 Alarm B disabled 0x0 B_0x1 Alarm B enabled 0x1 WUTE Wakeup timer enable Note: When the wakeup timer is disabled, wait for WUTWF=1 before enabling it again. 10 1 read-write B_0x0 Wakeup timer disabled 0x0 B_0x1 Wakeup timer enabled 0x1 TSE timestamp enable 11 1 read-write B_0x0 timestamp disable 0x0 B_0x1 timestamp enable 0x1 ALRAIE Alarm A interrupt enable 12 1 read-write B_0x0 Alarm A interrupt disabled 0x0 B_0x1 Alarm A interrupt enabled 0x1 ALRBIE Alarm B interrupt enable 13 1 read-write B_0x0 Alarm B interrupt disable 0x0 B_0x1 Alarm B interrupt enable 0x1 WUTIE Wakeup timer interrupt enable 14 1 read-write B_0x0 Wakeup timer interrupt disabled 0x0 B_0x1 Wakeup timer interrupt enabled 0x1 TSIE Timestamp interrupt enable 15 1 read-write B_0x0 Timestamp interrupt disable 0x0 B_0x1 Timestamp interrupt enable 0x1 ADD1H Add 1 hour (summer time change) When this bit is set outside initialization mode, 1 hour is added to the calendar time. This bit is always read as 0. 16 1 write-only B_0x0 No effect 0x0 B_0x1 Adds 1 hour to the current time. This can be used for summer time change 0x1 SUB1H Subtract 1 hour (winter time change) When this bit is set outside initialization mode, 1 hour is subtracted to the calendar time if the current hour is not 0. This bit is always read as 0. Setting this bit has no effect when current hour is 0. 17 1 write-only B_0x0 No effect 0x0 B_0x1 Subtracts 1 hour to the current time. This can be used for winter time change. 0x1 BKP Backup This bit can be written by the user to memorize whether the daylight saving time change has been performed or not. 18 1 read-write COSEL Calibration output selection When COE = 1, this bit selects which signal is output on CALIB. These frequencies are valid for RTCCLK at 32.768 kHz and prescalers at their default values (PREDIV_A = 127 and PREDIV_S = 255). Refer to . 19 1 read-write B_0x0 Calibration output is 512 Hz 0x0 B_0x1 Calibration output is 1 Hz 0x1 POL Output polarity This bit is used to configure the polarity of TAMPALRM output. 20 1 read-write B_0x0 The pin is high when ALRAF/ALRBF/WUTF is asserted (depending on OSEL[1:0]), or when a TAMPxF/ITAMPxF is asserted (if TAMPOE = 1). 0x0 B_0x1 The pin is low when ALRAF/ALRBF/WUTF is asserted (depending on OSEL[1:0]), or when a TAMPxF/ITAMPxF is asserted (if TAMPOE = 1). 0x1 OSEL Output selection These bits are used to select the flag to be routed to TAMPALRM output. 21 2 read-write B_0x0 Output disabled 0x0 B_0x1 Alarm A output enabled 0x1 B_0x2 Alarm B output enabled 0x2 B_0x3 Wakeup output enabled 0x3 COE Calibration output enable This bit enables the CALIB output 23 1 read-write B_0x0 Calibration output disabled 0x0 B_0x1 Calibration output enabled 0x1 ITSE timestamp on internal event enable 24 1 read-write B_0x0 internal event timestamp disabled 0x0 B_0x1 internal event timestamp enabled 0x1 TAMPTS Activate timestamp on tamper detection event TAMPTS is valid even if TSE = 0 in the RTC_CR register. Timestamp flag is set after the tamper flags, therefore if TAMPTS and TSIE are set, it is recommended to disable the tamper interrupts in order to avoid servicing 2 interrupts. 25 1 read-write B_0x0 Tamper detection event does not cause a RTC timestamp to be saved 0x0 B_0x1 Save RTC timestamp on tamper detection event 0x1 TAMPOE Tamper detection output enable on TAMPALRM 26 1 read-write B_0x0 The tamper flag is not routed on TAMPALRM 0x0 B_0x1 The tamper flag is routed on TAMPALRM, combined with the signal provided by OSEL and with the polarity provided by POL. 0x1 TAMPALRM_PU TAMPALRM pull-up enable 29 1 read-write B_0x0 No pull-up is applied on TAMPALRM output 0x0 B_0x1 A pull-up is applied on TAMPALRM output 0x1 TAMPALRM_TYPE TAMPALRM output type 30 1 read-write B_0x0 TAMPALRM is push-pull output 0x0 B_0x1 TAMPALRM is open-drain output 0x1 OUT2EN RTC_OUT2 output enable Setting this bit allows to remap the RTC outputs on RTC_OUT2 as follows: OUT2EN = 0: RTC output 2 disable If OSEL ≠ 00 or TAMPOE = 1: TAMPALRM is output on RTC_OUT1 If OSEL = 00 and TAMPOE = 0 and COE = 1: CALIB is output on RTC_OUT1 OUT2EN = 1: RTC output 2 enable If (OSEL ≠ 00 or TAMPOE = 1) and COE = 0: TAMPALRM is output on RTC_OUT2 If OSEL = 00 and TAMPOE = 0 and COE = 1: CALIB is output on RTC_OUT2 If (OSEL≠ 00 or TAMPOE = 1) and COE = 1: CALIB is output on RTC_OUT2 and TAMPALRM is output on RTC_OUT1. 31 1 read-write RTC_WPR RTC_WPR RTC write protection register 0x24 0x20 0x00000000 0xFFFFFFFF KEY Write protection key This byte is written by software. Reading this byte always returns 0x00. Refer to for a description of how to unlock RTC register write protection. 0 8 write-only RTC_CALR RTC_CALR RTC calibration register 0x28 0x20 0x00000000 0xFFFFFFFF CALM Calibration minus The frequency of the calendar is reduced by masking CALM out of 220 RTCCLK pulses (32 seconds if the input frequency is 32768 Hz). This decreases the frequency of the calendar with a resolution of 0.9537 ppm. To increase the frequency of the calendar, this feature should be used in conjunction with CALP. See . 0 9 read-write CALW16 Use a 16-second calibration cycle period When CALW16 is set to 1, the 16-second calibration cycle period is selected. This bit must not be set to 1 if CALW8 = 1. Note: CALM[0] is stuck at 0 when CALW16 = 1. Refer to calibration. 13 1 read-write CALW8 Use an 8-second calibration cycle period When CALW8 is set to 1, the 8-second calibration cycle period is selected. Note: CALM[1:0] are stuck at 00 when CALW8 = 1. Refer to digital calibration. 14 1 read-write CALP Increase frequency of RTC by 488.5 ppm This feature is intended to be used in conjunction with CALM, which lowers the frequency of the calendar with a fine resolution. if the input frequency is 32768 Hz, the number of RTCCLK pulses added during a 32-second window is calculated as follows: (512 × CALP) - CALM. Refer to . 15 1 read-write B_0x0 No RTCCLK pulses are added. 0x0 B_0x1 One RTCCLK pulse is effectively inserted every 211 pulses (frequency increased by 488.5 ppm). 0x1 RTC_SHIFTR RTC_SHIFTR RTC shift control register 0x2c 0x20 0x00000000 0xFFFFFFFF SUBFS Subtract a fraction of a second These bits are write only and is always read as zero. Writing to this bit has no effect when a shift operation is pending (when SHPF = 1, in RTC_ICSR). The value which is written to SUBFS is added to the synchronous prescaler counter. Since this counter counts down, this operation effectively subtracts from (delays) the clock by: Delay (seconds) = SUBFS / (PREDIV_S + 1) A fraction of a second can effectively be added to the clock (advancing the clock) when the ADD1S function is used in conjunction with SUBFS, effectively advancing the clock by: Advance (seconds) = (1 - (SUBFS / (PREDIV_S + 1))). Note: Writing to SUBFS causes RSF to be cleared. Software can then wait until RSF = 1 to be sure that the shadow registers have been updated with the shifted time. 0 15 write-only ADD1S Add one second This bit is write only and is always read as zero. Writing to this bit has no effect when a shift operation is pending (when SHPF = 1, in RTC_ICSR). This function is intended to be used with SUBFS (see description below) in order to effectively add a fraction of a second to the clock in an atomic operation. 31 1 write-only B_0x0 No effect 0x0 B_0x1 Add one second to the clock/calendar 0x1 RTC_TSTR RTC_TSTR RTC timestamp time register 0x30 0x20 0x00000000 0xFFFFFFFF SU Second units in BCD format. 0 4 read-only ST Second tens in BCD format. 4 3 read-only MNU Minute units in BCD format. 8 4 read-only MNT Minute tens in BCD format. 12 3 read-only HU Hour units in BCD format. 16 4 read-only HT Hour tens in BCD format. 20 2 read-only PM AM/PM notation 22 1 read-only B_0x0 AM or 24-hour format 0x0 B_0x1 PM 0x1 RTC_TSDR RTC_TSDR RTC timestamp date register 0x34 0x20 0x00000000 0xFFFFFFFF DU Date units in BCD format 0 4 read-only DT Date tens in BCD format 4 2 read-only MU Month units in BCD format 8 4 read-only MT Month tens in BCD format 12 1 read-only WDU Week day units 13 3 read-only RTC_TSSSR RTC_TSSSR RTC timestamp sub second register 0x38 0x20 0x00000000 0xFFFFFFFF SS Sub second value SS[15:0] is the value of the synchronous prescaler counter when the timestamp event occurred. 0 16 read-only RTC_ALRMAR RTC_ALRMAR RTC alarm A register 0x40 0x20 0x00000000 0xFFFFFFFF SU Second units in BCD format. 0 4 read-write ST Second tens in BCD format. 4 3 read-write MSK1 Alarm A seconds mask 7 1 read-write B_0x0 Alarm A set if the seconds match 0x0 B_0x1 Seconds don't care in alarm A comparison 0x1 MNU Minute units in BCD format 8 4 read-write MNT Minute tens in BCD format 12 3 read-write MSK2 Alarm A minutes mask 15 1 read-write B_0x0 Alarm A set if the minutes match 0x0 B_0x1 Minutes don't care in alarm A comparison 0x1 HU Hour units in BCD format 16 4 read-write HT Hour tens in BCD format 20 2 read-write PM AM/PM notation 22 1 read-write B_0x0 AM or 24-hour format 0x0 B_0x1 PM 0x1 MSK3 Alarm A hours mask 23 1 read-write B_0x0 Alarm A set if the hours match 0x0 B_0x1 Hours don't care in alarm A comparison 0x1 DU Date units or day in BCD format 24 4 read-write DT Date tens in BCD format 28 2 read-write WDSEL Week day selection 30 1 read-write B_0x0 DU[3:0] represents the date units 0x0 B_0x1 DU[3:0] represents the week day. DT[1:0] is don't care. 0x1 MSK4 Alarm A date mask 31 1 read-write B_0x0 Alarm A set if the date/day match 0x0 B_0x1 Date/day don't care in alarm A comparison 0x1 RTC_ALRMASSR RTC_ALRMASSR RTC alarm A sub second register 0x44 0x20 0x00000000 0xFFFFFFFF SS Sub seconds value This value is compared with the contents of the synchronous prescaler counter to determine if alarm A is to be activated. Only bits 0 up MASKSS-1 are compared. 0 15 read-write MASKSS Mask the most-significant bits starting at this bit 2: SS[14:2] are don't care in alarm A comparison. Only SS[1:0] are compared. 3: SS[14:3] are don't care in alarm A comparison. Only SS[2:0] are compared. ... 12: SS[14:12] are don't care in alarm A comparison. SS[11:0] are compared. 13: SS[14:13] are don't care in alarm A comparison. SS[12:0] are compared. 14: SS[14] is don't care in alarm A comparison. SS[13:0] are compared. 15: All 15 SS bits are compared and must match to activate alarm. The overflow bits of the synchronous counter (bits 15) is never compared. This bit can be different from 0 only after a shift operation. Note: The overflow bits of the synchronous counter (bits 15) is never compared. This bit can be different from 0 only after a shift operation. 24 4 read-write B_0x0 No comparison on sub seconds for alarm A. The alarm is set when the seconds unit is incremented (assuming that the rest of the fields match). 0x0 B_0x1 SS[14:1] are don't care in alarm A comparison. Only SS[0] is compared. 0x1 RTC_ALRMBR RTC_ALRMBR RTC alarm B register 0x48 0x20 0x00000000 0xFFFFFFFF SU Second units in BCD format 0 4 read-write ST Second tens in BCD format 4 3 read-write MSK1 Alarm B seconds mask 7 1 read-write B_0x0 Alarm B set if the seconds match 0x0 B_0x1 Seconds don't care in alarm B comparison 0x1 MNU Minute units in BCD format 8 4 read-write MNT Minute tens in BCD format 12 3 read-write MSK2 Alarm B minutes mask 15 1 read-write B_0x0 Alarm B set if the minutes match 0x0 B_0x1 Minutes don't care in alarm B comparison 0x1 HU Hour units in BCD format 16 4 read-write HT Hour tens in BCD format 20 2 read-write PM AM/PM notation 22 1 read-write B_0x0 AM or 24-hour format 0x0 B_0x1 PM 0x1 MSK3 Alarm B hours mask 23 1 read-write B_0x0 Alarm B set if the hours match 0x0 B_0x1 Hours don't care in alarm B comparison 0x1 DU Date units or day in BCD format 24 4 read-write DT Date tens in BCD format 28 2 read-write WDSEL Week day selection 30 1 read-write B_0x0 DU[3:0] represents the date units 0x0 B_0x1 DU[3:0] represents the week day. DT[1:0] is don't care. 0x1 MSK4 Alarm B date mask 31 1 read-write B_0x0 Alarm B set if the date and day match 0x0 B_0x1 Date and day don't care in alarm B comparison 0x1 RTC_ALRMBSSR RTC_ALRMBSSR RTC alarm B sub second register 0x4c 0x20 0x00000000 0xFFFFFFFF SS Sub seconds value This value is compared with the contents of the synchronous prescaler counter to determine if alarm B is to be activated. Only bits 0 up to MASKSS-1 are compared. 0 15 read-write MASKSS Mask the most-significant bits starting at this bit ... The overflow bits of the synchronous counter (bits 15) is never compared. This bit can be different from 0 only after a shift operation. 24 4 read-write B_0x0 No comparison on sub seconds for alarm B. The alarm is set when the seconds unit is incremented (assuming that the rest of the fields match). 0x0 B_0x1 SS[14:1] are don't care in alarm B comparison. Only SS[0] is compared. 0x1 B_0x2 SS[14:2] are don't care in alarm B comparison. Only SS[1:0] are compared. 0x2 B_0x3 SS[14:3] are don't care in alarm B comparison. Only SS[2:0] are compared. 0x3 B_0xC SS[14:12] are don't care in alarm B comparison. SS[11:0] are compared. 0xC B_0xD SS[14:13] are don't care in alarm B comparison. SS[12:0] are compared. 0xD B_0xE SS[14] is don't care in alarm B comparison. SS[13:0] are compared. 0xE B_0xF All 15 SS bits are compared and must match to activate alarm. 0xF RTC_SR RTC_SR RTC status register 0x50 0x20 0x00000000 0xFFFFFFFF ALRAF Alarm A flag This flag is set by hardware when the time/date registers (RTC_TR and RTC_DR) match the alarm A register (RTC_ALRMAR). 0 1 read-only ALRBF Alarm B flag This flag is set by hardware when the time/date registers (RTC_TR and RTC_DR) match the alarm B register (RTC_ALRMBR). 1 1 read-only WUTF Wakeup timer flag This flag is set by hardware when the wakeup auto-reload counter reaches 0. This flag must be cleared by software at least 1.5 RTCCLK periods before WUTF is set to 1 again. 2 1 read-only TSF Timestamp flag This flag is set by hardware when a timestamp event occurs. If ITSF flag is set, TSF must be cleared together with ITSF. 3 1 read-only TSOVF Timestamp overflow flag This flag is set by hardware when a timestamp event occurs while TSF is already set. It is recommended to check and then clear TSOVF only after clearing the TSF bit. Otherwise, an overflow might not be noticed if a timestamp event occurs immediately before the TSF bit is cleared. 4 1 read-only ITSF Internal timestamp flag This flag is set by hardware when a timestamp on the internal event occurs. 5 1 read-only RTC_MISR RTC_MISR RTC masked interrupt status register 0x54 0x20 0x00000000 0xFFFFFFFF ALRAMF Alarm A masked flag This flag is set by hardware when the alarm A interrupt occurs. 0 1 read-only ALRBMF Alarm B masked flag This flag is set by hardware when the alarm B interrupt occurs. 1 1 read-only WUTMF Wakeup timer masked flag This flag is set by hardware when the wakeup timer interrupt occurs. This flag must be cleared by software at least 1.5 RTCCLK periods before WUTF is set to 1 again. 2 1 read-only TSMF Timestamp masked flag This flag is set by hardware when a timestamp interrupt occurs. If ITSF flag is set, TSF must be cleared together with ITSF. 3 1 read-only TSOVMF Timestamp overflow masked flag This flag is set by hardware when a timestamp interrupt occurs while TSMF is already set. It is recommended to check and then clear TSOVF only after clearing the TSF bit. Otherwise, an overflow might not be noticed if a timestamp event occurs immediately before the TSF bit is cleared. 4 1 read-only ITSMF Internal timestamp masked flag This flag is set by hardware when a timestamp on the internal event occurs and timestampinterrupt is raised. 5 1 read-only RTC_SCR RTC_SCR RTC status clear register 0x5c 0x20 0x00000000 0xFFFFFFFF CALRAF Clear alarm A flag Writing 1 in this bit clears the ALRBF bit in the RTC_SR register. 0 1 write-only CALRBF Clear alarm B flag Writing 1 in this bit clears the ALRBF bit in the RTC_SR register. 1 1 write-only CWUTF Clear wakeup timer flag Writing 1 in this bit clears the WUTF bit in the RTC_SR register. 2 1 write-only CTSF Clear timestamp flag Writing 1 in this bit clears the TSOVF bit in the RTC_SR register. If ITSF flag is set, TSF must be cleared together with ITSF by setting CRSF and CITSF. 3 1 write-only CTSOVF Clear timestamp overflow flag Writing 1 in this bit clears the TSOVF bit in the RTC_SR register. It is recommended to check and then clear TSOVF only after clearing the TSF bit. Otherwise, an overflow might not be noticed if a timestamp event occurs immediately before the TSF bit is cleared. 4 1 write-only CITSF Clear internal timestamp flag Writing 1 in this bit clears the ITSF bit in the RTC_SR register. 5 1 write-only SPI1 Serial peripheral interface SPI 0x40013000 0x0 0x400 registers SPI1 SPI1 gloabl interrupt 25 SPI_CR1 SPI_CR1 SPI control register 1 0x0 16 0x00000000 0x0000FFFF CPHA Clock phase Note: This bit should not be changed when communication is ongoing. This bit is not used in I2S mode and SPI TI mode except the case when CRC is applied at TI mode. 0 1 read-write B_0x0 The first clock transition is the first data capture edge 0x0 B_0x1 The second clock transition is the first data capture edge 0x1 CPOL Clock polarity Note: This bit should not be changed when communication is ongoing. This bit is not used in I2S mode and SPI TI mode except the case when CRC is applied at TI mode. 1 1 read-write B_0x0 CK to 0 when idle 0x0 B_0x1 CK to 1 when idle 0x1 MSTR Master selection Note: This bit should not be changed when communication is ongoing. This bit is not used in I2S mode. 2 1 read-write B_0x0 Slave configuration 0x0 B_0x1 Master configuration 0x1 BR Baud rate control Note: These bits should not be changed when communication is ongoing. These bits are not used in I2S mode. 3 3 read-write B_0x0 fPCLK/2 0x0 B_0x1 fPCLK/4 0x1 B_0x2 fPCLK/8 0x2 B_0x3 fPCLK/16 0x3 B_0x4 fPCLK/32 0x4 B_0x5 fPCLK/64 0x5 B_0x6 fPCLK/128 0x6 B_0x7 fPCLK/256 0x7 SPE SPI enable Note: When disabling the SPI, follow the procedure described in SPI on page 1021. This bit is not used in I2S mode. 6 1 read-write B_0x0 Peripheral disabled 0x0 B_0x1 Peripheral enabled 0x1 LSBFIRST Frame format Note: 1. This bit should not be changed when communication is ongoing. 2. This bit is not used in I2S mode and SPI TI mode. 7 1 read-write B_0x0 data is transmitted / received with the MSB first 0x0 B_0x1 data is transmitted / received with the LSB first 0x1 SSI Internal slave select This bit has an effect only when the SSM bit is set. The value of this bit is forced onto the NSS pin and the I/O value of the NSS pin is ignored. Note: This bit is not used in I2S mode and SPI TI mode. 8 1 read-write SSM Software slave management When the SSM bit is set, the NSS pin input is replaced with the value from the SSI bit. Note: This bit is not used in I2S mode and SPI TI mode. 9 1 read-write B_0x0 Software slave management disabled 0x0 B_0x1 Software slave management enabled 0x1 RXONLY Receive only mode enabled. This bit enables simplex communication using a single unidirectional line to receive data exclusively. Keep BIDIMODE bit clear when receive only mode is active.This bit is also useful in a multislave system in which this particular slave is not accessed, the output from the accessed slave is not corrupted. Note: This bit is not used in I2S mode. 10 1 read-write B_0x0 Full-duplex (Transmit and receive) 0x0 B_0x1 Output disabled (Receive-only mode) 0x1 CRCL CRC length This bit is set and cleared by software to select the CRC length. Note: This bit should be written only when SPI is disabled (SPE = '0’) for correct operation. This bit is not used in I2S mode. 11 1 read-write B_0x0 8-bit CRC length 0x0 B_0x1 16-bit CRC length 0x1 CRCNEXT Transmit CRC next Note: This bit has to be written as soon as the last data is written in the SPI_DR register. This bit is not used in I2S mode. 12 1 read-write B_0x0 Next transmit value is from Tx buffer. 0x0 B_0x1 Next transmit value is from Tx CRC register. 0x1 CRCEN Hardware CRC calculation enable Note: This bit should be written only when SPI is disabled (SPE = '0’) for correct operation. This bit is not used in I2S mode. 13 1 read-write B_0x0 CRC calculation disabled 0x0 B_0x1 CRC calculation enabled 0x1 BIDIOE Output enable in bidirectional mode This bit combined with the BIDIMODE bit selects the direction of transfer in bidirectional mode. Note: In master mode, the MOSI pin is used and in slave mode, the MISO pin is used. This bit is not used in I2S mode. 14 1 read-write B_0x0 Output disabled (receive-only mode) 0x0 B_0x1 Output enabled (transmit-only mode) 0x1 BIDIMODE Bidirectional data mode enable. This bit enables half-duplex communication using common single bidirectional data line. Keep RXONLY bit clear when bidirectional mode is active. Note: This bit is not used in I2S mode. 15 1 read-write B_0x0 2-line unidirectional data mode selected 0x0 B_0x1 1-line bidirectional data mode selected 0x1 SPI_CR2 SPI_CR2 SPI control register 2 0x4 16 0x00000700 0x0000FFFF RXDMAEN Rx buffer DMA enable When this bit is set, a DMA request is generated whenever the RXNE flag is set. 0 1 read-write B_0x0 Rx buffer DMA disabled 0x0 B_0x1 Rx buffer DMA enabled 0x1 TXDMAEN Tx buffer DMA enable When this bit is set, a DMA request is generated whenever the TXE flag is set. 1 1 read-write B_0x0 Tx buffer DMA disabled 0x0 B_0x1 Tx buffer DMA enabled 0x1 SSOE SS output enable Note: This bit is not used in I2S mode and SPI TI mode. 2 1 read-write B_0x0 SS output is disabled in master mode and the SPI interface can work in multimaster configuration 0x0 B_0x1 SS output is enabled in master mode and when the SPI interface is enabled. The SPI interface cannot work in a multimaster environment. 0x1 NSSP NSS pulse management This bit is used in master mode only. it allows the SPI to generate an NSS pulse between two consecutive data when doing continuous transfers. In the case of a single data transfer, it forces the NSS pin high level after the transfer. It has no meaning if CPHA = ’1’, or FRF = ’1’. Note: 1. This bit must be written only when the SPI is disabled (SPE=0). 2. This bit is not used in I2S mode and SPI TI mode. 3 1 read-write B_0x0 No NSS pulse 0x0 B_0x1 NSS pulse generated 0x1 FRF Frame format 1 SPI TI mode Note: This bit must be written only when the SPI is disabled (SPE=0). This bit is not used in I2S mode. 4 1 read-write B_0x0 SPI Motorola mode 0x0 ERRIE Error interrupt enable This bit controls the generation of an interrupt when an error condition occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode and UDR, OVR, and FRE in I2S mode). 5 1 read-write B_0x0 Error interrupt is masked 0x0 B_0x1 Error interrupt is enabled 0x1 RXNEIE RX buffer not empty interrupt enable 6 1 read-write B_0x0 RXNE interrupt masked 0x0 B_0x1 RXNE interrupt not masked. Used to generate an interrupt request when the RXNE flag is set. 0x1 TXEIE Tx buffer empty interrupt enable 7 1 read-write B_0x0 TXE interrupt masked 0x0 B_0x1 TXE interrupt not masked. Used to generate an interrupt request when the TXE flag is set. 0x1 DS Data size These bits configure the data length for SPI transfers. If software attempts to write one of the “Not used” values, they are forced to the value “0111” (8-bit) Note: These bits are not used in I2S mode. 8 4 read-write B_0x0 Not used 0x0 B_0x1 Not used 0x1 B_0x2 Not used 0x2 B_0x3 4-bit 0x3 B_0x4 5-bit 0x4 B_0x5 6-bit 0x5 B_0x6 7-bit 0x6 B_0x7 8-bit 0x7 B_0x8 9-bit 0x8 B_0x9 10-bit 0x9 B_0xA 11-bit 0xA B_0xB 12-bit 0xB B_0xC 13-bit 0xC B_0xD 14-bit 0xD B_0xE 15-bit 0xE B_0xF 16-bit 0xF FRXTH FIFO reception threshold This bit is used to set the threshold of the RXFIFO that triggers an RXNE event Note: This bit is not used in I2S mode. 12 1 read-write B_0x0 RXNE event is generated if the FIFO level is greater than or equal to 1/2 (16-bit) 0x0 B_0x1 RXNE event is generated if the FIFO level is greater than or equal to 1/4 (8-bit) 0x1 LDMA_RX Last DMA transfer for reception This bit is used in data packing mode, to define if the total number of data to receive by DMA is odd or even. It has significance only if the RXDMAEN bit in the SPI_CR2 register is set and if packing mode is used (data length =< 8-bit and write access to SPI_DR is 16-bit wide). It has to be written when the SPI is disabled (SPE = 0 in the SPI_CR1 register). Note: Refer to if the CRCEN bit is set. This bit is not used in I²S mode. 13 1 read-write B_0x0 Number of data to transfer is even 0x0 B_0x1 Number of data to transfer is odd 0x1 LDMA_TX Last DMA transfer for transmission This bit is used in data packing mode, to define if the total number of data to transmit by DMA is odd or even. It has significance only if the TXDMAEN bit in the SPI_CR2 register is set and if packing mode is used (data length =< 8-bit and write access to SPI_DR is 16-bit wide). It has to be written when the SPI is disabled (SPE = 0 in the SPI_CR1 register). Note: Refer to if the CRCEN bit is set. This bit is not used in I²S mode. 14 1 read-write B_0x0 Number of data to transfer is even 0x0 B_0x1 Number of data to transfer is odd 0x1 SPI_SR SPI_SR SPI status register 0x8 16 0x00000002 0x0000FFFF RXNE Receive buffer not empty 0 1 read-only B_0x0 Rx buffer empty 0x0 B_0x1 Rx buffer not empty 0x1 TXE Transmit buffer empty 1 1 read-only B_0x0 Tx buffer not empty 0x0 B_0x1 Tx buffer empty 0x1 CHSIDE Channel side Note: This bit is not used in SPI mode. It has no significance in PCM mode. 2 1 read-only B_0x0 Channel Left has to be transmitted or has been received 0x0 B_0x1 Channel Right has to be transmitted or has been received 0x1 UDR Underrun flag This flag is set by hardware and reset by a software sequence. Refer to page 1057 for the software sequence. Note: This bit is not used in SPI mode. 3 1 read-only B_0x0 No underrun occurred 0x0 B_0x1 Underrun occurred 0x1 CRCERR CRC error flag Note: This flag is set by hardware and cleared by software writing 0. This bit is not used in I2S mode. 4 1 read-write B_0x0 CRC value received matches the SPI_RXCRCR value 0x0 B_0x1 CRC value received does not match the SPI_RXCRCR value 0x1 MODF Mode fault This flag is set by hardware and reset by a software sequence. Refer to (MODF) on page 1031 for the software sequence. Note: This bit is not used in I2S mode. 5 1 read-only B_0x0 No mode fault occurred 0x0 B_0x1 Mode fault occurred 0x1 OVR Overrun flag This flag is set by hardware and reset by a software sequence. Refer to page 1057 for the software sequence. 6 1 read-only B_0x0 No overrun occurred 0x0 B_0x1 Overrun occurred 0x1 BSY Busy flag This flag is set and cleared by hardware. Note: The BSY flag must be used with caution: refer to and . 7 1 read-only B_0x0 SPI (or I2S) not busy 0x0 B_0x1 SPI (or I2S) is busy in communication or Tx buffer is not empty 0x1 FRE Frame format error This flag is used for SPI in TI slave mode and I2S slave mode. Refer to error flags and . This flag is set by hardware and reset when SPI_SR is read by software. 8 1 read-only B_0x0 No frame format error 0x0 B_0x1 A frame format error occurred 0x1 FRLVL FIFO reception level These bits are set and cleared by hardware. Note: These bits are not used in I²S mode and in SPI receive-only mode while CRC calculation is enabled. 9 2 read-only B_0x0 FIFO empty 0x0 B_0x1 1/4 FIFO 0x1 B_0x2 1/2 FIFO 0x2 B_0x3 FIFO full 0x3 FTLVL FIFO transmission level These bits are set and cleared by hardware. Note: This bit is not used in I2S mode. 11 2 read-only B_0x0 FIFO empty 0x0 B_0x1 1/4 FIFO 0x1 B_0x2 1/2 FIFO 0x2 B_0x3 FIFO full (considered as FULL when the FIFO threshold is greater than 1/2) 0x3 SPI_DR SPI_DR SPI data register 0xc 16 0x00000000 0x0000FFFF DR Data register Data received or to be transmitted The data register serves as an interface between the Rx and Tx FIFOs. When the data register is read, RxFIFO is accessed while the write to data register accesses TxFIFO (See ). Note: Data is always right-aligned. Unused bits are ignored when writing to the register, and read as zero when the register is read. The Rx threshold setting must always correspond with the read access currently used. 0 16 read-write SPI_CRCPR SPI_CRCPR SPI CRC polynomial register 0x10 16 0x00000007 0x0000FFFF CRCPOLY CRC polynomial register This register contains the polynomial for the CRC calculation. The CRC polynomial (0x0007) is the reset value of this register. Another polynomial can be configured as required. 0 16 read-write SPI_RXCRCR SPI_RXCRCR SPI Rx CRC register 0x14 16 0x00000000 0x0000FFFF RXCRC Rx CRC register When CRC calculation is enabled, the RXCRC[15:0] bits contain the computed CRC value of the subsequently received bytes. This register is reset when the CRCEN bit in SPI_CR1 register is written to 1. The CRC is calculated serially using the polynomial programmed in the SPI_CRCPR register. Only the 8 LSB bits are considered when the CRC frame format is set to be 8-bit length (CRCL bit in the SPI_CR1 is cleared). CRC calculation is done based on any CRC8 standard. The entire 16-bits of this register are considered when a 16-bit CRC frame format is selected (CRCL bit in the SPI_CR1 register is set). CRC calculation is done based on any CRC16 standard. Note: A read to this register when the BSY Flag is set could return an incorrect value. These bits are not used in I2S mode. 0 16 read-only SPI_TXCRCR SPI_TXCRCR SPI Tx CRC register 0x18 16 0x00000000 0x0000FFFF TXCRC Tx CRC register When CRC calculation is enabled, the TXCRC[7:0] bits contain the computed CRC value of the subsequently transmitted bytes. This register is reset when the CRCEN bit of SPI_CR1 is written to 1. The CRC is calculated serially using the polynomial programmed in the SPI_CRCPR register. Only the 8 LSB bits are considered when the CRC frame format is set to be 8-bit length (CRCL bit in the SPI_CR1 is cleared). CRC calculation is done based on any CRC8 standard. The entire 16-bits of this register are considered when a 16-bit CRC frame format is selected (CRCL bit in the SPI_CR1 register is set). CRC calculation is done based on any CRC16 standard. Note: A read to this register when the BSY flag is set could return an incorrect value. These bits are not used in I2S mode. 0 16 read-only SPI_I2SCFGR SPI_I2SCFGR SPI_I2S configuration register 0x1c 16 0x00000000 0x0000FFFF CHLEN Channel length (number of bits per audio channel) The bit write operation has a meaning only if DATLEN = 00 otherwise the channel length is fixed to 32-bit by hardware whatever the value filled in. Note: For correct operation, this bit should be configured when the I2S is disabled. It is not used in SPI mode. 0 1 read-write B_0x0 16-bit wide 0x0 B_0x1 32-bit wide 0x1 DATLEN Data length to be transferred Note: For correct operation, these bits should be configured when the I2S is disabled. They are not used in SPI mode. 1 2 read-write B_0x0 16-bit data length 0x0 B_0x1 24-bit data length 0x1 B_0x2 32-bit data length 0x2 B_0x3 Not allowed 0x3 CKPOL Inactive state clock polarity Note: For correct operation, this bit should be configured when the I2S is disabled. It is not used in SPI mode. The bit CKPOL does not affect the CK edge sensitivity used to receive or transmit the SD and WS signals. 3 1 read-write B_0x0 I2S clock inactive state is low level 0x0 B_0x1 I2S clock inactive state is high level 0x1 I2SSTD I2S standard selection For more details on I2S standards, refer to Note: For correct operation, these bits should be configured when the I2S is disabled. They are not used in SPI mode. 4 2 read-write B_0x0 I2S Philips standard 0x0 B_0x1 MSB justified standard (left justified) 0x1 B_0x2 LSB justified standard (right justified) 0x2 B_0x3 PCM standard 0x3 PCMSYNC PCM frame synchronization Note: This bit has a meaning only if I2SSTD = 11 (PCM standard is used). It is not used in SPI mode. 7 1 read-write B_0x0 Short frame synchronization 0x0 B_0x1 Long frame synchronization 0x1 I2SCFG I2S configuration mode Note: These bits should be configured when the I2S is disabled. They are not used in SPI mode. 8 2 read-write B_0x0 Slave - transmit 0x0 B_0x1 Slave - receive 0x1 B_0x2 Master - transmit 0x2 B_0x3 Master - receive 0x3 I2SE I2S enable Note: This bit is not used in SPI mode. 10 1 read-write B_0x0 I2S peripheral is disabled 0x0 B_0x1 I2S peripheral is enabled 0x1 I2SMOD I2S mode selection Note: This bit should be configured when the SPI is disabled. 11 1 read-write B_0x0 SPI mode is selected 0x0 B_0x1 I2S mode is selected 0x1 ASTRTEN Asynchronous start enable. When the I2S is enabled in slave mode, the hardware starts the transfer when the I2S clock is received and an appropriate transition is detected on the WS signal. When the I2S is enabled in slave mode, the hardware starts the transfer when the I2S clock is received and the appropriate level is detected on the WS signal. Note: The appropriate transition is a falling edge on WS signal when I2S Philips Standard is used, or a rising edge for other standards. The appropriate level is a low level on WS signal when I2S Philips Standard is used, or a high level for other standards. Please refer to for additional information. 12 1 read-write B_0x0 The Asynchronous start is disabled. 0x0 B_0x1 The Asynchronous start is enabled. 0x1 SPI_I2SPR SPI_I2SPR SPI_I2S prescaler register 0x20 16 0x00000002 0x0000FFFF I2SDIV I2S linear prescaler I2SDIV [7:0] = 0 or I2SDIV [7:0] = 1 are forbidden values. Refer to . Note: These bits should be configured when the I2S is disabled. They are used only when the I2S is in master mode. They are not used in SPI mode. 0 8 read-write ODD Odd factor for the prescaler Refer to . Note: This bit should be configured when the I2S is disabled. It is used only when the I2S is in master mode. It is not used in SPI mode. 8 1 read-write B_0x0 Real divider value is = I2SDIV *2 0x0 B_0x1 Real divider value is = (I2SDIV * 2) + 1 0x1 MCKOE Master clock output enable Note: This bit should be configured when the I2S is disabled. It is used only when the I2S is in master mode. It is not used in SPI mode. 9 1 read-write B_0x0 Master clock output is disabled 0x0 B_0x1 Master clock output is enabled 0x1 SPI2 0x40003800 SPI2_SPI3 SPI2 gloabl interrupt 26 SPI3 0x40003C00 TAMP Tamper and backup registers TAMP 0x4000B000 0x0 0x400 registers TAMP_CR1 TAMP_CR1 TAMP control register 1 0x0 0x20 0xFFFF0000 0xFFFFFFFF TAMP1E Tamper detection on TAMP_IN1 enable 0 1 read-write B_0x0 Tamper detection on TAMP_IN1 is disabled. 0x0 B_0x1 Tamper detection on TAMP_IN1 is enabled. 0x1 TAMP2E Tamper detection on TAMP_IN2 enable 1 1 read-write B_0x0 Tamper detection on TAMP_IN2 is disabled. 0x0 B_0x1 Tamper detection on TAMP_IN2 is enabled. 0x1 ITAMP3E Internal tamper 3 enable: LSE monitoring 18 1 read-write B_0x0 Internal tamper 3 disabled. 0x0 B_0x1 Internal tamper 3 enabled: a tamper is generated when the LSE frequency is below or above thresholds. 0x1 ITAMP4E Internal tamper 4 enable: HSE monitoring 19 1 read-write B_0x0 Internal tamper 4 disabled. 0x0 B_0x1 Internal tamper 4 enabled. a tamper is generated when the HSE frequency is below or above thresholds. 0x1 ITAMP5E Internal tamper 5 enable: RTC calendar overflow 20 1 read-write B_0x0 Internal tamper 5 disabled. 0x0 B_0x1 Internal tamper 5 enabled: a tamper is generated when the RTC calendar reaches its maximum value, on the 31st of December 99, at 23:59:59. The calendar is then frozen and cannot overflow. 0x1 ITAMP6E Internal tamper 6 enable: ST manufacturer readout 21 1 read-write B_0x0 Internal tamper 6 disabled. 0x0 B_0x1 Internal tamper 6 enabled: a tamper is generated in case of ST manufacturer readout. 0x1 TAMP_CR2 TAMP_CR2 TAMP control register 2 0x4 0x20 0x00000000 0xFFFFFFFF TAMP1NOER Tamper 1 no erase 0 1 read-write B_0x0 Tamper 1 event erases the backup registers. 0x0 B_0x1 Tamper 1 event does not erase the backup registers. 0x1 TAMP2NOER Tamper 2 no erase 1 1 read-write B_0x0 Tamper 2 event erases the backup registers. 0x0 B_0x1 Tamper 2 event does not erase the backup registers. 0x1 TAMP1MSK Tamper 1 mask The tamper 1 interrupt must not be enabled when TAMP1MSK is set. 16 1 read-write B_0x0 Tamper 1 event generates a trigger event and TAMP1F must be cleared by software to allow next tamper event detection. 0x0 B_0x1 Tamper 1 event generates a trigger event. TAMP1F is masked and internally cleared by hardware. The backup registers are not erased. 0x1 TAMP2MSK Tamper 2 mask The tamper 2 interrupt must not be enabled when TAMP2MSK is set. 17 1 read-write B_0x0 Tamper 2 event generates a trigger event and TAMP2F must be cleared by software to allow next tamper event detection. 0x0 B_0x1 Tamper 2 event generates a trigger event. TAMP2F is masked and internally cleared by hardware. The backup registers are not erased. 0x1 TAMP1TRG Active level for tamper 1 input (active mode disabled) If TAMPFLT = 00 Tamper 1 input rising edge and high level triggers a tamper detection event. If TAMPFLT = 00 Tamper 1 input falling edge and low level triggers a tamper detection event. 24 1 read-write B_0x0 If TAMPFLT ≠ 00 Tamper 1 input staying low triggers a tamper detection event. 0x0 B_0x1 If TAMPFLT ≠ 00 Tamper 1 input staying high triggers a tamper detection event. 0x1 TAMP2TRG Active level for tamper 2 input (active mode disabled) If TAMPFLT = 00 Tamper 2 input rising edge and high level triggers a tamper detection event. If TAMPFLT = 00 Tamper 2 input falling edge and low level triggers a tamper detection event. 25 1 read-write B_0x0 If TAMPFLT ≠ 00 Tamper 2 input staying low triggers a tamper detection event. 0x0 B_0x1 If TAMPFLT ≠ 00 Tamper 2 input staying high triggers a tamper detection event. 0x1 TAMP_FLTCR TAMP_FLTCR TAMP filter control register 0xc 0x20 0x00000000 0xFFFFFFFF TAMPFREQ Tamper sampling frequency Determines the frequency at which each of the TAMP_INx inputs are sampled. 0 3 read-write B_0x0 RTCCLK / 32768 (1 Hz when RTCCLK = 32768 Hz) 0x0 B_0x1 RTCCLK / 16384 (2 Hz when RTCCLK = 32768 Hz) 0x1 B_0x2 RTCCLK / 8192 (4 Hz when RTCCLK = 32768 Hz) 0x2 B_0x3 RTCCLK / 4096 (8 Hz when RTCCLK = 32768 Hz) 0x3 B_0x4 RTCCLK / 2048 (16 Hz when RTCCLK = 32768 Hz) 0x4 B_0x5 RTCCLK / 1024 (32 Hz when RTCCLK = 32768 Hz) 0x5 B_0x6 RTCCLK / 512 (64 Hz when RTCCLK = 32768 Hz) 0x6 B_0x7 RTCCLK / 256 (128 Hz when RTCCLK = 32768 Hz) 0x7 TAMPFLT TAMP_INx filter count These bits determines the number of consecutive samples at the specified level (TAMP*TRG) needed to activate a tamper event. TAMPFLT is valid for each of the TAMP_INx inputs. 3 2 read-write B_0x0 Tamper event is activated on edge of TAMP_INx input transitions to the active level (no internal pull-up on TAMP_INx input). 0x0 B_0x1 Tamper event is activated after 2 consecutive samples at the active level. 0x1 B_0x2 Tamper event is activated after 4 consecutive samples at the active level. 0x2 B_0x3 Tamper event is activated after 8 consecutive samples at the active level. 0x3 TAMPPRCH TAMP_INx precharge duration These bit determines the duration of time during which the pull-up/is activated before each sample. TAMPPRCH is valid for each of the TAMP_INx inputs. 5 2 read-write B_0x0 1 RTCCLK cycle 0x0 B_0x1 2 RTCCLK cycles 0x1 B_0x2 4 RTCCLK cycles 0x2 B_0x3 8 RTCCLK cycles 0x3 TAMPPUDIS TAMP_INx pull-up disable This bit determines if each of the TAMPx pins are precharged before each sample. 7 1 read-write B_0x0 Precharge TAMP_INx pins before sampling (enable internal pull-up) 0x0 B_0x1 Disable precharge of TAMP_INx pins. 0x1 TAMP_IER TAMP_IER TAMP interrupt enable register 0x2c 0x20 0x00000000 0xFFFFFFFF TAMP1IE Tamper 1 interrupt enable 0 1 read-write B_0x0 Tamper 1 interrupt disabled. 0x0 B_0x1 Tamper 1 interrupt enabled. 0x1 TAMP2IE Tamper 2 interrupt enable 1 1 read-write B_0x0 Tamper 2 interrupt disabled. 0x0 B_0x1 Tamper 2 interrupt enabled. 0x1 ITAMP3IE Internal tamper 3 interrupt enable: LSE monitoring 18 1 read-write B_0x0 Internal tamper 3 interrupt disabled. 0x0 B_0x1 Internal tamper 3 interrupt enabled. 0x1 ITAMP4IE Internal tamper 4 interrupt enable: HSE monitoring 19 1 read-write B_0x0 Internal tamper 4 interrupt disabled. 0x0 B_0x1 Internal tamper 4 interrupt enabled. 0x1 ITAMP5IE Internal tamper 5 interrupt enable: RTC calendar overflow 20 1 read-write B_0x0 Internal tamper 5 interrupt disabled. 0x0 B_0x1 Internal tamper 5 interrupt enabled. 0x1 ITAMP6IE Internal tamper 6 interrupt enable: ST manufacturer readout 21 1 read-write B_0x0 Internal tamper 6 interrupt disabled. 0x0 B_0x1 Internal tamper 6 interrupt enabled. 0x1 TAMP_SR TAMP_SR TAMP status register 0x30 0x20 0x00000000 0xFFFFFFFF TAMP1F TAMP1 detection flag This flag is set by hardware when a tamper detection event is detected on the TAMP1 input. 0 1 read-only TAMP2F TAMP2 detection flag This flag is set by hardware when a tamper detection event is detected on the TAMP2 input. 1 1 read-only ITAMP3F LSE monitoring tamper detection flag This flag is set by hardware when a tamper detection event is detected on the internal tamper 3. 18 1 read-only ITAMP4F HSE monitoring tamper detection flag This flag is set by hardware when a tamper detection event is detected on the internal tamper 4. 19 1 read-only ITAMP5F RTC calendar overflow tamper detection flag This flag is set by hardware when a tamper detection event is detected on the internal tamper 5. 20 1 read-only ITAMP6F ST manufacturer readout tamper detection flag This flag is set by hardware when a tamper detection event is detected on the internal tamper 6. 21 1 read-only TAMP_MISR TAMP_MISR TAMP masked interrupt status register 0x34 0x20 0x00000000 0xFFFFFFFF TAMP1MF TAMP1 interrupt masked flag This flag is set by hardware when the tamper 1 interrupt is raised. 0 1 read-only TAMP2MF TAMP2 interrupt masked flag This flag is set by hardware when the tamper 2 interrupt is raised. 1 1 read-only ITAMP3MF LSE monitoring tamper interrupt masked flag This flag is set by hardware when the internal tamper 3 interrupt is raised. 18 1 read-only ITAMP4MF HSE monitoring tamper interrupt masked flag This flag is set by hardware when the internal tamper 4 interrupt is raised. 19 1 read-only ITAMP5MF RTC calendar overflow tamper interrupt masked flag This flag is set by hardware when the internal tamper 5 interrupt is raised. 20 1 read-only ITAMP6MF ST manufacturer readout tamper interrupt masked flag This flag is set by hardware when the internal tamper 6 interrupt is raised. 21 1 read-only TAMP_SCR TAMP_SCR TAMP status clear register 0x3c 0x20 0x00000000 0xFFFFFFFF CTAMP1F Clear TAMP1 detection flag Writing 1 in this bit clears the TAMP1F bit in the TAMP_SR register. 0 1 write-only CTAMP2F Clear TAMP2 detection flag Writing 1 in this bit clears the TAMP2F bit in the TAMP_SR register. 1 1 write-only CITAMP3F Clear ITAMP3 detection flag Writing 1 in this bit clears the ITAMP3F bit in the TAMP_SR register. 18 1 write-only CITAMP4F Clear ITAMP4 detection flag Writing 1 in this bit clears the ITAMP4F bit in the TAMP_SR register. 19 1 write-only CITAMP5F Clear ITAMP5 detection flag Writing 1 in this bit clears the ITAMP5F bit in the TAMP_SR register. 20 1 write-only CITAMP6F Clear ITAMP6 detection flag Writing 1 in this bit clears the ITAMP6F bit in the TAMP_SR register. 21 1 write-only TAMP_BKP0R TAMP_BKP0R TAMP backup 0 register 0x100 0x20 0x00000000 0xFFFFFFFF BKP The application can write or read data to and from these registers. They are powered-on by VBAT when VDD is switched off, so that they are not reset by System reset, and their contents remain valid when the device operates in low-power mode. In the default configuration this register is reset on a tamper detection event. It is forced to reset value as long as there is at least one internal or external tamper flag being set. This register is also reset when the readout protection (RDP) is disabled. 0 32 read-write TAMP_BKP1R TAMP_BKP1R TAMP backup 1 register 0x104 0x20 0x00000000 0xFFFFFFFF BKP The application can write or read data to and from these registers. They are powered-on by VBAT when VDD is switched off, so that they are not reset by System reset, and their contents remain valid when the device operates in low-power mode. In the default configuration this register is reset on a tamper detection event. It is forced to reset value as long as there is at least one internal or external tamper flag being set. This register is also reset when the readout protection (RDP) is disabled. 0 32 read-write TAMP_BKP2R TAMP_BKP2R TAMP backup 2 register 0x108 0x20 0x00000000 0xFFFFFFFF BKP The application can write or read data to and from these registers. They are powered-on by VBAT when VDD is switched off, so that they are not reset by System reset, and their contents remain valid when the device operates in low-power mode. In the default configuration this register is reset on a tamper detection event. It is forced to reset value as long as there is at least one internal or external tamper flag being set. This register is also reset when the readout protection (RDP) is disabled. 0 32 read-write TAMP_BKP3R TAMP_BKP3R TAMP backup 3 register 0x10c 0x20 0x00000000 0xFFFFFFFF BKP The application can write or read data to and from these registers. They are powered-on by VBAT when VDD is switched off, so that they are not reset by System reset, and their contents remain valid when the device operates in low-power mode. In the default configuration this register is reset on a tamper detection event. It is forced to reset value as long as there is at least one internal or external tamper flag being set. This register is also reset when the readout protection (RDP) is disabled. 0 32 read-write TAMP_BKP4R TAMP_BKP4R TAMP backup 4 register 0x110 0x20 0x00000000 0xFFFFFFFF BKP The application can write or read data to and from these registers. They are powered-on by VBAT when VDD is switched off, so that they are not reset by System reset, and their contents remain valid when the device operates in low-power mode. In the default configuration this register is reset on a tamper detection event. It is forced to reset value as long as there is at least one internal or external tamper flag being set. This register is also reset when the readout protection (RDP) is disabled. 0 32 read-write TIM1 Advanced-timers TIM 0x40012C00 0x0 0x400 registers TIM1_BRK_UP_TRG_COM TIM1 break, update, trigger 13 TIM1_CC TIM1 Capture Compare interrupt 14 TIM1_CR1 TIM1_CR1 control register 1 0x0 0x20 read-write 0x00000000 CEN Counter enable Note: External clock, gated mode and encoder mode can work only if the CEN bit has been previously set by software. However trigger mode can set the CEN bit automatically by hardware. 0 1 read-write B_0x0 Counter disabled 0x0 B_0x1 Counter enabled 0x1 UDIS Update disable This bit is set and cleared by software to enable/disable UEV event generation. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller Buffered registers are then loaded with their preload values. 1 1 read-write B_0x0 UEV enabled. The Update (UEV) event is generated by one of the following events: 0x0 B_0x1 UEV disabled. The Update event is not generated, shadow registers keep their value (ARR, PSC, CCRx). However the counter and the prescaler are reinitialized if the UG bit is set or if a hardware reset is received from the slave mode controller. 0x1 URS Update request source This bit is set and cleared by software to select the UEV event sources. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller 2 1 read-write B_0x0 Any of the following events generate an update interrupt or DMA request if enabled. These events can be: 0x0 B_0x1 Only counter overflow/underflow generates an update interrupt or DMA request if enabled. 0x1 OPM One pulse mode 3 1 read-write B_0x0 Counter is not stopped at update event 0x0 B_0x1 Counter stops counting at the next update event (clearing the bit CEN) 0x1 DIR Direction Note: This bit is read only when the timer is configured in Center-aligned mode or Encoder mode. 4 1 read-write B_0x0 Counter used as upcounter 0x0 B_0x1 Counter used as downcounter 0x1 CMS Center-aligned mode selection Note: Switch from edge-aligned mode to center-aligned mode as long as the counter is enabled (CEN=1) is not allowed 5 2 read-write B_0x0 Edge-aligned mode. The counter counts up or down depending on the direction bit (DIR). 0x0 B_0x1 Center-aligned mode 1. The counter counts up and down alternatively. Output compare interrupt flags of channels configured in output (CCxS=00 in TIMx_CCMRx register) are set only when the counter is counting down. 0x1 B_0x2 Center-aligned mode 2. The counter counts up and down alternatively. Output compare interrupt flags of channels configured in output (CCxS=00 in TIMx_CCMRx register) are set only when the counter is counting up. 0x2 B_0x3 Center-aligned mode 3. The counter counts up and down alternatively. Output compare interrupt flags of channels configured in output (CCxS=00 in TIMx_CCMRx register) are set both when the counter is counting up or down. 0x3 ARPE Auto-reload preload enable 7 1 read-write B_0x0 TIMx_ARR register is not buffered 0x0 B_0x1 TIMx_ARR register is buffered 0x1 CKD Clock division This bit-field indicates the division ratio between the timer clock (CK_INT) frequency and the dead-time and sampling clock (tDTS)used by the dead-time generators and the digital filters (ETR, TIx): Note: tDTS = 1/fDTS, tCK_INT = 1/fCK_INT. 8 2 read-write B_0x0 tDTS=tCK_INT 0x0 B_0x1 tDTS=2*tCK_INT 0x1 B_0x2 tDTS=4*tCK_INT 0x2 B_0x3 Reserved, do not program this value 0x3 UIFREMAP UIF status bit remapping 11 1 read-write B_0x0 No remapping. UIF status bit is not copied to TIMx_CNT register bit 31. 0x0 B_0x1 Remapping enabled. UIF status bit is copied to TIMx_CNT register bit 31. 0x1 TIM1_CR2 TIM1_CR2 control register 2 0x4 0x20 read-write 0x00000000 CCPC Capture/compare preloaded control Note: This bit acts only on channels that have a complementary output. 0 1 read-write B_0x0 CCxE, CCxNE and OCxM bits are not preloaded 0x0 B_0x1 CCxE, CCxNE and OCxM bits are preloaded, after having been written, they are updated only when a commutation event (COM) occurs (COMG bit set or rising edge detected on TRGI, depending on the CCUS bit). 0x1 CCUS Capture/compare control update selection Note: This bit acts only on channels that have a complementary output. 2 1 read-write B_0x0 When capture/compare control bits are preloaded (CCPC=1), they are updated by setting the COMG bit only 0x0 B_0x1 When capture/compare control bits are preloaded (CCPC=1), they are updated by setting the COMG bit or when an rising edge occurs on TRGI 0x1 CCDS Capture/compare DMA selection 3 1 read-write B_0x0 CCx DMA request sent when CCx event occurs 0x0 B_0x1 CCx DMA requests sent when update event occurs 0x1 MMS Master mode selection These bits allow selected information to be sent in master mode to slave timers for synchronization (TRGO). The combination is as follows: Note: The clock of the slave timer or ADC must be enabled prior to receive events from the master timer, and must not be changed on-the-fly while triggers are received from the master timer. 4 3 read-write B_0x0 Reset - the UG bit from the TIMx_EGR register is used as trigger output (TRGO). If the reset is generated by the trigger input (slave mode controller configured in reset mode) then the signal on TRGO is delayed compared to the actual reset. 0x0 B_0x1 Enable - the Counter Enable signal CNT_EN is used as trigger output (TRGO). It is useful to start several timers at the same time or to control a window in which a slave timer is enable. The Counter Enable signal is generated by a logic AND between CEN control bit and the trigger input when configured in gated mode. When the Counter Enable signal is controlled by the trigger input, there is a delay on TRGO, except if the master/slave mode is selected (see the MSM bit description in TIMx_SMCR register). 0x1 B_0x2 Update - The update event is selected as trigger output (TRGO). For instance a master timer can then be used as a prescaler for a slave timer. 0x2 B_0x3 Compare Pulse - The trigger output send a positive pulse when the CC1IF flag is to be set (even if it was already high), as soon as a capture or a compare match occurred. (TRGO). 0x3 B_0x4 Compare - OC1REFC signal is used as trigger output (TRGO) 0x4 B_0x5 Compare - OC2REFC signal is used as trigger output (TRGO) 0x5 B_0x6 Compare - OC3REFC signal is used as trigger output (TRGO) 0x6 B_0x7 Compare - OC4REFC signal is used as trigger output (TRGO) 0x7 TI1S TI1 selection 7 1 read-write B_0x0 The TIMx_CH1 pin is connected to TI1 input 0x0 B_0x1 The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) 0x1 OIS1 Output Idle state 1 (OC1 output) Note: This bit can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). 8 1 read-write B_0x0 OC1=0 (after a dead-time if OC1N is implemented) when MOE=0 0x0 B_0x1 OC1=1 (after a dead-time if OC1N is implemented) when MOE=0 0x1 OIS1N Output Idle state 1 (OC1N output) Note: This bit can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). 9 1 read-write B_0x0 OC1N=0 after a dead-time when MOE=0 0x0 B_0x1 OC1N=1 after a dead-time when MOE=0 0x1 OIS2 Output Idle state 2 (OC2 output) Refer to OIS1 bit 10 1 read-write OIS2N Output Idle state 2 (OC2N output) Refer to OIS1N bit 11 1 read-write OIS3 Output Idle state 3 (OC3 output) Refer to OIS1 bit 12 1 read-write OIS3N Output Idle state 3 (OC3N output) Refer to OIS1N bit 13 1 read-write OIS4 Output Idle state 4 (OC4 output) Refer to OIS1 bit 14 1 read-write OIS5 Output Idle state 5 (OC5 output) Refer to OIS1 bit 16 1 read-write OIS6 Output Idle state 6 (OC6 output) Refer to OIS1 bit 18 1 read-write MMS2 Master mode selection 2 These bits allow the information to be sent to ADC for synchronization (TRGO2) to be selected. The combination is as follows: Note: The clock of the slave timer or ADC must be enabled prior to receive events from the master timer, and must not be changed on-the-fly while triggers are received from the master timer. 20 4 read-write B_0x0 Reset - the UG bit from the TIMx_EGR register is used as trigger output (TRGO2). If the reset is generated by the trigger input (slave mode controller configured in reset mode), the signal on TRGO2 is delayed compared to the actual reset. 0x0 B_0x1 Enable - the Counter Enable signal CNT_EN is used as trigger output (TRGO2). It is useful to start several timers at the same time or to control a window in which a slave timer is enabled. The Counter Enable signal is generated by a logic AND between the CEN control bit and the trigger input when configured in Gated mode. When the Counter Enable signal is controlled by the trigger input, there is a delay on TRGO2, except if the Master/Slave mode is selected (see the MSM bit description in TIMx_SMCR register). 0x1 B_0x2 Update - the update event is selected as trigger output (TRGO2). For instance, a master timer can then be used as a prescaler for a slave timer. 0x2 B_0x3 Compare pulse - the trigger output sends a positive pulse when the CC1IF flag is to be set (even if it was already high), as soon as a capture or compare match occurs (TRGO2). 0x3 B_0x4 Compare - OC1REFC signal is used as trigger output (TRGO2) 0x4 B_0x5 Compare - OC2REFC signal is used as trigger output (TRGO2) 0x5 B_0x6 Compare - OC3REFC signal is used as trigger output (TRGO2) 0x6 B_0x7 Compare - OC4REFC signal is used as trigger output (TRGO2) 0x7 B_0x8 Compare - OC5REFC signal is used as trigger output (TRGO2) 0x8 B_0x9 Compare - OC6REFC signal is used as trigger output (TRGO2) 0x9 B_0xA Compare Pulse - OC4REFC rising or falling edges generate pulses on TRGO2 0xA B_0xB Compare Pulse - OC6REFC rising or falling edges generate pulses on TRGO2 0xB B_0xC Compare Pulse - OC4REFC or OC6REFC rising edges generate pulses on TRGO2 0xC B_0xD Compare Pulse - OC4REFC rising or OC6REFC falling edges generate pulses on TRGO2 0xD B_0xE Compare Pulse - OC5REFC or OC6REFC rising edges generate pulses on TRGO2 0xE B_0xF Compare Pulse - OC5REFC rising or OC6REFC falling edges generate pulses on TRGO2 0xF TIM1_SMCR TIM1_SMCR slave mode control register 0x8 0x20 read-write 0x00000000 SMS1 Slave mode selection When external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description. Note: The gated mode must not be used if TI1F_ED is selected as the trigger input (TS=00100). Indeed, TI1F_ED outputs 1 pulse for each transition on TI1F, whereas the gated mode checks the level of the trigger signal. Note: The clock of the slave peripherals (timer, ADC, ...) receiving the TRGO or the TRGO2 signals must be enabled prior to receive events from the master timer, and the clock frequency (prescaler) must not be changed on-the-fly while triggers are received from the master timer. 0 3 read-write B_0x0 Slave mode disabled - if CEN = '1’ then the prescaler is clocked directly by the internal clock. 0x0 B_0x1 Encoder mode 1 - Counter counts up/down on TI1FP1 edge depending on TI2FP2 level. 0x1 B_0x2 Encoder mode 2 - Counter counts up/down on TI2FP2 edge depending on TI1FP1 level. 0x2 B_0x3 Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. 0x3 B_0x4 Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers. 0x4 B_0x5 Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled. 0x5 B_0x6 Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled. 0x6 B_0x7 External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter. 0x7 B_0x8 Combined reset + trigger mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter, generates an update of the registers and starts the counter.Codes above 1000: Reserved. 0x8 OCCS OCREF clear selection This bit is used to select the OCREF clear source. 3 1 read-write B_0x0 OCREF_CLR_INT is connected to COMP1 or COMP2 output depending on TIM1_OR1.OCREF_CLR 0x0 B_0x1 OCREF_CLR_INT is connected to ETRF 0x1 TS1 Trigger selection This bit-field selects the trigger input to be used to synchronize the counter. Others: Reserved See for more details on ITRx meaning for each Timer. Note: These bits must be changed only when they are not used (e.g. when SMS=000) to avoid wrong edge detections at the transition. 4 3 read-write B_0x0 Internal Trigger 0 (ITR0) 0x0 B_0x1 Internal Trigger 1 (ITR1) 0x1 B_0x2 Internal Trigger 2 (ITR2) 0x2 B_0x3 Internal Trigger 3 (ITR3) 0x3 B_0x4 TI1 Edge Detector (TI1F_ED) 0x4 B_0x5 Filtered Timer Input 1 (TI1FP1) 0x5 B_0x6 Filtered Timer Input 2 (TI2FP2) 0x6 B_0x7 External Trigger input (ETRF) 0x7 MSM Master/slave mode 7 1 read-write B_0x0 No action 0x0 B_0x1 The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event. 0x1 ETF External trigger filter This bit-field then defines the frequency used to sample ETRP signal and the length of the digital filter applied to ETRP. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: 8 4 read-write B_0x0 No filter, sampling is done at fDTS 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF ETPS External trigger prescaler External trigger signal ETRP frequency must be at most 1/4 of fCK_INT frequency. A prescaler can be enabled to reduce ETRP frequency. It is useful when inputting fast external clocks. 12 2 read-write B_0x0 Prescaler OFF 0x0 B_0x1 ETRP frequency divided by 2 0x1 B_0x2 ETRP frequency divided by 4 0x2 B_0x3 ETRP frequency divided by 8 0x3 ECE External clock enable This bit enables External clock mode 2. Note: Setting the ECE bit has the same effect as selecting external clock mode 1 with TRGI connected to ETRF (SMS=111 and TS=00111). It is possible to simultaneously use external clock mode 2 with the following slave modes: reset mode, gated mode and trigger mode. Nevertheless, TRGI must not be connected to ETRF in this case (TS bits must not be 00111). If external clock mode 1 and external clock mode 2 are enabled at the same time, the external clock input is ETRF. 14 1 read-write B_0x0 External clock mode 2 disabled 0x0 B_0x1 External clock mode 2 enabled. The counter is clocked by any active edge on the ETRF signal. 0x1 ETP External trigger polarity This bit selects whether ETR or ETR is used for trigger operations 15 1 read-write B_0x0 ETR is non-inverted, active at high level or rising edge. 0x0 B_0x1 ETR is inverted, active at low level or falling edge. 0x1 SMS2 Slave mode selection When external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description. Note: The gated mode must not be used if TI1F_ED is selected as the trigger input (TS=00100). Indeed, TI1F_ED outputs 1 pulse for each transition on TI1F, whereas the gated mode checks the level of the trigger signal. Note: The clock of the slave peripherals (timer, ADC, ...) receiving the TRGO or the TRGO2 signals must be enabled prior to receive events from the master timer, and the clock frequency (prescaler) must not be changed on-the-fly while triggers are received from the master timer. 16 1 read-write B_0x0 Slave mode disabled - if CEN = '1’ then the prescaler is clocked directly by the internal clock. 0x0 B_0x1 Encoder mode 1 - Counter counts up/down on TI1FP1 edge depending on TI2FP2 level. 0x1 B_0x2 Encoder mode 2 - Counter counts up/down on TI2FP2 edge depending on TI1FP1 level. 0x2 B_0x3 Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. 0x3 B_0x4 Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers. 0x4 B_0x5 Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled. 0x5 B_0x6 Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled. 0x6 B_0x7 External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter. 0x7 B_0x8 Combined reset + trigger mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter, generates an update of the registers and starts the counter.Codes above 1000: Reserved. 0x8 TS2 Trigger selection This bit-field selects the trigger input to be used to synchronize the counter. Others: Reserved See for more details on ITRx meaning for each Timer. Note: These bits must be changed only when they are not used (e.g. when SMS=000) to avoid wrong edge detections at the transition. 20 2 read-write B_0x0 Internal Trigger 0 (ITR0) 0x0 B_0x1 Internal Trigger 1 (ITR1) 0x1 B_0x2 Internal Trigger 2 (ITR2) 0x2 B_0x3 Internal Trigger 3 (ITR3) 0x3 B_0x4 TI1 Edge Detector (TI1F_ED) 0x4 B_0x5 Filtered Timer Input 1 (TI1FP1) 0x5 B_0x6 Filtered Timer Input 2 (TI2FP2) 0x6 B_0x7 External Trigger input (ETRF) 0x7 TIM1_DIER TIM1_DIER DMA/Interrupt enable register 0xC 0x20 read-write 0x0000 UIE Update interrupt enable 0 1 read-write B_0x0 Update interrupt disabled 0x0 B_0x1 Update interrupt enabled 0x1 CC1IE Capture/Compare 1 interrupt enable 1 1 read-write B_0x0 CC1 interrupt disabled 0x0 B_0x1 CC1 interrupt enabled 0x1 CC2IE Capture/Compare 2 interrupt enable 2 1 read-write B_0x0 CC2 interrupt disabled 0x0 B_0x1 CC2 interrupt enabled 0x1 CC3IE Capture/Compare 3 interrupt enable 3 1 read-write B_0x0 CC3 interrupt disabled 0x0 B_0x1 CC3 interrupt enabled 0x1 CC4IE Capture/Compare 4 interrupt enable 4 1 read-write B_0x0 CC4 interrupt disabled 0x0 B_0x1 CC4 interrupt enabled 0x1 COMIE COM interrupt enable 5 1 read-write B_0x0 COM interrupt disabled 0x0 B_0x1 COM interrupt enabled 0x1 TIE Trigger interrupt enable 6 1 read-write B_0x0 Trigger interrupt disabled 0x0 B_0x1 Trigger interrupt enabled 0x1 BIE Break interrupt enable 7 1 read-write B_0x0 Break interrupt disabled 0x0 B_0x1 Break interrupt enabled 0x1 UDE Update DMA request enable 8 1 read-write B_0x0 Update DMA request disabled 0x0 B_0x1 Update DMA request enabled 0x1 CC1DE Capture/Compare 1 DMA request enable 9 1 read-write B_0x0 CC1 DMA request disabled 0x0 B_0x1 CC1 DMA request enabled 0x1 CC2DE Capture/Compare 2 DMA request enable 10 1 read-write B_0x0 CC2 DMA request disabled 0x0 B_0x1 CC2 DMA request enabled 0x1 CC3DE Capture/Compare 3 DMA request enable 11 1 read-write B_0x0 CC3 DMA request disabled 0x0 B_0x1 CC3 DMA request enabled 0x1 CC4DE Capture/Compare 4 DMA request enable 12 1 read-write B_0x0 CC4 DMA request disabled 0x0 B_0x1 CC4 DMA request enabled 0x1 COMDE COM DMA request enable 13 1 read-write B_0x0 COM DMA request disabled 0x0 B_0x1 COM DMA request enabled 0x1 TDE Trigger DMA request enable 14 1 read-write B_0x0 Trigger DMA request disabled 0x0 B_0x1 Trigger DMA request enabled 0x1 TIM1_SR TIM1_SR status register 0x10 0x20 read-write 0x0000 UIF Update interrupt flag This bit is set by hardware on an update event. It is cleared by software. At overflow or underflow regarding the repetition counter value (update if repetition counter = 0) and if the UDIS=0 in the TIMx_CR1 register. When CNT is reinitialized by software using the UG bit in TIMx_EGR register, if URS=0 and UDIS=0 in the TIMx_CR1 register. When CNT is reinitialized by a trigger event (refer to control register (TIM1_SMCRTIMx_SMCR)N/A), if URS=0 and UDIS=0 in the TIMx_CR1 register. 0 1 read-write B_0x0 No update occurred. 0x0 B_0x1 Update interrupt pending. This bit is set by hardware when the registers are updated: 0x1 CC1IF Capture/Compare 1 interrupt flag This flag is set by hardware. It is cleared by software (input capture or output compare mode) or by reading the TIMx_CCR1 register (input capture mode only). If channel CC1 is configured as output: this flag is set when he content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. When the content of TIMx_CCR1 is greater than the content of TIMx_ARR, the CC1IF bit goes high on the counter overflow (in up-counting and up/down-counting modes) or underflow (in down-counting mode). There are 3 possible options for flag setting in center-aligned mode, refer to the CMS bits in the TIMx_CR1 register for the full description. If channel CC1 is configured as input: this bit is set when counter value has been captured in TIMx_CCR1 register (an edge has been detected on IC1, as per the edge sensitivity defined with the CC1P and CC1NP bits setting, in TIMx_CCER). 1 1 read-write B_0x0 No compare match / No input capture occurred 0x0 B_0x1 A compare match or an input capture occurred. 0x1 CC2IF Capture/Compare 2 interrupt flag Refer to CC1IF description 2 1 read-write CC3IF Capture/Compare 3 interrupt flag Refer to CC1IF description 3 1 read-write CC4IF Capture/Compare 4 interrupt flag Refer to CC1IF description 4 1 read-write COMIF COM interrupt flag This flag is set by hardware on COM event (when Capture/compare Control bits - CCxE, CCxNE, OCxM - have been updated). It is cleared by software. 5 1 read-write B_0x0 No COM event occurred. 0x0 B_0x1 COM interrupt pending. 0x1 TIF Trigger interrupt flag This flag is set by hardware on the TRG trigger event (active edge detected on TRGI input when the slave mode controller is enabled in all modes but gated mode. It is set when the counter starts or stops when gated mode is selected. It is cleared by software. 6 1 read-write B_0x0 No trigger event occurred. 0x0 B_0x1 Trigger interrupt pending. 0x1 BIF Break interrupt flag This flag is set by hardware as soon as the break input goes active. It can be cleared by software if the break input is not active. 7 1 read-write B_0x0 No break event occurred. 0x0 B_0x1 An active level has been detected on the break input. An interrupt is generated if BIE=1 in the TIMx_DIER register. 0x1 B2IF Break 2 interrupt flag This flag is set by hardware as soon as the break 2 input goes active. It can be cleared by software if the break 2 input is not active. 8 1 read-write B_0x0 No break event occurred. 0x0 B_0x1 An active level has been detected on the break 2 input. An interrupt is generated if BIE=1 in the TIMx_DIER register. 0x1 CC1OF Capture/Compare 1 overcapture flag This flag is set by hardware only when the corresponding channel is configured in input capture mode. It is cleared by software by writing it to '0’. 9 1 read-write B_0x0 No overcapture has been detected. 0x0 B_0x1 The counter value has been captured in TIMx_CCR1 register while CC1IF flag was already set 0x1 CC2OF Capture/Compare 2 overcapture flag Refer to CC1OF description 10 1 read-write CC3OF Capture/Compare 3 overcapture flag Refer to CC1OF description 11 1 read-write CC4OF Capture/Compare 4 overcapture flag Refer to CC1OF description 12 1 read-write SBIF System Break interrupt flag This flag is set by hardware as soon as the system break input goes active. It can be cleared by software if the system break input is not active. This flag must be reset to re-start PWM operation. 13 1 read-write B_0x0 No break event occurred. 0x0 B_0x1 An active level has been detected on the system break input. An interrupt is generated if BIE=1 in the TIMx_DIER register. 0x1 CC5IF Compare 5 interrupt flag Refer to CC1IF description (Note: Channel 5 can only be configured as output) 16 1 read-write CC6IF Compare 6 interrupt flag Refer to CC1IF description (Note: Channel 6 can only be configured as output) 17 1 read-write TIM1_EGR TIM1_EGR event generation register 0x14 0x20 write-only 0x0000 UG Update generation This bit can be set by software, it is automatically cleared by hardware. 0 1 write-only B_0x0 No action 0x0 B_0x1 Reinitialize the counter and generates an update of the registers. The prescaler internal counter is also cleared (the prescaler ratio is not affected). The counter is cleared if the center-aligned mode is selected or if DIR=0 (upcounting), else it takes the auto-reload value (TIMx_ARR) if DIR=1 (downcounting). 0x1 CC1G Capture/Compare 1 generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. If channel CC1 is configured as output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If channel CC1 is configured as input: The current value of the counter is captured in TIMx_CCR1 register. The CC1IF flag is set, the corresponding interrupt or DMA request is sent if enabled. The CC1OF flag is set if the CC1IF flag was already high. 1 1 write-only B_0x0 No action 0x0 B_0x1 A capture/compare event is generated on channel 1: 0x1 CC2G Capture/Compare 2 generation Refer to CC1G description 2 1 write-only CC3G Capture/Compare 3 generation Refer to CC1G description 3 1 write-only CC4G Capture/Compare 4 generation Refer to CC1G description 4 1 write-only COMG Capture/Compare control update generation This bit can be set by software, it is automatically cleared by hardware Note: This bit acts only on channels having a complementary output. 5 1 write-only B_0x0 No action 0x0 B_0x1 When CCPC bit is set, it allows CCxE, CCxNE and OCxM bits to be updated. 0x1 TG Trigger generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. 6 1 write-only B_0x0 No action 0x0 B_0x1 The TIF flag is set in TIMx_SR register. Related interrupt or DMA transfer can occur if enabled. 0x1 BG Break generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. 7 1 write-only B_0x0 No action 0x0 B_0x1 A break event is generated. MOE bit is cleared and BIF flag is set. Related interrupt or DMA transfer can occur if enabled. 0x1 B2G Break 2 generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. 8 1 write-only B_0x0 No action 0x0 B_0x1 A break 2 event is generated. MOE bit is cleared and B2IF flag is set. Related interrupt can occur if enabled. 0x1 CCMR1_Output CCMR1_Output capture/compare mode register 1 (output mode) 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC1S bits are writable only when the channel is OFF (CC1E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1 0x1 B_0x2 CC1 channel is configured as input, IC1 is mapped on TI2 0x2 B_0x3 CC1 channel is configured as input, IC1 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 OC1FE Output Compare 1 fast enable This bit decreases the latency between a trigger event and a transition on the timer output. It must be used in one-pulse mode (OPM bit set in TIMx_CR1 register), to have the output pulse starting as soon as possible after the starting trigger. 2 1 read-write B_0x0 CC1 behaves normally depending on counter and CCR1 values even when the trigger is ON. The minimum delay to activate CC1 output when an edge occurs on the trigger input is 5 clock cycles. 0x0 B_0x1 An active edge on the trigger input acts like a compare match on CC1 output. Then, OC is set to the compare level independently from the result of the comparison. Delay to sample the trigger input and to activate CC1 output is reduced to 3 clock cycles. OCFE acts only if the channel is configured in PWM1 or PWM2 mode. 0x1 OC1PE Output Compare 1 preload enable Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). The PWM mode can be used without validating the preload register only in one pulse mode (OPM bit set in TIMx_CR1 register). Else the behavior is not guaranteed. 3 1 read-write B_0x0 Preload register on TIMx_CCR1 disabled. TIMx_CCR1 can be written at anytime, the new value is taken in account immediately. 0x0 B_0x1 Preload register on TIMx_CCR1 enabled. Read/Write operations access the preload register. TIMx_CCR1 preload value is loaded in the active register at each update event. 0x1 OC1M1 Output Compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). Note: In PWM mode, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode. Note: On channels having a complementary output, this bit field is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the OC1M active bits take the new value from the preloaded bits only when a COM event is generated. Note: The OC1M[3] bit is not contiguous, located in bit 16. 4 3 read-write B_0x0 Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs.(this mode is used to generate a timing base). 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - In upcounting, channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. In downcounting, channel 1 is inactive (OC1REF='0’) as long as TIMx_CNT>TIMx_CCR1 else active (OC1REF=’1’). 0x6 B_0x7 PWM mode 2 - In upcounting, channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. In downcounting, channel 1 is active as long as TIMx_CNT>TIMx_CCR1 else inactive. 0x7 B_0x8 Retrigerrable OPM mode 1 - In up-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. In down-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes inactive again at the next update. 0x8 B_0x9 Retrigerrable OPM mode 2 - In up-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 2 and the channels becomes inactive again at the next update. In down-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. 0x9 B_0xC Combined PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC is the logical OR between OC1REF and OC2REF. 0xC B_0xD Combined PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC is the logical AND between OC1REF and OC2REF. 0xD B_0xE Asymmetric PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC outputs OC1REF when the counter is counting up, OC2REF when it is counting down. 0xE B_0xF Asymmetric PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC outputs OC1REF when the counter is counting up, OC2REF when it is counting down. 0xF OC1CE Output Compare 1 clear enable 7 1 read-write B_0x0 OC1Ref is not affected by the ocref_clr_int signal 0x0 B_0x1 OC1Ref is cleared as soon as a High level is detected on ocref_clr_int signal (OCREF_CLR input or ETRF input) 0x1 CC2S Capture/Compare 2 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC2S bits are writable only when the channel is OFF (CC2E = '0’ in TIMx_CCER). 8 2 read-write B_0x0 CC2 channel is configured as output 0x0 B_0x1 CC2 channel is configured as input, IC2 is mapped on TI2 0x1 B_0x2 CC2 channel is configured as input, IC2 is mapped on TI1 0x2 B_0x3 CC2 channel is configured as input, IC2 is mapped on TRC. This mode is working only if an internal trigger input is selected through the TS bit (TIMx_SMCR register) 0x3 OC2FE Output Compare 2 fast enable Refer to OC1FE description. 10 1 read-write OC2PE Output Compare 2 preload enable Refer to OC1PE description. 11 1 read-write OC2M1 Output Compare 2 mode Refer to OC1M[3:0] description. 12 3 read-write OC2CE Output Compare 2 clear enable Refer to OC1CE description. 15 1 read-write OC1M2 Output Compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). Note: In PWM mode, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode. Note: On channels having a complementary output, this bit field is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the OC1M active bits take the new value from the preloaded bits only when a COM event is generated. Note: The OC1M[3] bit is not contiguous, located in bit 16. 16 1 read-write B_0x0 Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs.(this mode is used to generate a timing base). 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - In upcounting, channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. In downcounting, channel 1 is inactive (OC1REF='0’) as long as TIMx_CNT>TIMx_CCR1 else active (OC1REF=’1’). 0x6 B_0x7 PWM mode 2 - In upcounting, channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. In downcounting, channel 1 is active as long as TIMx_CNT>TIMx_CCR1 else inactive. 0x7 B_0x8 Retrigerrable OPM mode 1 - In up-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. In down-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes inactive again at the next update. 0x8 B_0x9 Retrigerrable OPM mode 2 - In up-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 2 and the channels becomes inactive again at the next update. In down-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. 0x9 B_0xC Combined PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC is the logical OR between OC1REF and OC2REF. 0xC B_0xD Combined PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC is the logical AND between OC1REF and OC2REF. 0xD B_0xE Asymmetric PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC outputs OC1REF when the counter is counting up, OC2REF when it is counting down. 0xE B_0xF Asymmetric PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC outputs OC1REF when the counter is counting up, OC2REF when it is counting down. 0xF OC2M2 Output Compare 2 mode Refer to OC1M[3:0] description. 24 1 read-write CCMR1_Input CCMR1_Input capture/compare mode register 1 (output mode) CCMR1_Output 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 Selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC1S bits are writable only when the channel is OFF (CC1E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1 0x1 B_0x2 CC1 channel is configured as input, IC1 is mapped on TI2 0x2 B_0x3 CC1 channel is configured as input, IC1 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 IC1PSC Input capture 1 prescaler This bit-field defines the ratio of the prescaler acting on CC1 input (IC1). The prescaler is reset as soon as CC1E=’0’ (TIMx_CCER register). 2 2 read-write B_0x0 no prescaler, capture is done each time an edge is detected on the capture input 0x0 B_0x1 capture is done once every 2 events 0x1 B_0x2 capture is done once every 4 events 0x2 B_0x3 capture is done once every 8 events 0x3 IC1F Input capture 1 filter This bit-field defines the frequency used to sample TI1 input and the length of the digital filter applied to TI1. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: 4 4 read-write B_0x0 No filter, sampling is done at fDTS 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF CC2S Capture/Compare 2 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC2S bits are writable only when the channel is OFF (CC2E = '0’ in TIMx_CCER). 8 2 read-write B_0x0 CC2 channel is configured as output 0x0 B_0x1 CC2 channel is configured as input, IC2 is mapped on TI2 0x1 B_0x2 CC2 channel is configured as input, IC2 is mapped on TI1 0x2 B_0x3 CC2 channel is configured as input, IC2 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 IC2PSC Input capture 2 prescaler Refer to IC1PSC[1:0] description. 10 2 read-write IC2F Input capture 2 filter Refer to IC1F[3:0] description. 12 4 read-write CCMR2_Output CCMR2_Output capture/compare mode register 2 (output mode) 0x1C 0x20 read-write 0x00000000 CC3S Capture/Compare 3 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC3S bits are writable only when the channel is OFF (CC3E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC3 channel is configured as output 0x0 B_0x1 CC3 channel is configured as input, IC3 is mapped on TI3 0x1 B_0x2 CC3 channel is configured as input, IC3 is mapped on TI4 0x2 B_0x3 CC3 channel is configured as input, IC3 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 OC3FE Output compare 3 fast enable Refer to OC1FE description. 2 1 read-write OC3PE Output compare 3 preload enable Refer to OC1PE description. 3 1 read-write OC3M1 Output compare 3 mode Refer to OC1M[3:0] description. 4 3 read-write OC3CE Output compare 3 clear enable Refer to OC1CE description. 7 1 read-write CC4S Capture/Compare 4 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC4S bits are writable only when the channel is OFF (CC4E = '0’ in TIMx_CCER). 8 2 read-write B_0x0 CC4 channel is configured as output 0x0 B_0x1 CC4 channel is configured as input, IC4 is mapped on TI4 0x1 B_0x2 CC4 channel is configured as input, IC4 is mapped on TI3 0x2 B_0x3 CC4 channel is configured as input, IC4 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 OC4FE Output compare 4 fast enable Refer to OC1FE description. 10 1 read-write OC4PE Output compare 4 preload enable Refer to OC1PE description. 11 1 read-write OC4M1 Output compare 4 mode Refer to OC3M[3:0] description. 12 3 read-write OC4CE Output compare 4 clear enable Refer to OC1CE description. 15 1 read-write OC3M2 Output compare 3 mode Refer to OC1M[3:0] description. 16 1 read-write OC4M2 Output compare 4 mode Refer to OC3M[3:0] description. 24 1 read-write CCMR2_Input CCMR2_Input capture/compare mode register 2 (output mode) CCMR2_Output 0x1C 0x20 read-write 0x00000000 CC3S Capture/compare 3 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC3S bits are writable only when the channel is OFF (CC3E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC3 channel is configured as output 0x0 B_0x1 CC3 channel is configured as input, IC3 is mapped on TI3 0x1 B_0x2 CC3 channel is configured as input, IC3 is mapped on TI4 0x2 B_0x3 CC3 channel is configured as input, IC3 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 IC3PSC Input capture 3 prescaler Refer to IC1PSC[1:0] description. 2 2 read-write IC3F Input capture 3 filter Refer to IC1F[3:0] description. 4 4 read-write CC4S Capture/Compare 4 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC4S bits are writable only when the channel is OFF (CC4E = '0’ in TIMx_CCER). 8 2 read-write B_0x0 CC4 channel is configured as output 0x0 B_0x1 CC4 channel is configured as input, IC4 is mapped on TI4 0x1 B_0x2 CC4 channel is configured as input, IC4 is mapped on TI3 0x2 B_0x3 CC4 channel is configured as input, IC4 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 IC4PSC Input capture 4 prescaler Refer to IC1PSC[1:0] description. 10 2 read-write IC4F Input capture 4 filter Refer to IC1F[3:0] description. 12 4 read-write TIM1_CCER TIM1_CCER capture/compare enable register 0x20 0x20 read-write 0x0000 CC1E Capture/Compare 1 output enable When CC1 channel is configured as output, the OC1 level depends on MOE, OSSI, OSSR, OIS1, OIS1N and CC1NE bits, regardless of the CC1E bits state. Refer to for details. Note: On channels having a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1E active bit takes the new value from the preloaded bit only when a Commutation event is generated. 0 1 read-write B_0x0 Capture mode disabled / OC1 is not active (see below) 0x0 B_0x1 Capture mode enabled / OC1 signal is output on the corresponding output pin 0x1 CC1P Capture/Compare 1 output polarity When CC1 channel is configured as input, both CC1NP/CC1P bits select the active polarity of TI1FP1 and TI2FP1 for trigger or capture operations. CC1NP=0, CC1P=0: non-inverted/rising edge. The circuit is sensitive to TIxFP1 rising edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is not inverted (trigger operation in gated mode or encoder mode). CC1NP=0, CC1P=1: inverted/falling edge. The circuit is sensitive to TIxFP1 falling edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is inverted (trigger operation in gated mode or encoder mode). CC1NP=1, CC1P=1: non-inverted/both edges/ The circuit is sensitive to both TIxFP1 rising and falling edges (capture or trigger operations in reset, external clock or trigger mode), TIxFP1is not inverted (trigger operation in gated mode). This configuration must not be used in encoder mode. CC1NP=1, CC1P=0: The configuration is reserved, it must not be used. Note: This bit is not writable as soon as LOCK level 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). On channels having a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1P active bit takes the new value from the preloaded bit only when a Commutation event is generated. 1 1 read-write B_0x0 OC1 active high (output mode) / Edge sensitivity selection (input mode, see below) 0x0 B_0x1 OC1 active low (output mode) / Edge sensitivity selection (input mode, see below) 0x1 CC1NE Capture/Compare 1 complementary output enable On channels having a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1NE active bit takes the new value from the preloaded bit only when a Commutation event is generated. 2 1 read-write B_0x0 Off - OC1N is not active. OC1N level is then function of MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits. 0x0 B_0x1 On - OC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits. 0x1 CC1NP Capture/Compare 1 complementary output polarity CC1 channel configured as output: CC1 channel configured as input: This bit is used in conjunction with CC1P to define the polarity of TI1FP1 and TI2FP1. Refer to CC1P description. Note: This bit is not writable as soon as LOCK level 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=”00” (channel configured as output). On channels having a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1NP active bit takes the new value from the preloaded bit only when a Commutation event is generated. 3 1 read-write B_0x0 OC1N active high. 0x0 B_0x1 OC1N active low. 0x1 CC2E Capture/Compare 2 output enable Refer to CC1E description 4 1 read-write CC2P Capture/Compare 2 output polarity Refer to CC1P description 5 1 read-write CC2NE Capture/Compare 2 complementary output enable Refer to CC1NE description 6 1 read-write CC2NP Capture/Compare 2 complementary output polarity Refer to CC1NP description 7 1 read-write CC3E Capture/Compare 3 output enable Refer to CC1E description 8 1 read-write CC3P Capture/Compare 3 output polarity Refer to CC1P description 9 1 read-write CC3NE Capture/Compare 3 complementary output enable Refer to CC1NE description 10 1 read-write CC3NP Capture/Compare 3 complementary output polarity Refer to CC1NP description 11 1 read-write CC4E Capture/Compare 4 output enable Refer to CC1E description 12 1 read-write CC4P Capture/Compare 4 output polarity Refer to CC1P description 13 1 read-write CC4NP Capture/Compare 4 complementary output polarity Refer to CC1NP description 15 1 read-write CC5E Capture/Compare 5 output enable Refer to CC1E description 16 1 read-write CC5P Capture/Compare 5 output polarity Refer to CC1P description 17 1 read-write CC6E Capture/Compare 6 output enable Refer to CC1E description 20 1 read-write CC6P Capture/Compare 6 output polarity Refer to CC1P description 21 1 read-write TIM1_CNT TIM1_CNT counter 0x24 0x20 0x00000000 CNT Counter value 0 16 read-write UIFCPY UIF copy This bit is a read-only copy of the UIF bit of the TIMx_ISR register. If the UIFREMAP bit in the TIMxCR1 is reset, bit 31 is reserved and read at 0. 31 1 read-only TIM1_PSC TIM1_PSC prescaler 0x28 0x20 read-write 0x0000 PSC Prescaler value The counter clock frequency (CK_CNT) is equal to fCK_PSC / (PSC[15:0] + 1). PSC contains the value to be loaded in the active prescaler register at each update event (including when the counter is cleared through UG bit of TIMx_EGR register or through trigger controller when configured in “reset mode”). 0 16 read-write TIM1_ARR TIM1_ARR auto-reload register 0x2C 0x20 read-write 0x0000FFFF ARR Auto-reload value ARR is the value to be loaded in the actual auto-reload register. Refer to the for more details about ARR update and behavior. The counter is blocked while the auto-reload value is null. 0 16 read-write TIM1_RCR TIM1_RCR repetition counter register 0x30 0x20 read-write 0x0000 REP Repetition counter value 0 16 TIM1_CCR1 TIM1_CCR1 capture/compare register 1 0x34 0x20 read-write 0x00000000 CCR1 Capture/Compare 1 value 0 16 TIM1_CCR2 TIM1_CCR2 capture/compare register 2 0x38 0x20 read-write 0x00000000 CCR2 Capture/Compare 2 value 0 16 TIM1_CCR3 TIM1_CCR3 capture/compare register 3 0x3C 0x20 read-write 0x00000000 CCR3 Capture/Compare value 0 16 TIM1_CCR4 TIM1_CCR4 capture/compare register 4 0x40 0x20 read-write 0x00000000 CCR4 Capture/Compare value 0 16 TIM1_BDTR TIM1_BDTR break and dead-time register 0x44 0x20 read-write 0x0000 DTG Dead-time generator setup This bit-field defines the duration of the dead-time inserted between the complementary outputs. DT correspond to this duration. DTG[7:5]=0xx => DT=DTG[7:0]x tDTG with tDTG=tDTS. DTG[7:5]=10x => DT=(64+DTG[5:0])xtDTG with tDTG=2xtDTS. DTG[7:5]=110 => DT=(32+DTG[4:0])xtDTG with tDTG=8xtDTS. DTG[7:5]=111 => DT=(32+DTG[4:0])xtDTG with tDTG=16xtDTS. Example if tDTS=125 ns (8 MHz), dead-time possible values are: 0 to 15875 ns by 125 ns steps, 16 μs to 31750 ns  by 250 ns steps, 32 μs to 63 μs by 1 μs steps, 64 μs to 126 μs by 2 μs steps Note: This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). 0 8 read-write LOCK Lock configuration These bits offer a write protection against software errors. Note: The LOCK bits can be written only once after the reset. Once the TIMx_BDTR register has been written, their content is frozen until the next reset. 8 2 read-write B_0x0 LOCK OFF - No bit is write protected. 0x0 B_0x1 LOCK Level 1 = DTG bits in TIMx_BDTR register, OISx and OISxN bits in TIMx_CR2 register and BK2BID, BKBID, BK2DSRM, BKDSRM, BK2P, BK2E, BK2F[3:0], BKF[3:0], AOE, BKP, BKE, OSSI, OSSR and DTG[7:0] bits in TIMx_BDTR register can no longer be written. 0x1 B_0x2 LOCK Level 2 = LOCK Level 1 + CC Polarity bits (CCxP/CCxNP bits in TIMx_CCER register, as long as the related channel is configured in output through the CCxS bits) as well as OSSR and OSSI bits can no longer be written. 0x2 B_0x3 LOCK Level 3 = LOCK Level 2 + CC Control bits (OCxM and OCxPE bits in TIMx_CCMRx registers, as long as the related channel is configured in output through the CCxS bits) can no longer be written. 0x3 OSSI Off-state selection for Idle mode This bit is used when MOE=0 due to a break event or by a software write, on channels configured as outputs. See OC/OCN enable description for more details (enable register (TIM1_CCERTIMx_CCER)N/A). Note: This bit can not be modified as soon as the LOCK level 2 has been programmed (LOCK bits in TIMx_BDTR register). 10 1 read-write B_0x0 When inactive, OC/OCN outputs are disabled (the timer releases the output control which is taken over by the GPIO logic and which imposes a Hi-Z state). 0x0 B_0x1 When inactive, OC/OCN outputs are first forced with their inactive level then forced to their idle level after the deadtime. The timer maintains its control over the output. 0x1 OSSR Off-state selection for Run mode This bit is used when MOE=1 on channels having a complementary output which are configured as outputs. OSSR is not implemented if no complementary output is implemented in the timer. See OC/OCN enable description for more details (enable register (TIM1_CCERTIMx_CCER)N/A). Note: This bit can not be modified as soon as the LOCK level 2 has been programmed (LOCK bits in TIMx_BDTR register). 11 1 read-write B_0x0 When inactive, OC/OCN outputs are disabled (the timer releases the output control which is taken over by the GPIO logic, which forces a Hi-Z state). 0x0 B_0x1 When inactive, OC/OCN outputs are enabled with their inactive level as soon as CCxE=1 or CCxNE=1 (the output is still controlled by the timer). 0x1 BKE Break enable This bit enables the complete break protection (including all sources connected to bk_acth and BKIN sources, as per ). Note: This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 12 1 read-write B_0x0 Break function disabled 0x0 B_0x1 Break function enabled 0x1 BKP Break polarity Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 13 1 read-write B_0x0 Break input BRK is active low 0x0 B_0x1 Break input BRK is active high 0x1 AOE Automatic output enable Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 14 1 read-write B_0x0 MOE can be set only by software 0x0 B_0x1 MOE can be set by software or automatically at the next update event (if none of the break inputs BRK and BRK2 is active) 0x1 MOE Main output enable This bit is cleared asynchronously by hardware as soon as one of the break inputs is active (BRK or BRK2). It is set by software or automatically depending on the AOE bit. It is acting only on the channels which are configured in output. In response to a break event or if MOE is written to 0: OC and OCN outputs are disabled or forced to idle state depending on the OSSI bit. See OC/OCN enable description for more details (enable register (TIM1_CCERTIMx_CCER)N/A). 15 1 read-write B_0x0 In response to a break 2 event. OC and OCN outputs are disabled 0x0 B_0x1 OC and OCN outputs are enabled if their respective enable bits are set (CCxE, CCxNE in TIMx_CCER register). 0x1 BKF Break filter This bit-field defines the frequency used to sample BRK input and the length of the digital filter applied to BRK. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: Note: This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 16 4 read-write B_0x0 No filter, BRK acts asynchronously 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF BK2F Break 2 filter This bit-field defines the frequency used to sample BRK2 input and the length of the digital filter applied to BRK2. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: Note: This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 20 4 read-write B_0x0 No filter, BRK2 acts asynchronously 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF BK2E Break 2 enable Note: The BRK2 must only be used with OSSR = OSSI = 1. Note: This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 24 1 read-write B_0x0 Break input BRK2 disabled 0x0 B_0x1 Break input BRK2 enabled 0x1 BK2P Break 2 polarity Note: This bit cannot be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 25 1 read-write B_0x0 Break input BRK2 is active low 0x0 B_0x1 Break input BRK2 is active high 0x1 BKDSRM Break Disarm This bit is cleared by hardware when no break source is active. The BKDSRM bit must be set by software to release the bidirectional output control (open-drain output in Hi-Z state) and then be polled it until it is reset by hardware, indicating that the fault condition has disappeared. Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 26 1 read-write B_0x0 Break input BRK is armed 0x0 B_0x1 Break input BRK is disarmed 0x1 BK2DSRM Break2 Disarm Refer to BKDSRM description 27 1 read-write BKBID Break Bidirectional In the bidirectional mode (BKBID bit set to 1), the break input is configured both in input mode and in open drain output mode. Any active break event asserts a low logic level on the Break input to indicate an internal break event to external devices. Note: This bit cannot be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 28 1 read-write B_0x0 Break input BRK in input mode 0x0 B_0x1 Break input BRK in bidirectional mode 0x1 BK2BID Break2 bidirectional Refer to BKBID description 29 1 read-write TIM1_DCR TIM1_DCR DMA control register 0x48 0x20 read-write 0x0000 DBA DMA base address This 5-bits vector defines the base-address for DMA transfers (when read/write access are done through the TIMx_DMAR address). DBA is defined as an offset starting from the address of the TIMx_CR1 register. Example: ... 0 5 read-write B_0x0 TIMx_CR1, 0x0 B_0x1 TIMx_CR2, 0x1 B_0x2 TIMx_SMCR, 0x2 DBL DMA burst length This 5-bit vector defines the length of DMA transfers (the timer recognizes a burst transfer when a read or a write access is done to the TIMx_DMAR address), i.e. the number of transfers. Transfers can be in half-words or in bytes (see example below). ... Example: Let us consider the following transfer: DBL = 7 bytes & DBA = TIMx_CR1. If DBL = 7 bytes and DBA = TIMx_CR1 represents the address of the byte to be transferred, the address of the transfer should be given by the following equation: (TIMx_CR1 address) + DBA + (DMA index), where DMA index = DBL In this example, 7 bytes are added to (TIMx_CR1 address) + DBA, which gives us the address from/to which the data is copied. In this case, the transfer is done to 7 registers starting from the following address: (TIMx_CR1 address) + DBA According to the configuration of the DMA Data Size, several cases may occur: If the DMA Data Size is configured in half-words, 16-bit data is transferred to each of the 7 registers. If the DMA Data Size is configured in bytes, the data is also transferred to 7 registers: the first register contains the first MSB byte, the second register, the first LSB byte and so on. So with the transfer Timer, one also has to specify the size of data transferred by DMA. 8 5 read-write B_0x0 1 transfer 0x0 B_0x1 2 transfers 0x1 B_0x2 3 transfers 0x2 B_0x11 18 transfers 0x11 TIM1_DMAR TIM1_DMAR DMA address for full transfer 0x4C 0x20 read-write 0x0000 DMAB DMA register for burst accesses A read or write operation to the DMAR register accesses the register located at the address (TIMx_CR1 address) + (DBA + DMA index) x 4 where TIMx_CR1 address is the address of the control register 1, DBA is the DMA base address configured in TIMx_DCR register, DMA index is automatically controlled by the DMA transfer, and ranges from 0 to DBL (DBL configured in TIMx_DCR). 0 32 read-write TIM1_OR1 TIM1_OR1 option register 1 0x50 0x20 read-write 0x0000 OCREF_CLR Ocref_clr source selection This bit selects the ocref_clr input source. 0 1 read-write B_0x0 COMP1 output is connected to the OCREF_CLR input 0x0 B_0x1 COMP2 output is connected to the OCREF_CLR input 0x1 CCMR3_Output CCMR3_Output capture/compare mode register 2 (output mode) 0x54 0x20 read-write 0x00000000 OC6M_bit3 Output Compare 6 mode bit 3 24 1 OC5M_bit3 Output Compare 5 mode bit 3 16 1 OC6CE Output compare 6 clear enable 15 1 OC6M Output compare 6 mode 12 3 OC6PE Output compare 6 preload enable 11 1 OC6FE Output compare 6 fast enable 10 1 OC5CE Output compare 5 clear enable 7 1 OC5M Output compare 5 mode 4 3 OC5PE Output compare 5 preload enable 3 1 OC5FE Output compare 5 fast enable 2 1 TIM1_CCR5 TIM1_CCR5 capture/compare register 4 0x58 0x20 read-write 0x00000000 CCR5 Capture/Compare 5 value CCR5 is the value to be loaded in the actual capture/compare 5 register (preload value). It is loaded permanently if the preload feature is not selected in the TIMx_CCMR3 register (bit OC5PE). Else the preload value is copied in the active capture/compare 5 register when an update event occurs. The active capture/compare register contains the value to be compared to the counter TIMx_CNT and signaled on OC5 output. 0 16 read-write GC5C1 Group Channel 5 and Channel 1 Distortion on Channel 1 output: This bit can either have immediate effect or be preloaded and taken into account after an update event (if preload feature is selected in TIMxCCMR1). Note: it is also possible to apply this distortion on combined PWM signals. 29 1 read-write B_0x0 No effect of OC5REF on OC1REFC5 0x0 B_0x1 OC1REFC is the logical AND of OC1REFC and OC5REF 0x1 GC5C2 Group Channel 5 and Channel 2 Distortion on Channel 2 output: This bit can either have immediate effect or be preloaded and taken into account after an update event (if preload feature is selected in TIMxCCMR1). Note: it is also possible to apply this distortion on combined PWM signals. 30 1 read-write B_0x0 No effect of OC5REF on OC2REFC 0x0 B_0x1 OC2REFC is the logical AND of OC2REFC and OC5REF 0x1 GC5C3 Group Channel 5 and Channel 3 Distortion on Channel 3 output: This bit can either have immediate effect or be preloaded and taken into account after an update event (if preload feature is selected in TIMxCCMR2). Note: it is also possible to apply this distortion on combined PWM signals. 31 1 read-write B_0x0 No effect of OC5REF on OC3REFC 0x0 B_0x1 OC3REFC is the logical AND of OC3REFC and OC5REF 0x1 TIM1_CCR6 TIM1_CCR6 capture/compare register 4 0x5C 0x20 read-write 0x00000000 CCR6 Capture/Compare value 0 16 TIM1_AF1 TIM1_AF1 DMA address for full transfer 0x60 0x20 read-write 0x00000001 BKINE BRK BKIN input enable This bit enables the BKIN alternate function input for the timer’s BRK input. BKIN input is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 0 1 read-write B_0x0 BKIN input disabled 0x0 B_0x1 BKIN input enabled 0x1 BKCMP1E BRK COMP1 enable This bit enables the COMP1 for the timer’s BRK input. COMP1 output is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 1 1 read-write B_0x0 COMP1 input disabled 0x0 B_0x1 COMP1 input enabled 0x1 BKCMP2E BRK COMP2 enable This bit enables the COMP2 for the timer’s BRK input. COMP2 output is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 2 1 read-write B_0x0 COMP2 input disabled 0x0 B_0x1 COMP2 input enabled 0x1 BKINP BRK BKIN input polarity This bit selects the BKIN alternate function input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 9 1 read-write B_0x0 BKIN input polarity is not inverted (active low if BKP=0, active high if BKP=1) 0x0 B_0x1 BKIN input polarity is inverted (active high if BKP=0, active low if BKP=1) 0x1 BKCMP1P BRK COMP1 input polarity This bit selects the COMP1 input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 10 1 read-write B_0x0 COMP1 input polarity is not inverted (active low if BKP=0, active high if BKP=1) 0x0 B_0x1 COMP1 input polarity is inverted (active high if BKP=0, active low if BKP=1) 0x1 BKCMP2P BRK COMP2 input polarity This bit selects the COMP2 input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 11 1 read-write B_0x0 COMP2 input polarity is not inverted (active low if BKP=0, active high if BKP=1) 0x0 B_0x1 COMP2 input polarity is inverted (active high if BKP=0, active low if BKP=1) 0x1 ETRSEL ETR source selection These bits select the ETR input source. Others: Reserved Note: These bits can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 14 4 read-write B_0x0 ETR legacy mode 0x0 B_0x1 COMP1 output 0x1 B_0x2 COMP2 output 0x2 B_0x3 ADC1 AWD1 0x3 B_0x4 ADC1 AWD2 0x4 B_0x5 ADC1 AWD3 0x5 TIM1_AF2 TIM1_AF2 DMA address for full transfer 0x64 0x20 read-write 0x00000001 BK2INE BRK2 BKIN input enable This bit enables the BKIN2 alternate function input for the timer’s BRK2 input. BKIN2 input is 'ORed’ with the other BRK2 sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 0 1 read-write B_0x0 BKIN2 input disabled 0x0 B_0x1 BKIN2 input enabled 0x1 BK2CMP1E BRK2 COMP1 enable This bit enables the COMP1 for the timer’s BRK2 input. COMP1 output is 'ORed’ with the other BRK2 sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 1 1 read-write B_0x0 COMP1 input disabled 0x0 B_0x1 COMP1 input enabled 0x1 BK2CMP2E BRK2 COMP2 enable This bit enables the COMP2 for the timer’s BRK2 input. COMP2 output is 'ORed’ with the other BRK2 sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 2 1 read-write B_0x0 COMP2 input disabled 0x0 B_0x1 COMP2 input enabled 0x1 BK2INP BRK2 BKIN2 input polarity This bit selects the BKIN2 alternate function input sensitivity. It must be programmed together with the BK2P polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 9 1 read-write B_0x0 BKIN2 input polarity is not inverted (active low if BK2P=0, active high if BK2P=1) 0x0 B_0x1 BKIN2 input polarity is inverted (active high if BK2P=0, active low if BK2P=1) 0x1 BK2CMP1P BRK2 COMP1 input polarity This bit selects the COMP1 input sensitivity. It must be programmed together with the BK2P polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 10 1 read-write B_0x0 COMP1 input polarity is not inverted (active low if BK2P=0, active high if BK2P=1) 0x0 B_0x1 COMP1 input polarity is inverted (active high if BK2P=0, active low if BK2P=1) 0x1 BK2CMP2P BRK2 COMP2 input polarity This bit selects the COMP2 input sensitivity. It must be programmed together with the BK2P polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 11 1 read-write B_0x0 COMP2 input polarity is not inverted (active low if BK2P=0, active high if BK2P=1) 0x0 B_0x1 COMP2 input polarity is inverted (active high if BK2P=0, active low if BK2P=1) 0x1 TIM1_TISEL TIM1_TISEL TIM1 timer input selection register 0x68 0x20 read-write 0x00000000 TI1SEL selects TI1[0] to TI1[15] input Others: Reserved 0 4 read-write B_0x0 TIM1_CH1 input 0x0 B_0x1 COMP1 output 0x1 TI2SEL selects TI2[0] to TI2[15] input Others: Reserved 8 4 read-write B_0x0 TIM1_CH2 input 0x0 B_0x1 COMP2 output 0x1 TI3SEL selects TI3[0] to TI3[15] input Others: Reserved 16 4 read-write B_0x0 TIM1_CH3 input 0x0 TI4SEL selects TI4[0] to TI4[15] input Others: Reserved 24 4 read-write B_0x0 TIM1_CH4 input 0x0 TIM2 General-purpose-timers TIM 0x40000000 0x0 0x400 registers TIM2 TIM2 global interrupt 15 CR1 CR1 control register 1 0x0 0x20 read-write 0x0000 CEN Counter enable Note: External clock, gated mode and encoder mode can work only if the CEN bit has been previously set by software. However trigger mode can set the CEN bit automatically by hardware. CEN is cleared automatically in one-pulse mode, when an update event occurs. 0 1 read-write B_0x0 Counter disabled 0x0 B_0x1 Counter enabled 0x1 UDIS Update disable This bit is set and cleared by software to enable/disable UEV event generation. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller Buffered registers are then loaded with their preload values. 1 1 read-write B_0x0 UEV enabled. The Update (UEV) event is generated by one of the following events: 0x0 B_0x1 UEV disabled. The Update event is not generated, shadow registers keep their value (ARR, PSC, CCRx). However the counter and the prescaler are reinitialized if the UG bit is set or if a hardware reset is received from the slave mode controller. 0x1 URS Update request source This bit is set and cleared by software to select the UEV event sources. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller 2 1 read-write B_0x0 Any of the following events generate an update interrupt or DMA request if enabled. These events can be: 0x0 B_0x1 Only counter overflow/underflow generates an update interrupt or DMA request if enabled. 0x1 OPM One-pulse mode 3 1 read-write B_0x0 Counter is not stopped at update event 0x0 B_0x1 Counter stops counting at the next update event (clearing the bit CEN) 0x1 DIR Direction Note: This bit is read only when the timer is configured in Center-aligned mode or Encoder mode. 4 1 read-write B_0x0 Counter used as upcounter 0x0 B_0x1 Counter used as downcounter 0x1 CMS Center-aligned mode selection Note: It is not allowed to switch from edge-aligned mode to center-aligned mode as long as the counter is enabled (CEN=1) 5 2 read-write B_0x0 Edge-aligned mode. The counter counts up or down depending on the direction bit (DIR). 0x0 B_0x1 Center-aligned mode 1. The counter counts up and down alternatively. Output compare interrupt flags of channels configured in output (CCxS=00 in TIMx_CCMRx register) are set only when the counter is counting down. 0x1 B_0x2 Center-aligned mode 2. The counter counts up and down alternatively. Output compare interrupt flags of channels configured in output (CCxS=00 in TIMx_CCMRx register) are set only when the counter is counting up. 0x2 B_0x3 Center-aligned mode 3. The counter counts up and down alternatively. Output compare interrupt flags of channels configured in output (CCxS=00 in TIMx_CCMRx register) are set both when the counter is counting up or down. 0x3 ARPE Auto-reload preload enable 7 1 read-write B_0x0 TIMx_ARR register is not buffered 0x0 B_0x1 TIMx_ARR register is buffered 0x1 CKD Clock division This bit-field indicates the division ratio between the timer clock (CK_INT) frequency and sampling clock used by the digital filters (ETR, TIx), 8 2 read-write B_0x0 tDTS = tCK_INT 0x0 B_0x1 tDTS = 2 × tCK_INT 0x1 B_0x2 tDTS = 4 × tCK_INT 0x2 UIFREMAP UIF status bit remapping 11 1 read-write B_0x0 No remapping. UIF status bit is not copied to TIMx_CNT register bit 31. 0x0 B_0x1 Remapping enabled. UIF status bit is copied to TIMx_CNT register bit 31. 0x1 CR2 CR2 control register 2 0x4 0x20 read-write 0x0000 CCDS Capture/compare DMA selection 3 1 read-write B_0x0 CCx DMA request sent when CCx event occurs 0x0 B_0x1 CCx DMA requests sent when update event occurs 0x1 MMS Master mode selection These bits permit to select the information to be sent in master mode to slave timers for synchronization (TRGO). The combination is as follows: When the Counter Enable signal is controlled by the trigger input, there is a delay on TRGO, except if the master/slave mode is selected (see the MSM bit description in TIMx_SMCR register). Note: The clock of the slave timer or ADC must be enabled prior to receive events from the master timer, and must not be changed on-the-fly while triggers are received from the master timer. 4 3 read-write B_0x0 Reset - the UG bit from the TIMx_EGR register is used as trigger output (TRGO). If the reset is generated by the trigger input (slave mode controller configured in reset mode) then the signal on TRGO is delayed compared to the actual reset. 0x0 B_0x1 Enable - the Counter enable signal, CNT_EN, is used as trigger output (TRGO). It is useful to start several timers at the same time or to control a window in which a slave timer is enabled. The Counter Enable signal is generated by a logic AND between CEN control bit and the trigger input when configured in gated mode. 0x1 B_0x2 Update - The update event is selected as trigger output (TRGO). For instance a master timer can then be used as a prescaler for a slave timer. 0x2 B_0x3 Compare Pulse - The trigger output send a positive pulse when the CC1IF flag is to be set (even if it was already high), as soon as a capture or a compare match occurred. (TRGO) 0x3 B_0x4 Compare - OC1REFC signal is used as trigger output (TRGO) 0x4 B_0x5 Compare - OC2REFC signal is used as trigger output (TRGO) 0x5 B_0x6 Compare - OC3REFC signal is used as trigger output (TRGO) 0x6 B_0x7 Compare - OC4REFC signal is used as trigger output (TRGO) 0x7 TI1S TI1 selection 7 1 read-write B_0x0 The TIMx_CH1 pin is connected to TI1 input 0x0 B_0x1 The TIMx_CH1, CH2 and CH3 pins are connected to the TI1 input (XOR combination) See also 0x1 SMCR SMCR slave mode control register 0x8 0x20 read-write 0x0000 SMS1 Slave mode selection When external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description. reinitializes the counter, generates an update of the registers and starts the counter. Note: The gated mode must not be used if TI1F_ED is selected as the trigger input (TS=00100). Indeed, TI1F_ED outputs 1 pulse for each transition on TI1F, whereas the gated mode checks the level of the trigger signal. Note: The clock of the slave peripherals (timer, ADC, ...) receiving the TRGO or the TRGO2 signals must be enabled prior to receive events from the master timer, and the clock frequency (prescaler) must not be changed on-the-fly while triggers are received from the master timer. 0 3 read-write B_0x0 Slave mode disabled - if CEN = '1 then the prescaler is clocked directly by the internal clock. 0x0 B_0x1 Encoder mode 1 - Counter counts up/down on TI1FP1 edge depending on TI2FP2 level. 0x1 B_0x2 Encoder mode 2 - Counter counts up/down on TI2FP2 edge depending on TI1FP1 level. 0x2 B_0x3 Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. 0x3 B_0x4 Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers. 0x4 B_0x5 Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled. 0x5 B_0x6 Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled. 0x6 B_0x7 External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter. 0x7 B_0x8 Combined reset + trigger mode - Rising edge of the selected trigger input (TRGI) 0x8 OCCS OCREF clear selection This bit is used to select the OCREF clear source 3 1 read-write B_0x0 OCREF_CLR_INT is connected to COMP1 or COMP2 output depending on TIMx_OR1.OCREF_CLR 0x0 B_0x1 OCREF_CLR_INT is connected to ETRF 0x1 TS1 Trigger selection This bit-field selects the trigger input to be used to synchronize the counter. Others: Reserved See for more details on ITRx meaning for each Timer. Note: These bits must be changed only when they are not used (e.g. when SMS=000) to avoid wrong edge detections at the transition. 4 3 read-write B_0x0 Internal Trigger 0 (ITR0) 0x0 B_0x1 Internal Trigger 1 (ITR1) 0x1 B_0x2 Internal Trigger 2 (ITR2) 0x2 B_0x3 Internal Trigger 3 (ITR3) 0x3 B_0x4 TI1 Edge Detector (TI1F_ED) 0x4 B_0x5 Filtered Timer Input 1 (TI1FP1) 0x5 B_0x6 Filtered Timer Input 2 (TI2FP2) 0x6 B_0x7 External Trigger input (ETRF) 0x7 B_0x8 Internal Trigger 4 (ITR4) 0x8 B_0x9 Internal Trigger 5 (ITR5) 0x9 B_0xA Internal Trigger 6 (ITR6) 0xA B_0xB Internal Trigger 7 (ITR7) 0xB B_0xC Internal Trigger 8 (ITR8) 0xC MSM Master/Slave mode 7 1 read-write B_0x0 No action 0x0 B_0x1 The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event. 0x1 ETF External trigger filter This bit-field then defines the frequency used to sample ETRP signal and the length of the digital filter applied to ETRP. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: 8 4 read-write B_0x0 No filter, sampling is done at fDTS 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF ETPS External trigger prescaler External trigger signal ETRP frequency must be at most 1/4 of CK_INT frequency. A prescaler can be enabled to reduce ETRP frequency. It is useful when inputting fast external clocks. 12 2 read-write B_0x0 Prescaler OFF 0x0 B_0x1 ETRP frequency divided by 2 0x1 B_0x2 ETRP frequency divided by 4 0x2 B_0x3 ETRP frequency divided by 8 0x3 ECE External clock enable This bit enables External clock mode 2. Note: Setting the ECE bit has the same effect as selecting external clock mode 1 with TRGI connected to ETRF (SMS=111 and TS=00111). It is possible to simultaneously use external clock mode 2 with the following slave modes: reset mode, gated mode and trigger mode. Nevertheless, TRGI must not be connected to ETRF in this case (TS bits must not be 00111). If external clock mode 1 and external clock mode 2 are enabled at the same time, the external clock input is ETRF. 14 1 read-write B_0x0 External clock mode 2 disabled 0x0 B_0x1 External clock mode 2 enabled. The counter is clocked by any active edge on the ETRF signal. 0x1 ETP External trigger polarity This bit selects whether ETR or ETR is used for trigger operations 15 1 read-write B_0x0 ETR is non-inverted, active at high level or rising edge 0x0 B_0x1 ETR is inverted, active at low level or falling edge 0x1 SMS2 Slave mode selection When external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description. reinitializes the counter, generates an update of the registers and starts the counter. Note: The gated mode must not be used if TI1F_ED is selected as the trigger input (TS=00100). Indeed, TI1F_ED outputs 1 pulse for each transition on TI1F, whereas the gated mode checks the level of the trigger signal. Note: The clock of the slave peripherals (timer, ADC, ...) receiving the TRGO or the TRGO2 signals must be enabled prior to receive events from the master timer, and the clock frequency (prescaler) must not be changed on-the-fly while triggers are received from the master timer. 16 1 read-write B_0x0 Slave mode disabled - if CEN = '1 then the prescaler is clocked directly by the internal clock. 0x0 B_0x1 Encoder mode 1 - Counter counts up/down on TI1FP1 edge depending on TI2FP2 level. 0x1 B_0x2 Encoder mode 2 - Counter counts up/down on TI2FP2 edge depending on TI1FP1 level. 0x2 B_0x3 Encoder mode 3 - Counter counts up/down on both TI1FP1 and TI2FP2 edges depending on the level of the other input. 0x3 B_0x4 Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers. 0x4 B_0x5 Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled. 0x5 B_0x6 Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled. 0x6 B_0x7 External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter. 0x7 B_0x8 Combined reset + trigger mode - Rising edge of the selected trigger input (TRGI) 0x8 TS2 Trigger selection This bit-field selects the trigger input to be used to synchronize the counter. Others: Reserved See for more details on ITRx meaning for each Timer. Note: These bits must be changed only when they are not used (e.g. when SMS=000) to avoid wrong edge detections at the transition. 20 2 read-write B_0x0 Internal Trigger 0 (ITR0) 0x0 B_0x1 Internal Trigger 1 (ITR1) 0x1 B_0x2 Internal Trigger 2 (ITR2) 0x2 B_0x3 Internal Trigger 3 (ITR3) 0x3 B_0x4 TI1 Edge Detector (TI1F_ED) 0x4 B_0x5 Filtered Timer Input 1 (TI1FP1) 0x5 B_0x6 Filtered Timer Input 2 (TI2FP2) 0x6 B_0x7 External Trigger input (ETRF) 0x7 B_0x8 Internal Trigger 4 (ITR4) 0x8 B_0x9 Internal Trigger 5 (ITR5) 0x9 B_0xA Internal Trigger 6 (ITR6) 0xA B_0xB Internal Trigger 7 (ITR7) 0xB B_0xC Internal Trigger 8 (ITR8) 0xC DIER DIER DMA/Interrupt enable register 0xC 0x20 read-write 0x0000 UIE Update interrupt enable 0 1 read-write B_0x0 Update interrupt disabled. 0x0 B_0x1 Update interrupt enabled. 0x1 CC1IE Capture/Compare 1 interrupt enable 1 1 read-write B_0x0 CC1 interrupt disabled. 0x0 B_0x1 CC1 interrupt enabled. 0x1 CC2IE Capture/Compare 2 interrupt enable 2 1 read-write B_0x0 CC2 interrupt disabled. 0x0 B_0x1 CC2 interrupt enabled. 0x1 CC3IE Capture/Compare 3 interrupt enable 3 1 read-write B_0x0 CC3 interrupt disabled. 0x0 B_0x1 CC3 interrupt enabled. 0x1 CC4IE Capture/Compare 4 interrupt enable 4 1 read-write B_0x0 CC4 interrupt disabled. 0x0 B_0x1 CC4 interrupt enabled. 0x1 TIE Trigger interrupt enable 6 1 read-write B_0x0 Trigger interrupt disabled. 0x0 B_0x1 Trigger interrupt enabled. 0x1 UDE Update DMA request enable 8 1 read-write B_0x0 Update DMA request disabled. 0x0 B_0x1 Update DMA request enabled. 0x1 CC1DE Capture/Compare 1 DMA request enable 9 1 read-write B_0x0 CC1 DMA request disabled. 0x0 B_0x1 CC1 DMA request enabled. 0x1 CC2DE Capture/Compare 2 DMA request enable 10 1 read-write B_0x0 CC2 DMA request disabled. 0x0 B_0x1 CC2 DMA request enabled. 0x1 CC3DE Capture/Compare 3 DMA request enable 11 1 read-write B_0x0 CC3 DMA request disabled. 0x0 B_0x1 CC3 DMA request enabled. 0x1 CC4DE Capture/Compare 4 DMA request enable 12 1 read-write B_0x0 CC4 DMA request disabled. 0x0 B_0x1 CC4 DMA request enabled. 0x1 TDE Trigger DMA request enable 14 1 read-write B_0x0 Trigger DMA request disabled. 0x0 B_0x1 Trigger DMA request enabled. 0x1 SR SR status register 0x10 0x20 read-write 0x0000 UIF Update interrupt flag This bit is set by hardware on an update event. It is cleared by software. At overflow or underflow and if UDIS=0 in the TIMx_CR1 register. When CNT is reinitialized by software using the UG bit in TIMx_EGR register, if URS=0 and UDIS=0 in the TIMx_CR1 register. When CNT is reinitialized by a trigger event (refer to the synchro control register description), if URS=0 and UDIS=0 in the TIMx_CR1 register. 0 1 read-write B_0x0 No update occurred 0x0 B_0x1 Update interrupt pending. This bit is set by hardware when the registers are updated: 0x1 CC1IF Capture/compare 1 interrupt flag This flag is set by hardware. It is cleared by software (input capture or output compare mode) or by reading the TIMx_CCR1 register (input capture mode only). If channel CC1 is configured as output: this flag is set when the content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. When the content of TIMx_CCR1 is greater than the content of TIMx_ARR, the CC1IF bit goes high on the counter overflow (in up-counting and up/down-counting modes) or underflow (in down-counting mode). There are 3 possible options for flag setting in center-aligned mode, refer to the CMS bits in the TIMx_CR1 register for the full description. If channel CC1 is configured as input: this bit is set when counter value has been captured in TIMx_CCR1 register (an edge has been detected on IC1, as per the edge sensitivity defined with the CC1P and CC1NP bits setting, in TIMx_CCER). 1 1 read-write B_0x0 No compare match / No input capture occurred 0x0 B_0x1 A compare match or an input capture occurred 0x1 CC2IF Capture/Compare 2 interrupt flag Refer to CC1IF description 2 1 read-write CC3IF Capture/Compare 3 interrupt flag Refer to CC1IF description 3 1 read-write CC4IF Capture/Compare 4 interrupt flag Refer to CC1IF description 4 1 read-write TIF Trigger interrupt flag This flag is set by hardware on the TRG trigger event (active edge detected on TRGI input when the slave mode controller is enabled in all modes but gated mode. It is set when the counter starts or stops when gated mode is selected. It is cleared by software. 6 1 read-write B_0x0 No trigger event occurred. 0x0 B_0x1 Trigger interrupt pending. 0x1 CC1OF Capture/Compare 1 overcapture flag This flag is set by hardware only when the corresponding channel is configured in input capture mode. It is cleared by software by writing it to '0’. 9 1 read-write B_0x0 No overcapture has been detected. 0x0 B_0x1 The counter value has been captured in TIMx_CCR1 register while CC1IF flag was already set 0x1 CC2OF Capture/compare 2 overcapture flag refer to CC1OF description 10 1 read-write CC3OF Capture/Compare 3 overcapture flag refer to CC1OF description 11 1 read-write CC4OF Capture/Compare 4 overcapture flag refer to CC1OF description 12 1 read-write EGR EGR event generation register 0x14 0x20 write-only 0x0000 UG Update generation This bit can be set by software, it is automatically cleared by hardware. 0 1 write-only B_0x0 No action 0x0 B_0x1 Re-initialize the counter and generates an update of the registers. Note that the prescaler counter is cleared too (anyway the prescaler ratio is not affected). The counter is cleared if the center-aligned mode is selected or if DIR=0 (upcounting), else it takes the auto-reload value (TIMx_ARR) if DIR=1 (downcounting). 0x1 CC1G Capture/compare 1 generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. If channel CC1 is configured as output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If channel CC1 is configured as input: The current value of the counter is captured in TIMx_CCR1 register. The CC1IF flag is set, the corresponding interrupt or DMA request is sent if enabled. The CC1OF flag is set if the CC1IF flag was already high. 1 1 write-only B_0x0 No action 0x0 B_0x1 A capture/compare event is generated on channel 1: 0x1 CC2G Capture/compare 2 generation Refer to CC1G description 2 1 write-only CC3G Capture/compare 3 generation Refer to CC1G description 3 1 write-only CC4G Capture/compare 4 generation Refer to CC1G description 4 1 write-only TG Trigger generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. 6 1 write-only B_0x0 No action 0x0 B_0x1 The TIF flag is set in TIMx_SR register. Related interrupt or DMA transfer can occur if enabled. 0x1 CCMR1_Output CCMR1_Output capture/compare mode register 1 (output mode) 0x18 0x20 read-write 0x00000000 OC2M_3 Output Compare 2 mode - bit 3 24 1 OC1M_3 Output Compare 1 mode - bit 3 16 1 OC2CE Output compare 2 clear enable 15 1 OC2M Output compare 2 mode 12 3 OC2PE Output compare 2 preload enable 11 1 OC2FE Output compare 2 fast enable 10 1 CC2S Capture/compare 2 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC2S bits are writable only when the channel is OFF (CC2E = 0 in TIMx_CCER). 8 2 read-write B_0x0 CC2 channel is configured as output. 0x0 B_0x1 CC2 channel is configured as input, IC2 is mapped on TI2. 0x1 B_0x2 CC2 channel is configured as input, IC2 is mapped on TI1. 0x2 B_0x3 CC2 channel is configured as input, IC2 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 OC1CE Output compare 1 clear enable 7 1 read-write B_0x0 OC1Ref is not affected by the ETRF input 0x0 B_0x1 OC1Ref is cleared as soon as a High level is detected on ETRF input 0x1 OC1M1 Output compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. Note: In PWM mode, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode. Note: The OC1M[3] bit is not contiguous, located in bit 16. 4 3 read-write B_0x0 Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs.(this mode is used to generate a timing base). 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - In upcounting, channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. In downcounting, channel 1 is inactive (OC1REF='0) as long as TIMx_CNT>TIMx_CCR1 else active (OC1REF=1). 0x6 B_0x7 PWM mode 2 - In upcounting, channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. In downcounting, channel 1 is active as long as TIMx_CNT>TIMx_CCR1 else inactive. 0x7 B_0x8 Retriggerable OPM mode 1 - In up-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes inactive again at the next update. In down-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes inactive again at the next update. 0x8 B_0x9 Retriggerable OPM mode 2 - In up-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 2 and the channels becomes inactive again at the next update. In down-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. 0x9 B_0xC Combined PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC is the logical OR between OC1REF and OC2REF. 0xC B_0xD Combined PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC is the logical AND between OC1REF and OC2REF. 0xD B_0xE Asymmetric PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC outputs OC1REF when the counter is counting up, OC2REF when it is counting down. 0xE B_0xF Asymmetric PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC outputs OC1REF when the counter is counting up, OC2REF when it is counting down. 0xF OC1PE Output compare 1 preload enable Note: The PWM mode can be used without validating the preload register only in one-pulse mode (OPM bit set in TIMx_CR1 register). Else the behavior is not guaranteed. 3 1 read-write B_0x0 Preload register on TIMx_CCR1 disabled. TIMx_CCR1 can be written at anytime, the new value is taken in account immediately. 0x0 B_0x1 Preload register on TIMx_CCR1 enabled. Read/Write operations access the preload register. TIMx_CCR1 preload value is loaded in the active register at each update event. 0x1 OC1FE Output compare 1 fast enable 2 1 CC1S Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC1S bits are writable only when the channel is OFF (CC1E = 0 in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1 0x1 B_0x2 CC1 channel is configured as input, IC1 is mapped on TI2 0x2 B_0x3 CC1 channel is configured as input, IC1 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 CCMR1_Input CCMR1_Input capture/compare mode register 1 (input mode) CCMR1_Output 0x18 0x20 read-write 0x00000000 IC2F Input capture 2 filter 12 4 IC2PSC Input capture 2 prescaler 10 2 CC2S Capture/compare 2 selection 8 2 IC1F Input capture 1 filter 4 4 IC1PSC Input capture 1 prescaler 2 2 CC1S Capture/Compare 1 selection 0 2 CCMR2_Output CCMR2_Output capture/compare mode register 2 (output mode) 0x1C 0x20 read-write 0x00000000 OC4M_3 Output Compare 4 mode - bit 3 24 1 OC3M_3 Output Compare 3 mode - bit 3 16 1 OC4CE Output compare 4 clear enable 15 1 OC4M Output compare 4 mode 12 3 OC4PE Output compare 4 preload enable 11 1 OC4FE Output compare 4 fast enable 10 1 CC4S Capture/Compare 4 selection 8 2 OC3CE Output compare 3 clear enable 7 1 OC3M Output compare 3 mode 4 3 OC3PE Output compare 3 preload enable 3 1 OC3FE Output compare 3 fast enable 2 1 CC3S Capture/Compare 3 selection 0 2 CCMR2_Input CCMR2_Input capture/compare mode register 2 (input mode) CCMR2_Output 0x1C 0x20 read-write 0x00000000 IC4F Input capture 4 filter 12 4 IC4PSC Input capture 4 prescaler 10 2 CC4S Capture/Compare 4 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC4S bits are writable only when the channel is OFF (CC4E = 0 in TIMx_CCER). 8 2 read-write B_0x0 CC4 channel is configured as output 0x0 B_0x1 CC4 channel is configured as input, IC4 is mapped on TI4 0x1 B_0x2 CC4 channel is configured as input, IC4 is mapped on TI3 0x2 B_0x3 CC4 channel is configured as input, IC4 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 IC3F Input capture 3 filter 4 4 IC3PSC Input capture 3 prescaler 2 2 CC3S Capture/Compare 3 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC3S bits are writable only when the channel is OFF (CC3E = 0 in TIMx_CCER). 0 2 read-write B_0x0 CC3 channel is configured as output 0x0 B_0x1 CC3 channel is configured as input, IC3 is mapped on TI3 0x1 B_0x2 CC3 channel is configured as input, IC3 is mapped on TI4 0x2 B_0x3 CC3 channel is configured as input, IC3 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 CCER CCER capture/compare enable register 0x20 0x20 read-write 0x0000 CC1E Capture/Compare 1 output enable. 0 1 read-write B_0x0 Capture mode disabled / OC1 is not active 0x0 B_0x1 Capture mode enabled / OC1 signal is output on the corresponding output pin 0x1 CC1P Capture/Compare 1 output Polarity. When CC1 channel is configured as input, both CC1NP/CC1P bits select the active polarity of TI1FP1 and TI2FP1 for trigger or capture operations. CC1NP=0, CC1P=0: non-inverted/rising edge. The circuit is sensitive to TIxFP1 rising edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is not inverted (trigger operation in gated mode or encoder mode). CC1NP=0, CC1P=1: inverted/falling edge. The circuit is sensitive to TIxFP1 falling edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is inverted (trigger operation in gated mode or encoder mode). CC1NP=1, CC1P=1: non-inverted/both edges. The circuit is sensitive to both TIxFP1 rising and falling edges (capture or trigger operations in reset, external clock or trigger mode), TIxFP1is not inverted (trigger operation in gated mode). This configuration must not be used in encoder mode. CC1NP=1, CC1P=0: This configuration is reserved, it must not be used. 1 1 read-write B_0x0 OC1 active high (output mode) / Edge sensitivity selection (input mode, see below) 0x0 B_0x1 OC1 active low (output mode) / Edge sensitivity selection (input mode, see below) 0x1 CC1NP Capture/Compare 1 output Polarity. CC1 channel configured as output: CC1NP must be kept cleared in this case. CC1 channel configured as input: This bit is used in conjunction with CC1P to define TI1FP1/TI2FP1 polarity. refer to CC1P description. 3 1 read-write CC2E Capture/Compare 2 output enable. Refer to CC1E description 4 1 read-write CC2P Capture/Compare 2 output Polarity. refer to CC1P description 5 1 read-write CC2NP Capture/Compare 2 output Polarity. Refer to CC1NP description 7 1 read-write CC3E Capture/Compare 3 output enable. Refer to CC1E description 8 1 read-write CC3P Capture/Compare 3 output Polarity. Refer to CC1P description 9 1 read-write CC3NP Capture/Compare 3 output Polarity. Refer to CC1NP description 11 1 read-write CC4E Capture/Compare 4 output enable. refer to CC1E description 12 1 read-write CC4P Capture/Compare 4 output Polarity. Refer to CC1P description 13 1 read-write CC4NP Capture/Compare 4 output Polarity. Refer to CC1NP description 15 1 read-write CNT CNT counter 0x24 0x20 read-write 0x00000000 CNT_H High counter value (TIM2 only) 16 16 CNT_L Low counter value 0 16 CNT_ALTERNATE5 CNT_ALTERNATE5 counter CNT 0x24 0x20 read-write 0x00000000 CNT Most significant part counter value (TIM2) nullLeast significant part of counter value 0 31 read-write UIFCPY UIF Copy This bit is a read-only copy of the UIF bit of the TIMx_ISR register 31 1 read-write PSC PSC prescaler 0x28 0x20 read-write 0x0000 PSC Prescaler value 0 16 ARR ARR auto-reload register 0x2C 0x20 read-write 0xFFFFFFFF ARR High auto-reload value (TIM2) nullLow Auto-reload value ARR is the value to be loaded in the actual auto-reload register. Refer to the for more details about ARR update and behavior. The counter is blocked while the auto-reload value is null. 0 32 read-write CCR1 CCR1 capture/compare register 1 0x34 0x20 read-write 0x00000000 CCR1 High Capture/Compare 1 value (TIM2) nullLow Capture/Compare 1 value If channel CC1 is configured as output: CCR1 is the value to be loaded in the actual capture/compare 1 register (preload value). It is loaded permanently if the preload feature is not selected in the TIMx_CCMR1 register (bit OC1PE). Else the preload value is copied in the active capture/compare 1 register when an update event occurs. The active capture/compare register contains the value to be compared to the counter TIMx_CNT and signaled on OC1 output. If channel CC1is configured as input: CCR1 is the counter value transferred by the last input capture 1 event (IC1). The TIMx_CCR1 register is read-only and cannot be programmed. 0 32 read-write CCR2 CCR2 capture/compare register 2 0x38 0x20 read-write 0x00000000 CCR2 High Capture/Compare 2 value (TIM2) nullLow Capture/Compare 2 value If channel CC2 is configured as output: CCR2 is the value to be loaded in the actual capture/compare 2 register (preload value). It is loaded permanently if the preload feature is not selected in the TIMx_CCMR1 register (bit OC2PE). Else the preload value is copied in the active capture/compare 2 register when an update event occurs. The active capture/compare register contains the value to be compared to the counter TIMx_CNT and signalled on OC2 output. If channel CC2 is configured as input: CCR2 is the counter value transferred by the last input capture 2 event (IC2). The TIMx_CCR2 register is read-only and cannot be programmed. 0 32 read-write CCR3 CCR3 capture/compare register 3 0x3C 0x20 read-write 0x00000000 CCR3 High Capture/Compare 3 value (TIM2) nullLow Capture/Compare value If channel CC3 is configured as output: CCR3 is the value to be loaded in the actual capture/compare 3 register (preload value). It is loaded permanently if the preload feature is not selected in the TIMx_CCMR2 register (bit OC3PE). Else the preload value is copied in the active capture/compare 3 register when an update event occurs. The active capture/compare register contains the value to be compared to the counter TIMx_CNT and signalled on OC3 output. If channel CC3is configured as input: CCR3 is the counter value transferred by the last input capture 3 event (IC3). The TIMx_CCR3 register is read-only and cannot be programmed. 0 32 read-write CCR4 CCR4 capture/compare register 4 0x40 0x20 read-write 0x00000000 CCR4 High Capture/Compare 4 value (TIM2) nullLow Capture/Compare value if CC4 channel is configured as output (CC4S bits): CCR4 is the value to be loaded in the actual capture/compare 4 register (preload value). It is loaded permanently if the preload feature is not selected in the TIMx_CCMR2 register (bit OC4PE). Else the preload value is copied in the active capture/compare 4 register when an update event occurs. The active capture/compare register contains the value to be compared to the counter TIMx_CNT and signalled on OC4 output. if CC4 channel is configured as input (CC4S bits in TIMx_CCMR4 register): CCR4 is the counter value transferred by the last input capture 4 event (IC4). The TIMx_CCR4 register is read-only and cannot be programmed. 0 32 read-write DCR DCR DMA control register 0x48 0x20 read-write 0x0000 DBA DMA base address This 5-bit vector defines the base-address for DMA transfers (when read/write access are done through the TIMx_DMAR address). DBA is defined as an offset starting from the address of the TIMx_CR1 register. Example: ... Example: Let us consider the following transfer: DBL = 7 transfers & DBA = TIMx_CR1. In this case the transfer is done to/from 7 registers starting from the TIMx_CR1 address. 0 5 read-write B_0x0 TIMx_CR1 0x0 B_0x1 TIMx_CR2 0x1 B_0x2 TIMx_SMCR 0x2 DBL DMA burst length This 5-bit vector defines the number of DMA transfers (the timer recognizes a burst transfer when a read or a write access is done to the TIMx_DMAR address). ... 8 5 read-write B_0x0 1 transfer, 0x0 B_0x1 2 transfers, 0x1 B_0x2 3 transfers, 0x2 B_0x11 18 transfers. 0x11 DMAR DMAR DMA address for full transfer 0x4C 0x20 read-write 0x0000 DMAB DMA register for burst accesses 0 16 OR1 OR1 TIM option register 0x50 0x20 read-write 0x0000 OCREF_CLR Ocref_clr source selection This bit selects the ocref_clr input source. 0 1 read-write B_0x0 COMP1 output is connected to the OCREF_CLR input 0x0 B_0x1 COMP2 output is connected to the OCREF_CLR input 0x1 AF1 AF1 TIM alternate function option register 1 0x60 0x20 read-write 0x0000 ETRSEL ETR source selection These bits select the ETR input source. Others: Reserved 14 4 read-write B_0x0 ETR legacy mode 0x0 B_0x1 COMP1 0x1 B_0x2 COMP2 0x2 B_0x3 LSE 0x3 TISEL TISEL TIM alternate function option register 1 0x68 0x20 read-write 0x0000 TI1SEL TI1[0] to TI1[15] input selection These bits select the TI1[0] to TI1[15] input source. Others: Reserved 0 4 read-write B_0x0 TIM2_CH1 input 0x0 B_0x1 COMP1 output 0x1 TI2SEL TI2[0] to TI2[15] input selection These bits select the TI2[0] to TI2[15] input source. Others: Reserved 8 4 read-write B_0x0 TIM2_CH2 input 0x0 B_0x1 COMP2 output 0x1 TIM3 0x40000400 TIM3_TIM4 TIM3 global interrupt 16 TIM4 0x40000800 TIM6 Basic timers TIM 0x40001000 0x0 0x400 registers TIM6_DAC TIM6 + LPTIM1 and DAC global interrupt 17 CR1 CR1 control register 1 0x0 0x20 read-write 0x0000 CEN Counter enable Note: Gated mode can work only if the CEN bit has been previously set by software. However trigger mode can set the CEN bit automatically by hardware. CEN is cleared automatically in one-pulse mode, when an update event occurs. 0 1 read-write B_0x0 Counter disabled 0x0 B_0x1 Counter enabled 0x1 UDIS Update disable This bit is set and cleared by software to enable/disable UEV event generation. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller Buffered registers are then loaded with their preload values. 1 1 read-write B_0x0 UEV enabled. The Update (UEV) event is generated by one of the following events: 0x0 B_0x1 UEV disabled. The Update event is not generated, shadow registers keep their value (ARR, PSC). However the counter and the prescaler are reinitialized if the UG bit is set or if a hardware reset is received from the slave mode controller. 0x1 URS Update request source This bit is set and cleared by software to select the UEV event sources. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller 2 1 read-write B_0x0 Any of the following events generates an update interrupt or DMA request if enabled. These events can be: 0x0 B_0x1 Only counter overflow/underflow generates an update interrupt or DMA request if enabled. 0x1 OPM One-pulse mode 3 1 read-write B_0x0 Counter is not stopped at update event 0x0 B_0x1 Counter stops counting at the next update event (clearing the CEN bit). 0x1 ARPE Auto-reload preload enable 7 1 read-write B_0x0 TIMx_ARR register is not buffered. 0x0 B_0x1 TIMx_ARR register is buffered. 0x1 UIFREMAP UIF status bit remapping 11 1 read-write B_0x0 No remapping. UIF status bit is not copied to TIMx_CNT register bit 31. 0x0 B_0x1 Remapping enabled. UIF status bit is copied to TIMx_CNT register bit 31. 0x1 CR2 CR2 control register 2 0x4 0x20 read-write 0x0000 MMS Master mode selection These bits are used to select the information to be sent in master mode to slave timers for synchronization (TRGO). The combination is as follows: When the Counter Enable signal is controlled by the trigger input, there is a delay on TRGO, except if the master/slave mode is selected (see the MSM bit description in the TIMx_SMCR register). Note: The clock of the slave timer or ADC must be enabled prior to receive events from the master timer, and must not be changed on-the-fly while triggers are received from the master timer. 4 3 read-write B_0x0 Reset - the UG bit from the TIMx_EGR register is used as a trigger output (TRGO). If reset is generated by the trigger input (slave mode controller configured in reset mode) then the signal on TRGO is delayed compared to the actual reset. 0x0 B_0x1 Enable - the Counter enable signal, CNT_EN, is used as a trigger output (TRGO). It is useful to start several timers at the same time or to control a window in which a slave timer is enabled. The Counter Enable signal is generated by a logic OR between CEN control bit and the trigger input when configured in gated mode. 0x1 B_0x2 Update - The update event is selected as a trigger output (TRGO). For instance a master timer can then be used as a prescaler for a slave timer. 0x2 DIER DIER DMA/Interrupt enable register 0xC 0x20 read-write 0x0000 UIE Update interrupt enable 0 1 read-write B_0x0 Update interrupt disabled. 0x0 B_0x1 Update interrupt enabled. 0x1 UDE Update DMA request enable 8 1 read-write B_0x0 Update DMA request disabled. 0x0 B_0x1 Update DMA request enabled. 0x1 SR SR status register 0x10 0x20 read-write 0x0000 UIF Update interrupt flag This bit is set by hardware on an update event. It is cleared by software. At overflow or underflow regarding the repetition counter value and if UDIS = 0 in the TIMx_CR1 register. When CNT is reinitialized by software using the UG bit in the TIMx_EGR register, if URS = 0 and UDIS = 0 in the TIMx_CR1 register. 0 1 read-write B_0x0 No update occurred. 0x0 B_0x1 Update interrupt pending. This bit is set by hardware when the registers are updated: 0x1 EGR EGR event generation register 0x14 0x20 write-only 0x0000 UG Update generation This bit can be set by software, it is automatically cleared by hardware. 0 1 write-only B_0x0 No action. 0x0 B_0x1 Re-initializes the timer counter and generates an update of the registers. Note that the prescaler counter is cleared too (but the prescaler ratio is not affected). 0x1 CNT CNT counter 0x24 0x20 read-write 0x00000000 CNT Counter value 0 16 read-write UIFCPY UIF Copy This bit is a read-only copy of the UIF bit of the TIMx_ISR register. If the UIFREMAP bit in TIMx_CR1 is reset, bit 31 is reserved and read as 0. 31 1 read-only PSC PSC prescaler 0x28 0x20 read-write 0x0000 PSC Prescaler value 0 16 ARR ARR auto-reload register 0x2C 0x20 read-write 0x0000FFFF ARR Prescaler value 0 16 TIM7 0x40001400 TIM7 TIM7 + LPTIM2 global interrupt 18 TIM14 General purpose timers TIM 0x40002000 0x0 0x400 registers TIM14 TIM14 global interrupt 19 CR1 CR1 control register 1 0x0 0x20 read-write 0x0000 CEN Counter enable Note: External clock and gated mode can work only if the CEN bit has been previously set by software. However trigger mode can set the CEN bit automatically by hardware. 0 1 read-write B_0x0 Counter disabled 0x0 B_0x1 Counter enabled 0x1 UDIS Update disable This bit is set and cleared by software to enable/disable update interrupt (UEV) event generation. Counter overflow Setting the UG bit. Buffered registers are then loaded with their preload values. 1 1 read-write B_0x0 UEV enabled. An UEV is generated by one of the following events: 0x0 B_0x1 UEV disabled. No UEV is generated, shadow registers keep their value (ARR, PSC, CCRx). The counter and the prescaler are reinitialized if the UG bit is set. 0x1 URS Update request source This bit is set and cleared by software to select the update interrupt (UEV) sources. Counter overflow Setting the UG bit 2 1 read-write B_0x0 Any of the following events generate an UEV if enabled: 0x0 B_0x1 Only counter overflow generates an UEV if enabled. 0x1 OPM One-pulse mode 3 1 read-write B_0x0 Counter is not stopped on the update event 0x0 B_0x1 Counter stops counting on the next update event (clearing the CEN bit). 0x1 ARPE Auto-reload preload enable 7 1 read-write B_0x0 TIMx_ARR register is not buffered 0x0 B_0x1 TIMx_ARR register is buffered 0x1 CKD Clock division This bit-field indicates the division ratio between the timer clock (CK_INT) frequency and sampling clock used by the digital filters (TIx), 8 2 read-write B_0x0 tDTS = tCK_INT 0x0 B_0x1 tDTS = 2 × tCK_INT 0x1 B_0x2 tDTS = 4 × tCK_INT 0x2 UIFREMAP UIF status bit remapping 11 1 read-write B_0x0 No remapping. UIF status bit is not copied to TIMx_CNT register bit 31. 0x0 B_0x1 Remapping enabled. UIF status bit is copied to TIMx_CNT register bit 31. 0x1 DIER DIER DMA/Interrupt enable register 0xC 0x20 read-write 0x0000 UIE Update interrupt enable 0 1 read-write B_0x0 Update interrupt disabled 0x0 B_0x1 Update interrupt enabled 0x1 CC1IE Capture/Compare 1 interrupt enable 1 1 read-write B_0x0 CC1 interrupt disabled 0x0 B_0x1 CC1 interrupt enabled 0x1 SR SR status register 0x10 0x20 read-write 0x0000 UIF Update interrupt flag This bit is set by hardware on an update event. It is cleared by software. At overflow and if UDIS=’0’ in the TIMx_CR1 register. When CNT is reinitialized by software using the UG bit in TIMx_EGR register, if URS=’0’ and UDIS=’0’ in the TIMx_CR1 register. 0 1 read-write B_0x0 No update occurred. 0x0 B_0x1 Update interrupt pending. This bit is set by hardware when the registers are updated: 0x1 CC1IF Capture/compare 1 interrupt flag This flag is set by hardware. It is cleared by software (input capture or output compare mode) or by reading the TIMx_CCR1 register (input capture mode only). If channel CC1 is configured as output: this flag is set when he content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. When the content of TIMx_CCR1 is greater than the content of TIMx_ARR, the CC1IF bit goes high on the counter overflow (in up-counting and up/down-counting modes) or underflow (in down-counting mode). There are 3 possible options for flag setting in center-aligned mode, refer to the CMS bits in the TIMx_CR1 register for the full description. If channel CC1 is configured as input: this bit is set when counter value has been captured in TIMx_CCR1 register (an edge has been detected on IC1, as per the edge sensitivity defined with the CC1P and CC1NP bits setting, in TIMx_CCER). 1 1 read-write B_0x0 No compare match / No input capture occurred 0x0 B_0x1 A compare match or an input capture occurred. 0x1 CC1OF Capture/Compare 1 overcapture flag This flag is set by hardware only when the corresponding channel is configured in input capture mode. It is cleared by software by writing it to '0’. 9 1 read-write B_0x0 No overcapture has been detected. 0x0 B_0x1 The counter value has been captured in TIMx_CCR1 register while CC1IF flag was already set 0x1 EGR EGR event generation register 0x14 0x20 write-only 0x0000 UG Update generation This bit can be set by software, it is automatically cleared by hardware. 0 1 write-only B_0x0 No action 0x0 B_0x1 Re-initialize the counter and generates an update of the registers. Note that the prescaler counter is cleared too (anyway the prescaler ratio is not affected). The counter is cleared. 0x1 CC1G Capture/compare 1 generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. If channel CC1 is configured as output: CC1IF flag is set, Corresponding interrupt or is sent if enabled. If channel CC1 is configured as input: The current value of the counter is captured in TIMx_CCR1 register. The CC1IF flag is set, the corresponding interrupt is sent if enabled. The CC1OF flag is set if the CC1IF flag was already high. 1 1 write-only B_0x0 No action 0x0 B_0x1 A capture/compare event is generated on channel 1: 0x1 CCMR1_Output CCMR1_Output capture/compare mode register 1 (output mode) 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC1S bits are writable only when the channel is OFF (CC1E = 0 in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output. 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1. 0x1 OC1FE Output compare 1 fast enable This bit decreases the latency between a trigger event and a transition on the timer output. It must be used in one-pulse mode (OPM bit set in TIMx_CR1 register), to have the output pulse starting as soon as possible after the starting trigger. 2 1 read-write B_0x0 CC1 behaves normally depending on counter and CCR1 values even when the trigger is ON. The minimum delay to activate CC1 output when an edge occurs on the trigger input is 5 clock cycles. 0x0 B_0x1 An active edge on the trigger input acts like a compare match on CC1 output. OC is then set to the compare level independently of the result of the comparison. Delay to sample the trigger input and to activate CC1 output is reduced to 3 clock cycles. OC1FE acts only if the channel is configured in PWM1 or PWM2 mode. 0x1 OC1PE Output compare 1 preload enable Note: The PWM mode can be used without validating the preload register only in one pulse mode (OPM bit set in TIMx_CR1 register). Else the behavior is not guaranteed. 3 1 read-write B_0x0 Preload register on TIMx_CCR1 disabled. TIMx_CCR1 can be written at anytime, the new value is taken in account immediately. 0x0 B_0x1 Preload register on TIMx_CCR1 enabled. Read/Write operations access the preload register. TIMx_CCR1 preload value is loaded in the active register at each update event. 0x1 OC1M1 Output compare 1 mode (refer to bit 16 for OC1M[3]) These bits define the behavior of the output reference signal OC1REF from which OC1 is derived. OC1REF is active high whereas OC1 active level depends on CC1P bit. Others: Reserved Note: In PWM mode 1 or 2, the OCREF level changes when the result of the comparison changes or when the output compare mode switches from frozen to PWM mode. Note: The OC1M[3] bit is not contiguous, located in bit 16. 4 3 read-write B_0x0 Frozen. The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs. 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT = TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - Channel 1 is active as long as TIMx_CNT < TIMx_CCR1 else inactive. 0x6 B_0x7 PWM mode 2 - Channel 1 is inactive as long as TIMx_CNT < TIMx_CCR1 else active 0x7 OC1M2 Output compare 1 mode (refer to bit 16 for OC1M[3]) These bits define the behavior of the output reference signal OC1REF from which OC1 is derived. OC1REF is active high whereas OC1 active level depends on CC1P bit. Others: Reserved Note: In PWM mode 1 or 2, the OCREF level changes when the result of the comparison changes or when the output compare mode switches from frozen to PWM mode. Note: The OC1M[3] bit is not contiguous, located in bit 16. 16 1 read-write B_0x0 Frozen. The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs. 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT = TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - Channel 1 is active as long as TIMx_CNT < TIMx_CCR1 else inactive. 0x6 B_0x7 PWM mode 2 - Channel 1 is inactive as long as TIMx_CNT < TIMx_CCR1 else active 0x7 CCMR1_Input CCMR1_Input capture/compare mode register 1 (input mode) CCMR1_Output 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC1S bits are writable only when the channel is OFF (CC1E = 0 in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1 0x1 IC1PSC Input capture 1 prescaler This bit-field defines the ratio of the prescaler acting on CC1 input (IC1). The prescaler is reset as soon as CC1E=’0’ (TIMx_CCER register). 2 2 read-write B_0x0 no prescaler, capture is done each time an edge is detected on the capture input 0x0 B_0x1 capture is done once every 2 events 0x1 B_0x2 capture is done once every 4 events 0x2 B_0x3 capture is done once every 8 events 0x3 IC1F Input capture 1 filter This bit-field defines the frequency used to sample TI1 input and the length of the digital filter applied to TI1. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: 4 4 read-write B_0x0 No filter, sampling is done at fDTS 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF CCER CCER capture/compare enable register 0x20 0x20 read-write 0x0000 CC1E Capture/Compare 1 output enable. 0 1 read-write B_0x0 Capture mode disabled / OC1 is not active 0x0 B_0x1 Capture mode enabled / OC1 signal is output on the corresponding output pin 0x1 CC1P Capture/Compare 1 output Polarity. When CC1 channel is configured as input, both CC1NP/CC1P bits select the active polarity of TI1FP1 and TI2FP1 for trigger or capture operations. CC1NP=0, CC1P=0: non-inverted/rising edge. The circuit is sensitive to TIxFP1 rising edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is not inverted (trigger operation in gated mode or encoder mode). CC1NP=0, CC1P=1: inverted/falling edge. The circuit is sensitive to TIxFP1 falling edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is inverted (trigger operation in gated mode or encoder mode). CC1NP=1, CC1P=1: non-inverted/both edges/ The circuit is sensitive to both TIxFP1 rising and falling edges (capture or trigger operations in reset, external clock or trigger mode), TIxFP1is not inverted (trigger operation in gated mode). This configuration must not be used in encoder mode. CC1NP=1, CC1P=0: This configuration is reserved, it must not be used. 1 1 read-write B_0x0 OC1 active high (output mode) / Edge sensitivity selection (input mode, see below) 0x0 B_0x1 OC1 active low (output mode) / Edge sensitivity selection (input mode, see below) 0x1 CC1NP Capture/Compare 1 complementary output Polarity. CC1 channel configured as output: CC1NP must be kept cleared. CC1 channel configured as input: CC1NP bit is used in conjunction with CC1P to define TI1FP1 polarity (refer to CC1P description). 3 1 read-write CNT CNT counter 0x24 0x20 read-write 0x00000000 CNT low counter value 0 16 UIFCPY UIF Copy 31 1 PSC PSC prescaler 0x28 0x20 read-write 0x0000 PSC Prescaler value 0 16 ARR ARR auto-reload register 0x2C 0x20 read-write 0x00000000 ARR Low Auto-reload value 0 16 CCR1 CCR1 capture/compare register 1 0x34 0x20 read-write 0x00000000 CCR1 Low Capture/Compare 1 value 0 16 TISEL TISEL TIM timer input selection register 0x68 0x20 read-write 0x0000 TI1SEL selects TI1[0] to TI1[15] input Others: Reserved 0 4 read-write B_0x0 TIM14_CH1 input 0x0 B_0x1 RTC CLK 0x1 B_0x2 HSE/32 0x2 B_0x3 MCO 0x3 TIM15 General purpose timers TIM 0x40014000 0x0 0x400 registers TIM15 Timer 15 global interrupt 20 CR1 CR1 control register 1 0x0 0x20 read-write 0x0000 CEN Counter enable Note: External clock and gated mode can work only if the CEN bit has been previously set by software. However trigger mode can set the CEN bit automatically by hardware. 0 1 read-write B_0x0 Counter disabled 0x0 B_0x1 Counter enabled 0x1 UDIS Update disable This bit is set and cleared by software to enable/disable UEV event generation. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller Buffered registers are then loaded with their preload values. 1 1 read-write B_0x0 UEV enabled. The Update (UEV) event is generated by one of the following events: 0x0 B_0x1 UEV disabled. The Update event is not generated, shadow registers keep their value (ARR, PSC, CCRx). However the counter and the prescaler are reinitialized if the UG bit is set or if a hardware reset is received from the slave mode controller. 0x1 URS Update request source This bit is set and cleared by software to select the UEV event sources. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller 2 1 read-write B_0x0 Any of the following events generate an update interrupt if enabled. These events can be: 0x0 B_0x1 Only counter overflow/underflow generates an update interrupt if enabled 0x1 OPM One-pulse mode 3 1 read-write B_0x0 Counter is not stopped at update event 0x0 B_0x1 Counter stops counting at the next update event (clearing the bit CEN) 0x1 ARPE Auto-reload preload enable 7 1 read-write B_0x0 TIMx_ARR register is not buffered 0x0 B_0x1 TIMx_ARR register is buffered 0x1 CKD Clock division This bitfield indicates the division ratio between the timer clock (CK_INT) frequency and the dead-time and sampling clock (tDTS) used by the dead-time generators and the digital filters (TIx) 8 2 read-write B_0x0 tDTS = tCK_INT 0x0 B_0x1 tDTS = 2*tCK_INT 0x1 B_0x2 tDTS = 4*tCK_INT 0x2 B_0x3 Reserved, do not program this value 0x3 UIFREMAP UIF status bit remapping 11 1 read-write B_0x0 No remapping. UIF status bit is not copied to TIMx_CNT register bit 31. 0x0 B_0x1 Remapping enabled. UIF status bit is copied to TIMx_CNT register bit 31. 0x1 CR2 CR2 control register 2 0x4 0x20 read-write 0x0000 CCPC Capture/compare preloaded control Note: This bit acts only on channels that have a complementary output. 0 1 read-write B_0x0 CCxE, CCxNE and OCxM bits are not preloaded 0x0 B_0x1 CCxE, CCxNE and OCxM bits are preloaded, after having been written, they are updated only when a commutation event (COM) occurs (COMG bit set or rising edge detected on TRGI, depending on the CCUS bit). 0x1 CCUS Capture/compare control update selection Note: This bit acts only on channels that have a complementary output. 2 1 read-write B_0x0 When capture/compare control bits are preloaded (CCPC=1), they are updated by setting the COMG bit only. 0x0 B_0x1 When capture/compare control bits are preloaded (CCPC=1), they are updated by setting the COMG bit or when an rising edge occurs on TRGI. 0x1 CCDS Capture/compare DMA selection 3 1 read-write B_0x0 CCx DMA request sent when CCx event occurs 0x0 B_0x1 CCx DMA requests sent when update event occurs 0x1 MMS Master mode selection These bits allow to select the information to be sent in master mode to slave timers for synchronization (TRGO). The combination is as follows: 4 3 read-write B_0x0 Reset - the UG bit from the TIMx_EGR register is used as trigger output (TRGO). If the reset is generated by the trigger input (slave mode controller configured in reset mode) then the signal on TRGO is delayed compared to the actual reset. 0x0 B_0x1 Enable - the Counter Enable signal CNT_EN is used as trigger output (TRGO). It is useful to start several timers at the same time or to control a window in which a slave timer is enable. The Counter Enable signal is generated by a logic AND between CEN control bit and the trigger input when configured in gated mode. When the Counter Enable signal is controlled by the trigger input, there is a delay on TRGO, except if the master/slave mode is selected (see the MSM bit description in TIMx_SMCR register). 0x1 B_0x2 Update - The update event is selected as trigger output (TRGO). For instance a master timer can then be used as a prescaler for a slave timer. 0x2 B_0x3 Compare Pulse - The trigger output send a positive pulse when the CC1IF flag is to be set (even if it was already high), as soon as a capture or a compare match occurred. (TRGO). 0x3 B_0x4 Compare - OC1REFC signal is used as trigger output (TRGO). 0x4 B_0x5 Compare - OC2REFC signal is used as trigger output (TRGO). 0x5 TI1S TI1 selection 7 1 read-write B_0x0 The TIMx_CH1 pin is connected to TI1 input 0x0 B_0x1 The TIMx_CH1, CH2 pins are connected to the TI1 input (XOR combination) 0x1 OIS1 Output Idle state 1 (OC1 output) Note: This bit can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIM15_BDTR register). 8 1 read-write B_0x0 OC1=0 (after a dead-time if OC1N is implemented) when MOE=0 0x0 B_0x1 OC1=1 (after a dead-time if OC1N is implemented) when MOE=0 0x1 OIS1N Output Idle state 1 (OC1N output) Note: This bit can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIM15_BDTR register). 9 1 read-write B_0x0 OC1N=0 after a dead-time when MOE=0 0x0 B_0x1 OC1N=1 after a dead-time when MOE=0 0x1 OIS2 Output idle state 2 (OC2 output) Note: This bit cannot be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in the TIM15_BDTR register). 10 1 read-write B_0x0 OC2=0 when MOE=0 0x0 B_0x1 OC2=1 when MOE=0 0x1 SMCR SMCR slave mode control register 0x8 0x20 read-write 0x0000 SMS1 Slave mode selection When external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description. Other codes: reserved. Note: The gated mode must not be used if TI1F_ED is selected as the trigger input (TS=’00100’). Indeed, TI1F_ED outputs 1 pulse for each transition on TI1F, whereas the gated mode checks the level of the trigger signal. Note: The clock of the slave peripherals (timer, ADC, ...) receiving the TRGO or the TRGO2 signals must be enabled prior to receive events from the master timer, and the clock frequency (prescaler) must not be changed on-the-fly while triggers are received from the master timer. 0 3 read-write B_0x0 Slave mode disabled - if CEN = '1’ then the prescaler is clocked directly by the internal clock. 0x0 B_0x4 Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers. 0x4 B_0x5 Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled. 0x5 B_0x6 Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled. 0x6 B_0x7 External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter. 0x7 B_0x8 Combined reset + trigger mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter, generates an update of the registers and starts the counter. 0x8 TS1 Trigger selection This bit field selects the trigger input to be used to synchronize the counter. Other: Reserved See for more details on ITRx meaning for each Timer. Note: These bits must be changed only when they are not used (e.g. when SMS=000) to avoid wrong edge detections at the transition. 4 3 read-write B_0x0 Internal Trigger 0 (ITR0) 0x0 B_0x1 Internal Trigger 1 (ITR1) 0x1 B_0x2 Internal Trigger 2 (ITR2) 0x2 B_0x3 Internal Trigger 3 (ITR3) 0x3 B_0x4 TI1 Edge Detector (TI1F_ED) 0x4 B_0x5 Filtered Timer Input 1 (TI1FP1) 0x5 B_0x6 Filtered Timer Input 2 (TI2FP2) 0x6 MSM Master/slave mode 7 1 read-write B_0x0 No action 0x0 B_0x1 The effect of an event on the trigger input (TRGI) is delayed to allow a perfect synchronization between the current timer and its slaves (through TRGO). It is useful if we want to synchronize several timers on a single external event. 0x1 SMS2 Slave mode selection When external signals are selected the active edge of the trigger signal (TRGI) is linked to the polarity selected on the external input (see Input Control register and Control Register description. Other codes: reserved. Note: The gated mode must not be used if TI1F_ED is selected as the trigger input (TS=’00100’). Indeed, TI1F_ED outputs 1 pulse for each transition on TI1F, whereas the gated mode checks the level of the trigger signal. Note: The clock of the slave peripherals (timer, ADC, ...) receiving the TRGO or the TRGO2 signals must be enabled prior to receive events from the master timer, and the clock frequency (prescaler) must not be changed on-the-fly while triggers are received from the master timer. 16 1 read-write B_0x0 Slave mode disabled - if CEN = '1’ then the prescaler is clocked directly by the internal clock. 0x0 B_0x4 Reset Mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter and generates an update of the registers. 0x4 B_0x5 Gated Mode - The counter clock is enabled when the trigger input (TRGI) is high. The counter stops (but is not reset) as soon as the trigger becomes low. Both start and stop of the counter are controlled. 0x5 B_0x6 Trigger Mode - The counter starts at a rising edge of the trigger TRGI (but it is not reset). Only the start of the counter is controlled. 0x6 B_0x7 External Clock Mode 1 - Rising edges of the selected trigger (TRGI) clock the counter. 0x7 B_0x8 Combined reset + trigger mode - Rising edge of the selected trigger input (TRGI) reinitializes the counter, generates an update of the registers and starts the counter. 0x8 TS2 Trigger selection This bit field selects the trigger input to be used to synchronize the counter. Other: Reserved See for more details on ITRx meaning for each Timer. Note: These bits must be changed only when they are not used (e.g. when SMS=000) to avoid wrong edge detections at the transition. 20 2 read-write B_0x0 Internal Trigger 0 (ITR0) 0x0 B_0x1 Internal Trigger 1 (ITR1) 0x1 B_0x2 Internal Trigger 2 (ITR2) 0x2 B_0x3 Internal Trigger 3 (ITR3) 0x3 B_0x4 TI1 Edge Detector (TI1F_ED) 0x4 B_0x5 Filtered Timer Input 1 (TI1FP1) 0x5 B_0x6 Filtered Timer Input 2 (TI2FP2) 0x6 DIER DIER DMA/Interrupt enable register 0xC 0x20 read-write 0x0000 UIE Update interrupt enable 0 1 read-write B_0x0 Update interrupt disabled 0x0 B_0x1 Update interrupt enabled 0x1 CC1IE Capture/Compare 1 interrupt enable 1 1 read-write B_0x0 CC1 interrupt disabled 0x0 B_0x1 CC1 interrupt enabled 0x1 CC2IE Capture/Compare 2 interrupt enable 2 1 read-write B_0x0 CC2 interrupt disabled 0x0 B_0x1 CC2 interrupt enabled 0x1 COMIE COM interrupt enable 5 1 read-write B_0x0 COM interrupt disabled 0x0 B_0x1 COM interrupt enabled 0x1 TIE Trigger interrupt enable 6 1 read-write B_0x0 Trigger interrupt disabled 0x0 B_0x1 Trigger interrupt enabled 0x1 BIE Break interrupt enable 7 1 read-write B_0x0 Break interrupt disabled 0x0 B_0x1 Break interrupt enabled 0x1 UDE Update DMA request enable 8 1 read-write B_0x0 Update DMA request disabled 0x0 B_0x1 Update DMA request enabled 0x1 CC1DE Capture/Compare 1 DMA request enable 9 1 read-write B_0x0 CC1 DMA request disabled 0x0 B_0x1 CC1 DMA request enabled 0x1 CC2DE Capture/Compare 2 DMA request enable 10 1 read-write B_0x0 CC2 DMA request disabled 0x0 B_0x1 CC2 DMA request enabled 0x1 COMDE COM DMA request enable 13 1 read-write B_0x0 COM DMA request disabled 0x0 B_0x1 COM DMA request enabled 0x1 TDE Trigger DMA request enable 14 1 read-write B_0x0 Trigger DMA request disabled 0x0 B_0x1 Trigger DMA request enabled 0x1 SR SR status register 0x10 0x20 read-write 0x0000 UIF Update interrupt flag This bit is set by hardware on an update event. It is cleared by software. At overflow regarding the repetition counter value (update if repetition counter = 0) and if the UDIS=0 in the TIMx_CR1 register. When CNT is reinitialized by software using the UG bit in TIMx_EGR register, if URS=0 and UDIS=0 in the TIMx_CR1 register. When CNT is reinitialized by a trigger event (refer to control register (TIM15_SMCR)), if URS=0 and UDIS=0 in the TIMx_CR1 register. 0 1 read-write B_0x0 No update occurred. 0x0 B_0x1 Update interrupt pending. This bit is set by hardware when the registers are updated: 0x1 CC1IF Capture/Compare 1 interrupt flag This flag is set by hardware. It is cleared by software (input capture or output compare mode) or by reading the TIMx_CCR1 register (input capture mode only). If channel CC1 is configured as output: this flag is set when the content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. When the content of TIMx_CCR1 is greater than the content of TIMx_ARR, the CC1IF bit goes high on the counter overflow (in up-counting and up/down-counting modes) or underflow (in down-counting mode). There are 3 possible options for flag setting in center-aligned mode, refer to the CMS bits in the TIMx_CR1 register for the full description. If channel CC1 is configured as input: this bit is set when counter value has been captured in TIMx_CCR1 register (an edge has been detected on IC1, as per the edge sensitivity defined with the CC1P and CC1NP bits setting, in TIMx_CCER). 1 1 read-write B_0x0 No compare match / No input capture occurred 0x0 B_0x1 A compare match or an input capture occurred 0x1 CC2IF Capture/Compare 2 interrupt flag refer to CC1IF description 2 1 read-write COMIF COM interrupt flag This flag is set by hardware on a COM event (once the capture/compare control bits –CCxE, CCxNE, OCxM– have been updated). It is cleared by software. 5 1 read-write B_0x0 No COM event occurred 0x0 B_0x1 COM interrupt pending 0x1 TIF Trigger interrupt flag This flag is set by hardware on the TRG trigger event (active edge detected on TRGI input when the slave mode controller is enabled in all modes but gated mode, both edges in case gated mode is selected). It is set when the counter starts or stops when gated mode is selected. It is cleared by software. 6 1 read-write B_0x0 No trigger event occurred 0x0 B_0x1 Trigger interrupt pending 0x1 BIF Break interrupt flag This flag is set by hardware as soon as the break input goes active. It can be cleared by software if the break input is not active. 7 1 read-write B_0x0 No break event occurred 0x0 B_0x1 An active level has been detected on the break input 0x1 CC1OF Capture/Compare 1 overcapture flag This flag is set by hardware only when the corresponding channel is configured in input capture mode. It is cleared by software by writing it to '0’. 9 1 read-write B_0x0 No overcapture has been detected 0x0 B_0x1 The counter value has been captured in TIMx_CCR1 register while CC1IF flag was already set 0x1 CC2OF Capture/Compare 2 overcapture flag Refer to CC1OF description 10 1 read-write EGR EGR event generation register 0x14 0x20 write-only 0x0000 UG Update generation This bit can be set by software, it is automatically cleared by hardware. 0 1 write-only B_0x0 No action 0x0 B_0x1 Reinitialize the counter and generates an update of the registers. Note that the prescaler counter is cleared too (anyway the prescaler ratio is not affected). 0x1 CC1G Capture/Compare 1 generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. If channel CC1 is configured as output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If channel CC1 is configured as input: The current value of the counter is captured in TIMx_CCR1 register. The CC1IF flag is set, the corresponding interrupt or DMA request is sent if enabled. The CC1OF flag is set if the CC1IF flag was already high. 1 1 write-only B_0x0 No action 0x0 B_0x1 A capture/compare event is generated on channel 1: 0x1 CC2G Capture/Compare 2 generation Refer to CC1G description 2 1 write-only COMG Capture/Compare control update generation This bit can be set by software, it is automatically cleared by hardware. Note: This bit acts only on channels that have a complementary output. 5 1 read-write B_0x0 No action 0x0 B_0x1 When the CCPC bit is set, it is possible to update the CCxE, CCxNE and OCxM bits 0x1 TG Trigger generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. 6 1 write-only B_0x0 No action 0x0 B_0x1 The TIF flag is set in TIMx_SR register. Related interrupt or DMA transfer can occur if enabled 0x1 BG Break generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. 7 1 write-only B_0x0 No action 0x0 B_0x1 A break event is generated. MOE bit is cleared and BIF flag is set. Related interrupt or DMA transfer can occur if enabled. 0x1 CCMR1_Output CCMR1_Output capture/compare mode register (output mode) 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC1S bits are writable only when the channel is OFF (CC1E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output. 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1. 0x1 B_0x2 CC1 channel is configured as input, IC1 is mapped on TI2. 0x2 B_0x3 CC1 channel is configured as input, IC1 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 OC1FE Output Compare 1 fast enable This bit decreases the latency between a trigger event and a transition on the timer output. It must be used in one-pulse mode (OPM bit set in TIMx_CR1 register), to have the output pulse starting as soon as possible after the starting trigger. 2 1 read-write B_0x0 CC1 behaves normally depending on counter and CCR1 values even when the trigger is ON. The minimum delay to activate CC1 output when an edge occurs on the trigger input is 5 clock cycles. 0x0 B_0x1 An active edge on the trigger input acts like a compare match on CC1 output. Then, OC is set to the compare level independently of the result of the comparison. Delay to sample the trigger input and to activate CC1 output is reduced to 3 clock cycles. OCFE acts only if the channel is configured in PWM1 or PWM2 mode. 0x1 OC1PE Output Compare 1 preload enable Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). The PWM mode can be used without validating the preload register only in one pulse mode (OPM bit set in TIMx_CR1 register). Else the behavior is not guaranteed. 3 1 read-write B_0x0 Preload register on TIMx_CCR1 disabled. TIMx_CCR1 can be written at anytime, the new value is taken in account immediately. 0x0 B_0x1 Preload register on TIMx_CCR1 enabled. Read/Write operations access the preload register. TIMx_CCR1 preload value is loaded in the active register at each update event. 0x1 OC1M1 Output Compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). In PWM mode, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode. On channels that have a complementary output, this bit field is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the OC1M active bits take the new value from the preloaded bits only when a COM event is generated. The OC1M[3] bit is not contiguous, located in bit 16. 4 3 read-write B_0x0 Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs. 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - Channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. 0x6 B_0x7 PWM mode 2 - Channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. 0x7 B_0x8 Retrigerrable OPM mode 1 - In up-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. In down-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes inactive again at the next update. 0x8 B_0x9 Retrigerrable OPM mode 2 - In up-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 2 and the channels becomes inactive again at the next update. In down-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. 0x9 B_0xC Combined PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC is the logical OR between OC1REF and OC2REF. 0xC B_0xD Combined PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC is the logical AND between OC1REF and OC2REF. 0xD CC2S Capture/Compare 2 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC2S bits are writable only when the channel is OFF (CC2E = '0’ in TIMx_CCER). 8 2 read-write B_0x0 CC2 channel is configured as output. 0x0 B_0x1 CC2 channel is configured as input, IC2 is mapped on TI2. 0x1 B_0x2 CC2 channel is configured as input, IC2 is mapped on TI1. 0x2 B_0x3 CC2 channel is configured as input, IC2 is mapped on TRC. This mode is working only if an internal trigger input is selected through the TS bit (TIMx_SMCR register) 0x3 OC2FE Output Compare 2 fast enable 10 1 read-write OC2PE Output Compare 2 preload enable 11 1 read-write OC2M1 Output Compare 2 mode 12 3 read-write OC1M2 Output Compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). In PWM mode, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode. On channels that have a complementary output, this bit field is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the OC1M active bits take the new value from the preloaded bits only when a COM event is generated. The OC1M[3] bit is not contiguous, located in bit 16. 16 1 read-write B_0x0 Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs. 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - Channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. 0x6 B_0x7 PWM mode 2 - Channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. 0x7 B_0x8 Retrigerrable OPM mode 1 - In up-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. In down-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes inactive again at the next update. 0x8 B_0x9 Retrigerrable OPM mode 2 - In up-counting mode, the channel is inactive until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 2 and the channels becomes inactive again at the next update. In down-counting mode, the channel is active until a trigger event is detected (on TRGI signal). Then, a comparison is performed as in PWM mode 1 and the channels becomes active again at the next update. 0x9 B_0xC Combined PWM mode 1 - OC1REF has the same behavior as in PWM mode 1. OC1REFC is the logical OR between OC1REF and OC2REF. 0xC B_0xD Combined PWM mode 2 - OC1REF has the same behavior as in PWM mode 2. OC1REFC is the logical AND between OC1REF and OC2REF. 0xD OC2M2 Output Compare 2 mode 24 1 read-write CCMR1_Input CCMR1_Input capture/compare mode register 1 (input mode) CCMR1_Output 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 Selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC1S bits are writable only when the channel is OFF (CC1E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1 0x1 B_0x2 CC1 channel is configured as input, IC1 is mapped on TI2 0x2 B_0x3 CC1 channel is configured as input, IC1 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 IC1PSC Input capture 1 prescaler This bit-field defines the ratio of the prescaler acting on CC1 input (IC1). The prescaler is reset as soon as CC1E=’0’ (TIMx_CCER register). 2 2 read-write B_0x0 no prescaler, capture is done each time an edge is detected on the capture input 0x0 B_0x1 capture is done once every 2 events 0x1 B_0x2 capture is done once every 4 events 0x2 B_0x3 capture is done once every 8 events 0x3 IC1F Input capture 1 filter This bit-field defines the frequency used to sample TI1 input and the length of the digital filter applied to TI1. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: 4 4 read-write B_0x0 No filter, sampling is done at fDTS 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF CC2S Capture/Compare 2 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Note: CC2S bits are writable only when the channel is OFF (CC2E = '0’ in TIMx_CCER). 8 2 read-write B_0x0 CC2 channel is configured as output 0x0 B_0x1 CC2 channel is configured as input, IC2 is mapped on TI2 0x1 B_0x2 CC2 channel is configured as input, IC2 is mapped on TI1 0x2 B_0x3 CC2 channel is configured as input, IC2 is mapped on TRC. This mode is working only if an internal trigger input is selected through TS bit (TIMx_SMCR register) 0x3 IC2PSC Input capture 2 prescaler 10 2 read-write IC2F Input capture 2 filter 12 4 read-write CCER CCER capture/compare enable register 0x20 0x20 read-write 0x0000 CC1E Capture/Compare 1 output enable When CC1 channel is configured as output, the OC1 level depends on MOE, OSSI, OSSR, OIS1, OIS1N and CC1NE bits, regardless of the CC1E bits state. Refer to for details. 0 1 read-write B_0x0 Capture mode disabled / OC1 is not active (see below) 0x0 B_0x1 Capture mode enabled / OC1 signal is output on the corresponding output pin 0x1 CC1P Capture/Compare 1 output polarity When CC1 channel is configured as input, both CC1NP/CC1P bits select the active polarity of TI1FP1 and TI2FP1 for trigger or capture operations. CC1NP=0, CC1P=0: non-inverted/rising edge. The circuit is sensitive to TIxFP1 rising edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is not inverted (trigger operation in gated mode or encoder mode). CC1NP=0, CC1P=1: inverted/falling edge. The circuit is sensitive to TIxFP1 falling edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is inverted (trigger operation in gated mode or encoder mode). CC1NP=1, CC1P=1: non-inverted/both edges/ The circuit is sensitive to both TIxFP1 rising and falling edges (capture or trigger operations in reset, external clock or trigger mode), TIxFP1is not inverted (trigger operation in gated mode). This configuration must not be used in encoder mode. CC1NP=1, CC1P=0: this configuration is reserved, it must not be used. Note: This bit is not writable as soon as LOCK level 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). On channels that have a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1P active bit takes the new value from the preloaded bit only when a Commutation event is generated. 1 1 read-write B_0x0 OC1 active high (output mode) / Edge sensitivity selection (input mode, see below) 0x0 B_0x1 OC1 active low (output mode) / Edge sensitivity selection (input mode, see below) 0x1 CC1NE Capture/Compare 1 complementary output enable 2 1 read-write B_0x0 Off - OC1N is not active. OC1N level is then function of MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits. 0x0 B_0x1 On - OC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits. 0x1 CC1NP Capture/Compare 1 complementary output polarity CC1 channel configured as output: CC1 channel configured as input: This bit is used in conjunction with CC1P to define the polarity of TI1FP1 and TI2FP1. Refer to CC1P description. Note: This bit is not writable as soon as LOCK level 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=”00” (the channel is configured in output). On channels that have a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1NP active bit takes the new value from the preloaded bit only when a Commutation event is generated. 3 1 read-write B_0x0 OC1N active high 0x0 B_0x1 OC1N active low 0x1 CC2E Capture/Compare 2 output enable Refer to CC1E description 4 1 read-write CC2P Capture/Compare 2 output polarity Refer to CC1P description 5 1 read-write CC2NP Capture/Compare 2 complementary output polarity Refer to CC1NP description 7 1 read-write CNT CNT counter 0x24 0x20 0x00000000 CNT counter value 0 16 read-write UIFCPY UIF Copy 31 1 read-only PSC PSC prescaler 0x28 0x20 read-write 0x0000 PSC Prescaler value 0 16 ARR ARR auto-reload register 0x2C 0x20 read-write 0x0000FFFF ARR Auto-reload value 0 16 RCR RCR repetition counter register 0x30 0x20 read-write 0x0000 REP Repetition counter value 0 8 CCR1 CCR1 capture/compare register 1 0x34 0x20 read-write 0x00000000 CCR1 Capture/Compare 1 value 0 16 CCR2 CCR2 capture/compare register 2 0x38 0x20 read-write 0x00000000 CCR2 Capture/Compare 2 value 0 16 BDTR BDTR break and dead-time register 0x44 0x20 read-write 0x0000 DTG Dead-time generator setup This bit-field defines the duration of the dead-time inserted between the complementary outputs. DT correspond to this duration. DTG[7:5]=0xx => DT=DTG[7:0]x tdtg with tdtg=tDTS DTG[7:5]=10x => DT=(64+DTG[5:0])xtdtg with Tdtg=2xtDTS DTG[7:5]=110 => DT=(32+DTG[4:0])xtdtg with Tdtg=8xtDTS DTG[7:5]=111 => DT=(32+DTG[4:0])xtdtg with Tdtg=16xtDTS Example if TDTS=125ns (8MHz), dead-time possible values are: 0 to 15875 ns by 125 ns steps, 16 µs to 31750 ns by 250 ns steps, 32 µs to 63 µs by 1 µs steps, 64 µs to 126 µs by 2 µs steps Note: This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). 0 8 read-write LOCK Lock configuration These bits offer a write protection against software errors. Note: The LOCK bits can be written only once after the reset. Once the TIMx_BDTR register has been written, their content is frozen until the next reset. 8 2 read-write B_0x0 LOCK OFF - No bit is write protected 0x0 B_0x1 LOCK Level 1 = DTG bits in TIMx_BDTR register, OISx and OISxN bits in TIMx_CR2 register and BKE/BKP/AOE bits in TIMx_BDTR register can no longer be written 0x1 B_0x2 LOCK Level 2 = LOCK Level 1 + CC Polarity bits (CCxP/CCxNP bits in TIMx_CCER register, as long as the related channel is configured in output through the CCxS bits) as well as OSSR and OSSI bits can no longer be written. 0x2 B_0x3 LOCK Level 3 = LOCK Level 2 + CC Control bits (OCxM and OCxPE bits in TIMx_CCMRx registers, as long as the related channel is configured in output through the CCxS bits) can no longer be written. 0x3 OSSI Off-state selection for Idle mode This bit is used when MOE=0 on channels configured as outputs. See OC/OCN enable description for more details (enable register (TIM15_CCER) on page 818). Note: This bit can not be modified as soon as the LOCK level 2 has been programmed (LOCK bits in TIMx_BDTR register). 10 1 read-write B_0x0 When inactive, OC/OCN outputs are disabled (OC/OCN enable output signal=0) 0x0 B_0x1 When inactive, OC/OCN outputs are forced first with their idle level as soon as CCxE=1 or CCxNE=1. OC/OCN enable output signal=1) 0x1 OSSR Off-state selection for Run mode This bit is used when MOE=1 on channels that have a complementary output which are configured as outputs. OSSR is not implemented if no complementary output is implemented in the timer. See OC/OCN enable description for more details (enable register (TIM15_CCER) on page 818). Note: This bit can not be modified as soon as the LOCK level 2 has been programmed (LOCK bits in TIMx_BDTR register). 11 1 read-write B_0x0 When inactive, OC/OCN outputs are disabled (the timer releases the output control which is taken over by the AFIO logic, which forces a Hi-Z state) 0x0 B_0x1 When inactive, OC/OCN outputs are enabled with their inactive level as soon as CCxE=1 or CCxNE=1 (the output is still controlled by the timer). 0x1 BKE Break enable 1; Break inputs (BRK and CCS clock failure event) enabled This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 12 1 read-write B_0x0 Break inputs (BRK and CCS clock failure event) disabled 0x0 BKP Break polarity Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 13 1 read-write B_0x0 Break input BRK is active low 0x0 B_0x1 Break input BRK is active high 0x1 AOE Automatic output enable Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 14 1 read-write B_0x0 MOE can be set only by software 0x0 B_0x1 MOE can be set by software or automatically at the next update event (if the break input is not be active) 0x1 MOE Main output enable This bit is cleared asynchronously by hardware as soon as the break input is active. It is set by software or automatically depending on the AOE bit. It is acting only on the channels which are configured in output. See OC/OCN enable description for more details (enable register (TIM15_CCER) on page 818). 15 1 read-write B_0x0 OC and OCN outputs are disabled or forced to idle state depending on the OSSI bit. 0x0 B_0x1 OC and OCN outputs are enabled if their respective enable bits are set (CCxE, CCxNE in TIMx_CCER register) 0x1 BKF Break filter This bit-field defines the frequency used to sample the BRK input signal and the length of the digital filter applied to BRK. The digital filter is made of an event counter in which N events are needed to validate a transition on the output: Note: This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 16 4 read-write B_0x0 No filter, BRK acts asynchronously 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF BKDSRM Break Disarm This bit is cleared by hardware when no break source is active. The BKDSRM bit must be set by software to release the bidirectional output control (open-drain output in Hi-Z state) and then be polled it until it is reset by hardware, indicating that the fault condition has disappeared. Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 26 1 read-write B_0x0 Break input BRK is armed 0x0 B_0x1 Break input BRK is disarmed 0x1 BKBID Break Bidirectional In the bidirectional mode (BKBID bit set to 1), the break input is configured both in input mode and in open drain output mode. Any active break event asserts a low logic level on the Break input to indicate an internal break event to external devices. Note: This bit cannot be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 28 1 read-write B_0x0 Break input BRK in input mode 0x0 B_0x1 Break input BRK in bidirectional mode 0x1 DCR DCR DMA control register 0x48 0x20 read-write 0x0000 DBA DMA base address This 5-bit field defines the base-address for DMA transfers (when read/write access are done through the TIMx_DMAR address). DBA is defined as an offset starting from the address of the TIMx_CR1 register. Example: ... 0 5 read-write B_0x0 TIMx_CR1, 0x0 B_0x1 TIMx_CR2, 0x1 B_0x2 TIMx_SMCR, 0x2 DBL DMA burst length This 5-bit field defines the length of DMA transfers (the timer recognizes a burst transfer when a read or a write access is done to the TIMx_DMAR address). ... 8 5 read-write B_0x0 1 transfer, 0x0 B_0x1 2 transfers, 0x1 B_0x2 3 transfers, 0x2 B_0x11 18 transfers. 0x11 DMAR DMAR DMA address for full transfer 0x4C 0x20 read-write 0x0000 DMAB DMA register for burst accesses 0 16 AF1 AF1 TIM15 alternate register 1 0x60 0x20 read-write 0x00000001 BKINE BRK BKIN input enable This bit enables the BKIN alternate function input for the timer’s BRK input. BKIN input is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 0 1 read-write B_0x0 BKIN input disabled 0x0 B_0x1 BKIN input enabled 0x1 BKCMP1E BRK COMP1 enable This bit enables the COMP1 for the timer’s BRK input. COMP1 output is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 1 1 read-write B_0x0 COMP1 input disabled 0x0 B_0x1 COMP1 input enabled 0x1 BKCMP2E BRK COMP2 enable This bit enables the COMP2 for the timer’s BRK input. COMP2 output is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 2 1 read-write B_0x0 COMP2 input disabled 0x0 B_0x1 COMP2 input enabled 0x1 BKCMP3E BRK COMP3 enable This bit enables the COMP3 for the timer’s BRK input. COMP3 output is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 3 1 read-write B_0x0 COMP3 input disabled 0x0 B_0x1 COMP3 input enabled 0x1 BKINP BRK BKIN input polarity This bit selects the BKIN alternate function input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 9 1 read-write B_0x0 BKIN input is active low 0x0 B_0x1 BKIN input is active high 0x1 BKCMP1P BRK COMP1 input polarity This bit selects the COMP1 input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 10 1 read-write B_0x0 COMP1 input is active low 0x0 B_0x1 COMP1 input is active high 0x1 BKCMP2P BRK COMP2 input polarity This bit selects the COMP2 input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 11 1 read-write B_0x0 COMP2 input is active low 0x0 B_0x1 COMP2 input is active high 0x1 BKCMP3P BRK COMP3 input polarity This bit selects the COMP3 input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 12 1 read-write B_0x0 COMP3 input is active low 0x0 B_0x1 COMP3 input is active high 0x1 TISEL TISEL input selection register 0x68 0x20 read-write 0x0000 TI1SEL selects TI1[0] to TI1[15] input Others: Reserved 0 4 read-write B_0x0 TIM15_CH1 input 0x0 B_0x1 TIM2_IC1 0x1 B_0x2 TIM3_IC1 0x2 TI2SEL selects TI2[0] to TI2[15] input Others: Reserved 8 4 read-write B_0x0 TIM15_CH2 input 0x0 B_0x1 TIM2_IC2 0x1 B_0x2 TIM3_IC2 0x2 TIM16 General purpose timers TIM 0x40014400 0x0 0x400 registers TIM16 TIM16 global interrupt 21 CR1 CR1 control register 1 0x0 0x20 read-write 0x0000 CEN Counter enable Note: External clock and gated mode can work only if the CEN bit has been previously set by software. However trigger mode can set the CEN bit automatically by hardware. 0 1 read-write B_0x0 Counter disabled 0x0 B_0x1 Counter enabled 0x1 UDIS Update disable This bit is set and cleared by software to enable/disable UEV event generation. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller Buffered registers are then loaded with their preload values. 1 1 read-write B_0x0 UEV enabled. The Update (UEV) event is generated by one of the following events: 0x0 B_0x1 UEV disabled. The Update event is not generated, shadow registers keep their value (ARR, PSC, CCRx). However the counter and the prescaler are reinitialized if the UG bit is set or if a hardware reset is received from the slave mode controller. 0x1 URS Update request source This bit is set and cleared by software to select the UEV event sources. Counter overflow/underflow Setting the UG bit Update generation through the slave mode controller 2 1 read-write B_0x0 Any of the following events generate an update interrupt or DMA request if enabled. These events can be: 0x0 B_0x1 Only counter overflow/underflow generates an update interrupt or DMA request if enabled. 0x1 OPM One pulse mode 3 1 read-write B_0x0 Counter is not stopped at update event 0x0 B_0x1 Counter stops counting at the next update event (clearing the bit CEN) 0x1 ARPE Auto-reload preload enable 7 1 read-write B_0x0 TIMx_ARR register is not buffered 0x0 B_0x1 TIMx_ARR register is buffered 0x1 CKD Clock division This bit-field indicates the division ratio between the timer clock (CK_INT) frequency and the dead-time and sampling clock (tDTS)used by the dead-time generators and the digital filters (TIx), 8 2 read-write B_0x0 tDTS=tCK_INT 0x0 B_0x1 tDTS=2*tCK_INT 0x1 B_0x2 tDTS=4*tCK_INT 0x2 B_0x3 Reserved, do not program this value 0x3 UIFREMAP UIF status bit remapping 11 1 read-write B_0x0 No remapping. UIF status bit is not copied to TIMx_CNT register bit 31. 0x0 B_0x1 Remapping enabled. UIF status bit is copied to TIMx_CNT register bit 31. 0x1 CR2 CR2 control register 2 0x4 0x20 read-write 0x0000 CCPC Capture/compare preloaded control Note: This bit acts only on channels that have a complementary output. 0 1 read-write B_0x0 CCxE, CCxNE and OCxM bits are not preloaded 0x0 B_0x1 CCxE, CCxNE and OCxM bits are preloaded, after having been written, they are updated only when COM bit is set. 0x1 CCUS Capture/compare control update selection Note: This bit acts only on channels that have a complementary output. 2 1 read-write B_0x0 When capture/compare control bits are preloaded (CCPC=1), they are updated by setting the COMG bit only. 0x0 B_0x1 When capture/compare control bits are preloaded (CCPC=1), they are updated by setting the COMG bit or when an rising edge occurs on TRGI. 0x1 CCDS Capture/compare DMA selection 3 1 read-write B_0x0 CCx DMA request sent when CCx event occurs 0x0 B_0x1 CCx DMA requests sent when update event occurs 0x1 OIS1 Output Idle state 1 (OC1 output) Note: This bit can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). 8 1 read-write B_0x0 OC1=0 (after a dead-time if OC1N is implemented) when MOE=0 0x0 B_0x1 OC1=1 (after a dead-time if OC1N is implemented) when MOE=0 0x1 OIS1N Output Idle state 1 (OC1N output) Note: This bit can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). 9 1 read-write B_0x0 OC1N=0 after a dead-time when MOE=0 0x0 B_0x1 OC1N=1 after a dead-time when MOE=0 0x1 DIER DIER DMA/Interrupt enable register 0xC 0x20 read-write 0x0000 UIE Update interrupt enable 0 1 read-write B_0x0 Update interrupt disabled 0x0 B_0x1 Update interrupt enabled 0x1 CC1IE Capture/Compare 1 interrupt enable 1 1 read-write B_0x0 CC1 interrupt disabled 0x0 B_0x1 CC1 interrupt enabled 0x1 COMIE COM interrupt enable 5 1 read-write B_0x0 COM interrupt disabled 0x0 B_0x1 COM interrupt enabled 0x1 BIE Break interrupt enable 7 1 read-write B_0x0 Break interrupt disabled 0x0 B_0x1 Break interrupt enabled 0x1 UDE Update DMA request enable 8 1 read-write B_0x0 Update DMA request disabled 0x0 B_0x1 Update DMA request enabled 0x1 CC1DE Capture/Compare 1 DMA request enable 9 1 read-write B_0x0 CC1 DMA request disabled 0x0 B_0x1 CC1 DMA request enabled 0x1 SR SR status register 0x10 0x20 read-write 0x0000 UIF Update interrupt flag This bit is set by hardware on an update event. It is cleared by software. At overflow regarding the repetition counter value (update if repetition counter = 0) and if the UDIS=0 in the TIMx_CR1 register. When CNT is reinitialized by software using the UG bit in TIMx_EGR register, if URS=0 and UDIS=0 in the TIMx_CR1 register. 0 1 read-write B_0x0 No update occurred. 0x0 B_0x1 Update interrupt pending. This bit is set by hardware when the registers are updated: 0x1 CC1IF Capture/Compare 1 interrupt flag This flag is set by hardware. It is cleared by software (input capture or output compare mode) or by reading the TIMx_CCR1 register (input capture mode only). If channel CC1 is configured as output: this flag is set when the content of the counter TIMx_CNT matches the content of the TIMx_CCR1 register. When the content of TIMx_CCR1 is greater than the content of TIMx_ARR, the CC1IF bit goes high on the counter overflow (in up-counting and up/down-counting modes) or underflow (in down-counting mode). There are 3 possible options for flag setting in center-aligned mode, refer to the CMS bits in the TIMx_CR1 register for the full description. If channel CC1 is configured as input: this bit is set when counter value has been captured in TIMx_CCR1 register (an edge has been detected on IC1, as per the edge sensitivity defined with the CC1P and CC1NP bits setting, in TIMx_CCER). 1 1 read-write B_0x0 No compare match / No input capture occurred 0x0 B_0x1 A compare match or an input capture occurred 0x1 COMIF COM interrupt flag This flag is set by hardware on a COM event (once the capture/compare control bits –CCxE, CCxNE, OCxM– have been updated). It is cleared by software. 5 1 read-write B_0x0 No COM event occurred 0x0 B_0x1 COM interrupt pending 0x1 BIF Break interrupt flag This flag is set by hardware as soon as the break input goes active. It can be cleared by software if the break input is not active. 7 1 read-write B_0x0 No break event occurred 0x0 B_0x1 An active level has been detected on the break input 0x1 CC1OF Capture/Compare 1 overcapture flag This flag is set by hardware only when the corresponding channel is configured in input capture mode. It is cleared by software by writing it to '0’. 9 1 read-write B_0x0 No overcapture has been detected 0x0 B_0x1 The counter value has been captured in TIMx_CCR1 register while CC1IF flag was already set 0x1 EGR EGR event generation register 0x14 0x20 write-only 0x0000 UG Update generation This bit can be set by software, it is automatically cleared by hardware. 0 1 write-only B_0x0 No action. 0x0 B_0x1 Reinitialize the counter and generates an update of the registers. Note that the prescaler counter is cleared too (anyway the prescaler ratio is not affected). 0x1 CC1G Capture/Compare 1 generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. If channel CC1 is configured as output: CC1IF flag is set, Corresponding interrupt or DMA request is sent if enabled. If channel CC1 is configured as input: The current value of the counter is captured in TIMx_CCR1 register. The CC1IF flag is set, the corresponding interrupt or DMA request is sent if enabled. The CC1OF flag is set if the CC1IF flag was already high. 1 1 write-only B_0x0 No action. 0x0 B_0x1 A capture/compare event is generated on channel 1: 0x1 COMG Capture/Compare control update generation This bit can be set by software, it is automatically cleared by hardware. Note: This bit acts only on channels that have a complementary output. 5 1 write-only B_0x0 No action 0x0 B_0x1 When the CCPC bit is set, it is possible to update the CCxE, CCxNE and OCxM bits 0x1 BG Break generation This bit is set by software in order to generate an event, it is automatically cleared by hardware. 7 1 write-only B_0x0 No action. 0x0 B_0x1 A break event is generated. MOE bit is cleared and BIF flag is set. Related interrupt or DMA transfer can occur if enabled. 0x1 CCMR1_Output CCMR1_Output capture/compare mode register (output mode) 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 selection This bit-field defines the direction of the channel (input/output) as well as the used input. Others: Reserved Note: CC1S bits are writable only when the channel is OFF (CC1E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1 0x1 OC1FE Output Compare 1 fast enable This bit decreases the latency between a trigger event and a transition on the timer output. It must be used in one-pulse mode (OPM bit set in TIMx_CR1 register), to have the output pulse starting as soon as possible after the starting trigger. 2 1 read-write B_0x0 CC1 behaves normally depending on counter and CCR1 values even when the trigger is ON. The minimum delay to activate CC1 output when an edge occurs on the trigger input is 5 clock cycles. 0x0 B_0x1 An active edge on the trigger input acts like a compare match on CC1 output. Then, OC is set to the compare level independently of the result of the comparison. Delay to sample the trigger input and to activate CC1 output is reduced to 3 clock cycles. OC1FE acts only if the channel is configured in PWM1 or PWM2 mode. 0x1 OC1PE Output Compare 1 preload enable Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). The PWM mode can be used without validating the preload register only in one pulse mode (OPM bit set in TIMx_CR1 register). Else the behavior is not guaranteed. 3 1 read-write B_0x0 Preload register on TIMx_CCR1 disabled. TIMx_CCR1 can be written at anytime, the new value is taken in account immediately. 0x0 B_0x1 Preload register on TIMx_CCR1 enabled. Read/Write operations access the preload register. TIMx_CCR1 preload value is loaded in the active register at each update event. 0x1 OC1M1 Output Compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. All other values: Reserved Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). In PWM mode 1 or 2, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode. The OC1M[3] bit is not contiguous, located in bit 16. 4 3 read-write B_0x0 Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs. 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - Channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. 0x6 B_0x7 PWM mode 2 - Channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. 0x7 OC1M2 Output Compare 1 mode These bits define the behavior of the output reference signal OC1REF from which OC1 and OC1N are derived. OC1REF is active high whereas OC1 and OC1N active level depends on CC1P and CC1NP bits. All other values: Reserved Note: These bits can not be modified as long as LOCK level 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=’00’ (the channel is configured in output). In PWM mode 1 or 2, the OCREF level changes only when the result of the comparison changes or when the output compare mode switches from “frozen” mode to “PWM” mode. The OC1M[3] bit is not contiguous, located in bit 16. 16 1 read-write B_0x0 Frozen - The comparison between the output compare register TIMx_CCR1 and the counter TIMx_CNT has no effect on the outputs. 0x0 B_0x1 Set channel 1 to active level on match. OC1REF signal is forced high when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x1 B_0x2 Set channel 1 to inactive level on match. OC1REF signal is forced low when the counter TIMx_CNT matches the capture/compare register 1 (TIMx_CCR1). 0x2 B_0x3 Toggle - OC1REF toggles when TIMx_CNT=TIMx_CCR1. 0x3 B_0x4 Force inactive level - OC1REF is forced low. 0x4 B_0x5 Force active level - OC1REF is forced high. 0x5 B_0x6 PWM mode 1 - Channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. 0x6 B_0x7 PWM mode 2 - Channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. 0x7 CCMR1_Input CCMR1_Input capture/compare mode register 1 (input mode) CCMR1_Output 0x18 0x20 read-write 0x00000000 CC1S Capture/Compare 1 Selection This bit-field defines the direction of the channel (input/output) as well as the used input. Others: Reserved Note: CC1S bits are writable only when the channel is OFF (CC1E = '0’ in TIMx_CCER). 0 2 read-write B_0x0 CC1 channel is configured as output 0x0 B_0x1 CC1 channel is configured as input, IC1 is mapped on TI1 0x1 IC1PSC Input capture 1 prescaler This bit-field defines the ratio of the prescaler acting on CC1 input (IC1). The prescaler is reset as soon as CC1E=’0’ (TIMx_CCER register). 2 2 read-write B_0x0 no prescaler, capture is done each time an edge is detected on the capture input. 0x0 B_0x1 capture is done once every 2 events 0x1 B_0x2 capture is done once every 4 events 0x2 B_0x3 capture is done once every 8 events 0x3 IC1F Input capture 1 filter This bit-field defines the frequency used to sample TI1 input and the length of the digital filter applied to TI1. The digital filter is made of an event counter in which N consecutive events are needed to validate a transition on the output: 4 4 read-write B_0x0 No filter, sampling is done at fDTS 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N= 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF CCER CCER capture/compare enable register 0x20 0x20 read-write 0x0000 CC1E Capture/Compare 1 output enable When CC1 channel is configured as output, the OC1 level depends on MOE, OSSI, OSSR, OIS1, OIS1N and CC1NE bits, regardless of the CC1E bits state. Refer to for details. 0 1 read-write B_0x0 Capture mode disabled / OC1 is not active (see below) 0x0 B_0x1 Capture mode enabled / OC1 signal is output on the corresponding output pin 0x1 CC1P Capture/Compare 1 output polarity When CC1 channel is configured as input, both CC1NP/CC1P bits select the active polarity of TI1FP1 and TI2FP1 for trigger or capture operations. CC1NP=0, CC1P=0: non-inverted/rising edge. The circuit is sensitive to TIxFP1 rising edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is not inverted (trigger operation in gated mode or encoder mode). CC1NP=0, CC1P=1: inverted/falling edge. The circuit is sensitive to TIxFP1 falling edge (capture or trigger operations in reset, external clock or trigger mode), TIxFP1 is inverted (trigger operation in gated mode or encoder mode). CC1NP=1, CC1P=1: non-inverted/both edges/ The circuit is sensitive to both TIxFP1 rising and falling edges (capture or trigger operations in reset, external clock or trigger mode), TIxFP1is not inverted (trigger operation in gated mode). This configuration must not be used in encoder mode. CC1NP=1, CC1P=0: this configuration is reserved, it must not be used. Note: This bit is not writable as soon as LOCK level 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). On channels that have a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1P active bit takes the new value from the preloaded bit only when a Commutation event is generated. 1 1 read-write B_0x0 OC1 active high (output mode) / Edge sensitivity selection (input mode, see below) 0x0 B_0x1 OC1 active low (output mode) / Edge sensitivity selection (input mode, see below) 0x1 CC1NE Capture/Compare 1 complementary output enable 2 1 read-write B_0x0 Off - OC1N is not active. OC1N level is then function of MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits. 0x0 B_0x1 On - OC1N signal is output on the corresponding output pin depending on MOE, OSSI, OSSR, OIS1, OIS1N and CC1E bits. 0x1 CC1NP Capture/Compare 1 complementary output polarity CC1 channel configured as output: CC1 channel configured as input: This bit is used in conjunction with CC1P to define the polarity of TI1FP1 and TI2FP1. Refer to the description of CC1P. Note: This bit is not writable as soon as LOCK level 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register) and CC1S=”00” (the channel is configured in output). On channels that have a complementary output, this bit is preloaded. If the CCPC bit is set in the TIMx_CR2 register then the CC1NP active bit takes the new value from the preloaded bit only when a commutation event is generated. 3 1 read-write B_0x0 OC1N active high 0x0 B_0x1 OC1N active low 0x1 CNT CNT counter 0x24 0x20 0x00000000 CNT counter value 0 16 read-write UIFCPY UIF Copy 31 1 read-only PSC PSC prescaler 0x28 0x20 read-write 0x0000 PSC Prescaler value 0 16 ARR ARR auto-reload register 0x2C 0x20 read-write 0x0000FFFF ARR Auto-reload value 0 16 RCR RCR repetition counter register 0x30 0x20 read-write 0x0000 REP Repetition counter value 0 8 CCR1 CCR1 capture/compare register 1 0x34 0x20 read-write 0x00000000 CCR1 Capture/Compare 1 value 0 16 BDTR BDTR break and dead-time register 0x44 0x20 read-write 0x0000 DTG Dead-time generator setup This bit-field defines the duration of the dead-time inserted between the complementary outputs. DT correspond to this duration. DTG[7:5]=0xx => DT=DTG[7:0]x tdtg with tdtg=tDTS DTG[7:5]=10x => DT=(64+DTG[5:0])xtdtg with Tdtg=2xtDTS DTG[7:5]=110 => DT=(32+DTG[4:0])xtdtg with Tdtg=8xtDTS DTG[7:5]=111 => DT=(32+DTG[4:0])xtdtg with Tdtg=16xtDTS Example if TDTS=125ns (8MHz), dead-time possible values are: 0 to 15875 ns by 125 ns steps, 16 µs to 31750 ns by 250 ns steps, 32 µs to 63 µs by 1 µs steps, 64 µs to 126 µs by 2 µs steps Note: This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been programmed (LOCK bits in TIMx_BDTR register). 0 8 read-write LOCK Lock configuration These bits offer a write protection against software errors. Note: The LOCK bits can be written only once after the reset. Once the TIMx_BDTR register has been written, their content is frozen until the next reset. 8 2 read-write B_0x0 LOCK OFF - No bit is write protected 0x0 B_0x1 LOCK Level 1 = DTG bits in TIMx_BDTR register, OISx and OISxN bits in TIMx_CR2 register and BKE/BKP/AOE bits in TIMx_BDTR register can no longer be written. 0x1 B_0x2 LOCK Level 2 = LOCK Level 1 + CC Polarity bits (CCxP/CCxNP bits in TIMx_CCER register, as long as the related channel is configured in output through the CCxS bits) as well as OSSR and OSSI bits can no longer be written. 0x2 B_0x3 LOCK Level 3 = LOCK Level 2 + CC Control bits (OCxM and OCxPE bits in TIMx_CCMRx registers, as long as the related channel is configured in output through the CCxS bits) can no longer be written. 0x3 OSSI Off-state selection for Idle mode This bit is used when MOE=0 on channels configured as outputs. See OC/OCN enable description for more details (enable register (TIM16_CCER)(TIMx_CCER)(x = 16 to 17) on page 846). Note: This bit can not be modified as soon as the LOCK level 2 has been programmed (LOCK bits in TIMx_BDTR register). 10 1 read-write B_0x0 When inactive, OC/OCN outputs are disabled (OC/OCN enable output signal=0) 0x0 B_0x1 When inactive, OC/OCN outputs are forced first with their idle level as soon as CCxE=1 or CCxNE=1. OC/OCN enable output signal=1) 0x1 OSSR Off-state selection for Run mode This bit is used when MOE=1 on channels that have a complementary output which are configured as outputs. OSSR is not implemented if no complementary output is implemented in the timer. See OC/OCN enable description for more details (enable register (TIM16_CCER)(TIMx_CCER)(x = 16 to 17) on page 846). Note: This bit can not be modified as soon as the LOCK level 2 has been programmed (LOCK bits in TIMx_BDTR register). 11 1 read-write B_0x0 When inactive, OC/OCN outputs are disabled (the timer releases the output control which is taken over by the AFIO logic, which forces a Hi-Z state) 0x0 B_0x1 When inactive, OC/OCN outputs are enabled with their inactive level as soon as CCxE=1 or CCxNE=1 (the output is still controlled by the timer). 0x1 BKE Break enable 1; Break inputs (BRK and CCS clock failure event) enabled Note: This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 12 1 read-write B_0x0 Break inputs (BRK and CCS clock failure event) disabled 0x0 BKP Break polarity Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 13 1 read-write B_0x0 Break input BRK is active low 0x0 B_0x1 Break input BRK is active high 0x1 AOE Automatic output enable Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 14 1 read-write B_0x0 MOE can be set only by software 0x0 B_0x1 MOE can be set by software or automatically at the next update event (if the break input is not be active) 0x1 MOE Main output enable This bit is cleared asynchronously by hardware as soon as the break input is active. It is set by software or automatically depending on the AOE bit. It is acting only on the channels which are configured in output. enable register (TIM16_CCER)(TIMx_CCER)(x = 16 to 17) on page 846). 15 1 read-write B_0x0 OC and OCN outputs are disabled or forced to idle state depending on the OSSI bit. 0x0 B_0x1 OC and OCN outputs are enabled if their respective enable bits are set (CCxE, CCxNE in TIMx_CCER register)See OC/OCN enable description for more details ( 0x1 BKF Break filter This bit-field defines the frequency used to sample BRK input and the length of the digital filter applied to BRK. The digital filter is made of an event counter in which N events are needed to validate a transition on the output: This bit cannot be modified when LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 16 4 read-write B_0x0 No filter, BRK acts asynchronously 0x0 B_0x1 fSAMPLING=fCK_INT, N=2 0x1 B_0x2 fSAMPLING=fCK_INT, N=4 0x2 B_0x3 fSAMPLING=fCK_INT, N=8 0x3 B_0x4 fSAMPLING=fDTS/2, N=6 0x4 B_0x5 fSAMPLING=fDTS/2, N=8 0x5 B_0x6 fSAMPLING=fDTS/4, N=6 0x6 B_0x7 fSAMPLING=fDTS/4, N=8 0x7 B_0x8 fSAMPLING=fDTS/8, N=6 0x8 B_0x9 fSAMPLING=fDTS/8, N=8 0x9 B_0xA fSAMPLING=fDTS/16, N=5 0xA B_0xB fSAMPLING=fDTS/16, N=6 0xB B_0xC fSAMPLING=fDTS/16, N=8 0xC B_0xD fSAMPLING=fDTS/32, N=5 0xD B_0xE fSAMPLING=fDTS/32, N=6 0xE B_0xF fSAMPLING=fDTS/32, N=8 0xF BKDSRM Break Disarm This bit is cleared by hardware when no break source is active. The BKDSRM bit must be set by software to release the bidirectional output control (open-drain output in Hi-Z state) and then be polled it until it is reset by hardware, indicating that the fault condition has disappeared. Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 26 1 read-write B_0x0 Break input BRK is armed 0x0 B_0x1 Break input BRK is disarmed 0x1 BKBID Break Bidirectional In the bidirectional mode (BKBID bit set to 1), the break input is configured both in input mode and in open drain output mode. Any active break event asserts a low logic level on the Break input to indicate an internal break event to external devices. Note: This bit cannot be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. 28 1 read-write B_0x0 Break input BRK in input mode 0x0 B_0x1 Break input BRK in bidirectional mode 0x1 DCR DCR DMA control register 0x48 0x20 read-write 0x0000 DBA DMA base address This 5-bit field defines the base-address for DMA transfers (when read/write access are done through the TIMx_DMAR address). DBA is defined as an offset starting from the address of the TIMx_CR1 register. Example: ... Example: Let us consider the following transfer: DBL = 7 transfers and DBA = TIMx_CR1. In this case the transfer is done to/from 7 registers starting from the TIMx_CR1 address. 0 5 read-write B_0x0 TIMx_CR1, 0x0 B_0x1 TIMx_CR2, 0x1 B_0x2 TIMx_SMCR, 0x2 DBL DMA burst length This 5-bit field defines the length of DMA transfers (the timer recognizes a burst transfer when a read or a write access is done to the TIMx_DMAR address), i.e. the number of transfers. Transfers can be in half-words or in bytes (see example below). ... 8 5 read-write B_0x0 1 transfer, 0x0 B_0x1 2 transfers, 0x1 B_0x2 3 transfers, 0x2 B_0x11 18 transfers. 0x11 DMAR DMAR DMA address for full transfer 0x4C 0x20 read-write 0x0000 DMAB DMA register for burst accesses 0 16 AF1 AF1 TIM17 option register 1 0x60 0x20 read-write 0x00000001 BKINE BRK BKIN input enable This bit enables the BKIN alternate function input for the timer’s BRK input. BKIN input is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 0 1 read-write B_0x0 BKIN input disabled 0x0 B_0x1 BKIN input enabled 0x1 BKCMP1E BRK COMP1 enable This bit enables the COMP1 for the timer’s BRK input. COMP1 output is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 1 1 read-write B_0x0 COMP1 input disabled 0x0 B_0x1 COMP1 input enabled 0x1 BKCMP2E BRK COMP2 enable This bit enables the COMP2 for the timer’s BRK input. COMP2 output is 'ORed’ with the other BRK sources. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 2 1 read-write B_0x0 COMP2 input disabled 0x0 B_0x1 COMP2 input enabled 0x1 BKINP BRK BKIN input polarity This bit selects the BKIN alternate function input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 9 1 read-write B_0x0 BKIN input is active low 0x0 B_0x1 BKIN input is active high 0x1 BKCMP1P BRK COMP1 input polarity This bit selects the COMP1 input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 10 1 read-write B_0x0 COMP1 input is active low 0x0 B_0x1 COMP1 input is active high 0x1 BKCMP2P BRK COMP2 input polarity This bit selects the COMP2 input sensitivity. It must be programmed together with the BKP polarity bit. Note: This bit can not be modified as long as LOCK level 1 has been programmed (LOCK bits in TIMx_BDTR register). 11 1 read-write B_0x0 COMP2 input is active low 0x0 B_0x1 COMP2 input is active high 0x1 TISEL TISEL input selection register 0x68 0x20 read-write 0x0000 TI1SEL selects TI1[0] to TI1[15] input Others: Reserved 0 4 read-write B_0x0 TIM16_CH1 input 0x0 B_0x1 LSI 0x1 B_0x2 LSE 0x2 B_0x3 RTC wakeup 0x3 TIM17 0x40014800 TIM17 TIM17 global interrupt 22 UCPD1 USB Power Delivery interface UCPD 0x4000A000 0x0 0x400 registers UCPD1_UCPD2_USB UCPD and USB global interrupt 8 UCPD_CFGR1 UCPD_CFGR1 UCPD configuration register 1 0x0 0x20 0x00000000 0xFFFFFFFF HBITCLKDIV Division ratio for producing half-bit clock The bitfield determines the division ratio (the bitfield value plus one) of a ucpd_clk divider producing half-bit clock (hbit_clk). 0 6 read-write B_0x0 1 (bypass) 0x0 B_0x1A 27 0x1A B_0x3F 64 0x3F IFRGAP Division ratio for producing inter-frame gap timer clock The bitfield determines the division ratio (the bitfield value minus one) of a ucpd_clk divider producing inter-frame gap timer clock (tInterFrameGap). The division ratio 15 is to apply for Tx clock at the USB PD 2.0 specification nominal value. The division ratios below 15 are to apply for Tx clock below nominal, and the division ratios above 15 for Tx clock above nominal. 6 5 read-write B_0x0 Not supported 0x0 B_0x1 2 0x1 B_0xD 14 0xD B_0xE 15 0xE B_0xF 16 0xF B_0x1F 32 0x1F TRANSWIN Transition window duration The bitfield determines the division ratio (the bitfield value minus one) of a hbit_clk divider producing tTransitionWindow interval. Set a value that produces an interval of 12 to 20 us, taking into account the ucpd_clk frequency and the HBITCLKDIV[5:0] bitfield setting. 11 5 read-write B_0x0 Not supported 0x0 B_0x1 2 0x1 B_0x9 10 (recommended) 0x9 B_0x1F 32 0x1F PSC_USBPDCLK Pre-scaler division ratio for generating ucpd_clk The bitfield determines the division ratio of a kernel clock pre-scaler producing UCPD peripheral clock (ucpd_clk). It is recommended to use the pre-scaler so as to set the ucpd_clk frequency in the range from 6 to 9 MHz. 17 3 read-write B_0x0 1 (bypass) 0x0 B_0x1 2 0x1 B_0x2 4 0x2 B_0x3 8 0x3 B_0x4 16 0x4 RXORDSETEN Receiver ordered set enable The bitfield determines the types of ordered sets that the receiver must detect. When set/cleared, each bit enables/disables a specific function: 0bxxxxxxxx1: SOP detect enabled 0bxxxxxxx1x: SOP' detect enabled 0bxxxxxx1xx: SOP'' detect enabled 0bxxxxx1xxx: Hard Reset detect enabled 0bxxxx1xxxx: Cable Detect reset enabled 0bxxx1xxxxx: SOP'_Debug enabled 0bxx1xxxxxx: SOP''_Debug enabled 0bx1xxxxxxx: SOP extension#1 enabled 0b1xxxxxxxx: SOP extension#2 enabled 20 9 read-write TXDMAEN Transmission DMA mode enable When set, the bit enables DMA mode for transmission. 29 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 RXDMAEN Reception DMA mode enable When set, the bit enables DMA mode for reception. 30 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 UCPDEN UCPD peripheral enable General enable of the UCPD peripheral. Upon disabling, the peripheral instantly quits any ongoing activity and all control bits and bitfields default to their reset values. They must be set to their desired values each time the peripheral transits from disabled to enabled state. 31 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 UCPD_CFGR2 UCPD_CFGR2 UCPD configuration register 2 0x4 0x20 0x00000000 0xFFFFFFFF RXFILTDIS BMC decoder Rx pre-filter enable The sampling clock is that of the receiver (that is, after pre-scaler). 0 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 RXFILT2N3 BMC decoder Rx pre-filter sampling method Number of consistent consecutive samples before confirming a new value. 1 1 read-write B_0x0 3 samples 0x0 B_0x1 2 samples 0x1 FORCECLK Force ClkReq clock request 2 1 read-write B_0x0 Do not force clock request 0x0 B_0x1 Force clock request 0x1 WUPEN Wakeup from Stop mode enable Setting the bit enables the UCPD_ASYNC_INT signal. 3 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 UCPD_CFGR3 UCPD_CFGR3 UCPD configuration register 3 0x8 0x20 0x00000000 0xFFFFFFFF TRIM1_NG_CCRPD SW trim value for RPD resistors on the CC1 line 0 4 read-write TRIM1_NG_CC1A5 SW trim value for RP1A5 resistors on the CC1 line 4 5 read-write TRIM1_NG_CC3A0 SW trim value for RP3A0 resistors on the CC1 line 9 4 read-write TRIM2_NG_CCRPD SW trim value for RPD resistors on the CC2 line 16 4 read-write TRIM2_NG_CC1A5 SW trim value for RP1A5 resistors on the CC2 line 20 5 read-write TRIM2_NG_CC3A0 SW trim value for RP3A0 resistors on the CC2 line 25 4 read-write UCPD_CR UCPD_CR UCPD control register 0xc 0x20 0x00000000 0xFFFFFFFF TXMODE Type of Tx packet Writing the bitfield triggers the action as follows, depending on the value: Others: invalid From V1.1 of the USB PD specification, there is a counter defined for the duration of the BIST Carrier Mode 2. To quit this mode correctly (after the "tBISTContMode" delay), disable the peripheral (UCPDEN = 0). 0 2 read-write B_0x0 Transmission of Tx packet previously defined in other registers 0x0 B_0x1 Cable Reset sequence 0x1 B_0x2 BIST test sequence (BIST Carrier Mode 2) 0x2 TXSEND Command to send a Tx packet The bit is cleared by hardware as soon as the packet transmission begins or is discarded. 2 1 read-write B_0x0 No effect 0x0 B_0x1 Start Tx packet transmission 0x1 TXHRST Command to send a Tx Hard Reset The bit is cleared by hardware as soon as the message transmission begins or is discarded. 3 1 read-write B_0x0 No effect 0x0 B_0x1 Start Tx Hard Reset message 0x1 RXMODE Receiver mode Determines the mode of the receiver. When the bit is set, RXORDSET behaves normally, RXDR no longer receives bytes yet the CRC checking still proceeds as for a normal message. 4 1 read-write B_0x0 Normal receive mode 0x0 B_0x1 BIST receive mode (BIST test data mode) 0x1 PHYRXEN USB Power Delivery receiver enable Both CC1 and CC2 receivers are disabled when the bit is cleared. Only the CC receiver selected via the PHYCCSEL bit is enabled when the bit is set. 5 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 PHYCCSEL CC1/CC2 line selector for USB Power Delivery signaling The selection depends on the cable orientation as discovered at attach. 6 1 read-write B_0x0 Use CC1 IO for Power Delivery communication 0x0 B_0x1 Use CC2 IO for Power Delivery communication 0x1 ANASUBMODE Analog PHY sub-mode Refer to TYPEC_VSTATE_CCx for the effect of this bitfield. 7 2 read-write ANAMODE Analog PHY operating mode The bit takes effect upon setting the UCPDx_STROBE bit of the SYS_CONFIG register. The use of CC1 and CC2 depends on CCENABLE. Refer to ANAMODE, ANASUBMODE and link with TYPEC_VSTATE_CCx for the effect of this bitfield in conjunction with ANASUBMODE[1:0]. 9 1 read-write B_0x0 Source 0x0 B_0x1 Sink 0x1 CCENABLE CC line enable This bitfield enables CC1 and CC2 line analog PHYs (pull-ups and pull-downs) according to ANAMODE and ANASUBMODE[1:0] setting. A single line PHY can be enabled when, for example, the other line is driven by VCONN via an external VCONN switch. Enabling both PHYs is the normal usage for sink/source. 10 2 read-write B_0x0 Disable both PHYs 0x0 B_0x1 Enable CC1 PHY 0x1 B_0x2 Enable CC2 PHY 0x2 B_0x3 Enable CC1 and CC2 PHY 0x3 CC1VCONNEN VCONN switch enable for CC1 13 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 CC2VCONNEN VCONN switch enable for CC2 14 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 DBATTEN Dead battery function enable The bit takes effect upon setting the USBPDstrobe bit of the SYS_CONFIG register. Dead battery function only operates if the external circuit is appropriately configured. 15 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 FRSRXEN FRS event detection enable Setting the bit enables FRS Rx event (FRSEVT) detection on the CC line selected through the PHYCCSEL bit. 0: Disable Clear the bit when the device is attached to an FRS-incapable source/sink. 16 1 read-write B_0x1 Enable 0x1 FRSTX FRS Tx signaling enable. Setting the bit enables FRS Tx signaling. The bit is cleared by hardware after a delay respecting the USB Power Delivery specification Revision 3.0. 17 1 read-write B_0x0 No effect 0x0 B_0x1 Enable 0x1 RDCH Rdch condition drive The bit drives Rdch condition on the CC line selected through the PHYCCSEL bit (thus associated with VCONN), by remaining set during the source-only UnattachedWait.SRC state, to respect the Type-C state. Refer to "USB Type-C ECN for Source VCONN Discharge". The CCENABLE[1:0] bitfield must be set accordingly, too. Changing the bit value only takes effect upon setting the UCPDx_STROBE bit of the SYSCFG_CFGR1 register. 18 1 read-write B_0x0 No effect 0x0 B_0x1 Rdch condition drive 0x1 CC1TCDIS CC1 Type-C detector disable The bit disables the Type-C detector on the CC1 line. When enabled, the Type-C detector for CC1 is configured through ANAMODE and ANASUBMODE[1:0]. 20 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 CC2TCDIS CC2 Type-C detector disable The bit disables the Type-C detector on the CC2 line. When enabled, the Type-C detector for CC2 is configured through ANAMODE and ANASUBMODE[1:0]. 21 1 read-write B_0x0 Enable 0x0 B_0x1 Disable 0x1 UCPD_IMR UCPD_IMR UCPD interrupt mask register 0x10 0x20 0x00000000 0xFFFFFFFF TXISIE TXIS interrupt enable 0 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 TXMSGDISCIE TXMSGDISC interrupt enable 1 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 TXMSGSENTIE TXMSGSENT interrupt enable 2 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 TXMSGABTIE TXMSGABT interrupt enable 3 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 HRSTDISCIE HRSTDISC interrupt enable 4 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 HRSTSENTIE HRSTSENT interrupt enable 5 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 TXUNDIE TXUND interrupt enable 6 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 RXNEIE RXNE interrupt enable 8 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 RXORDDETIE RXORDDET interrupt enable 9 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 RXHRSTDETIE RXHRSTDET interrupt enable 10 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 RXOVRIE RXOVR interrupt enable 11 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 RXMSGENDIE RXMSGEND interrupt enable 12 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 TYPECEVT1IE TYPECEVT1 interrupt enable 14 1 read-write TYPECEVT2IE TYPECEVT2 interrupt enable 15 1 read-write B_0x0 Disable 0x0 B_0x1 Enable 0x1 FRSEVTIE FRSEVT interrupt enable 20 1 read-only B_0x0 Disable 0x0 B_0x1 Enable 0x1 UCPD_SR UCPD_SR UCPD status register 0x14 0x20 0x00000000 0xFFFFFFFF TXIS Transmit interrupt status The flag indicates that the UCPD_TXDR register is empty and new data write is required (as the amount of data sent has not reached the payload size defined in the TXPAYSZ bitfield). The flag is cleared with the data write into the UCPD_TXDR register. 0 1 read-only B_0x0 New Tx data write not required 0x0 B_0x1 New Tx data write required 0x1 TXMSGDISC Message transmission discarded The flag indicates that a message transmission was dropped. The flag is cleared by setting the TXMSGDISCCF bit. Transmission of a message can be dropped if there is a concurrent receive in progress or at excessive noise on the line. After a Tx message is discarded, the flag is only raised when the CC line becomes idle. 1 1 read-only B_0x0 No Tx message discarded 0x0 B_0x1 Tx message discarded 0x1 TXMSGSENT Message transmission completed The flag indicates the completion of packet transmission. It is cleared by setting the TXMSGSENTCF bit. In the event of a message transmission interrupted by a Hard Reset, the flag is not raised. 2 1 read-only B_0x0 No Tx message completed 0x0 B_0x1 Tx message completed 0x1 TXMSGABT Transmit message abort The flag indicates that a Tx message is aborted due to a subsequent Hard Reset message send request taking priority during transmit. It is cleared by setting the TXMSGABTCF bit. 3 1 read-only B_0x0 No transmit message abort 0x0 B_0x1 Transmit message abort 0x1 HRSTDISC Hard Reset discarded The flag indicates that the Hard Reset message is discarded. The flag is cleared by setting the HRSTDISCCF bit. 4 1 read-only B_0x0 No Hard Reset discarded 0x0 B_0x1 Hard Reset discarded 0x1 HRSTSENT Hard Reset message sent The flag indicates that the Hard Reset message is sent. The flag is cleared by setting the HRSTSENTCF bit. 5 1 read-only B_0x0 No Hard Reset message sent 0x0 B_0x1 Hard Reset message sent 0x1 TXUND Tx data underrun detection The flag indicates that the Tx data register (UCPD_TXDR) was not written in time for a transmit message to execute normally. It is cleared by setting the TXUNDCF bit. 6 1 read-only B_0x0 No Tx data underrun detected 0x0 B_0x1 Tx data underrun detected 0x1 RXNE Receive data register not empty detection The flag indicates that the UCPD_RXDR register is not empty. It is automatically cleared upon reading UCPD_RXDR. 8 1 read-only B_0x0 Rx data register empty 0x0 B_0x1 Rx data register not empty 0x1 RXORDDET Rx ordered set (4 K-codes) detection The flag indicates the detection of an ordered set. The relevant information is stored in the RXORDSET[2:0] bitfield of the UCPD_RX_ORDSET register. It is cleared by setting the RXORDDETCF bit. 9 1 read-only B_0x0 No ordered set detected 0x0 B_0x1 A new ordered set detected 0x1 RXHRSTDET Rx Hard Reset receipt detection The flag indicates the receipt of valid Hard Reset message. It is cleared by setting the RXHRSTDETCF bit. 10 1 read-only B_0x0 Hard Reset not received 0x0 B_0x1 Hard Reset received 0x1 RXOVR Rx data overflow detection The flag indicates Rx data buffer overflow. It is cleared by setting the RXOVRCF bit. The buffer overflow can occur if the received data are not read fast enough. 11 1 read-only B_0x0 No overflow 0x0 B_0x1 Overflow 0x1 RXMSGEND Rx message received The flag indicates whether a message (except Hard Reset message) has been received, regardless the CRC value. The flag is cleared by setting the RXMSGENDCF bit. The RXERR flag set when the RXMSGEND flag goes high indicates errors in the last-received message. 12 1 read-only B_0x0 No new Rx message received 0x0 B_0x1 A new Rx message received 0x1 RXERR Receive message error The flag indicates errors of the last Rx message declared (via RXMSGEND), such as incorrect CRC or truncated message (a line becoming static before EOP is met). It is asserted whenever the RXMSGEND flag is set. 13 1 read-only B_0x0 No error detected 0x0 B_0x1 Error(s) detected 0x1 TYPECEVT1 Type-C voltage level event on CC1 line The flag indicates a change of the TYPEC_VSTATE_CC1[1:0] bitfield value, which corresponds to a new Type-C event. It is cleared by setting the TYPECEVT2CF bit. 14 1 read-only B_0x0 No new event 0x0 B_0x1 A new Type-C event 0x1 TYPECEVT2 Type-C voltage level event on CC2 line The flag indicates a change of the TYPEC_VSTATE_CC2[1:0] bitfield value, which corresponds to a new Type-C event. It is cleared by setting the TYPECEVT2CF bit. 15 1 read-only B_0x0 No new event 0x0 B_0x1 A new Type-C event 0x1 TYPEC_VSTATE_CC1 The status bitfield indicates the voltage level on the CC1 line in its steady state. The voltage variation on the CC1 line during USB PD messages due to the BMC PHY modulation does not impact the bitfield value. 16 2 read-only B_0x0 Lowest 0x0 B_0x1 Low 0x1 B_0x2 High 0x2 B_0x3 Highest 0x3 TYPEC_VSTATE_CC2 CC2 line voltage level The status bitfield indicates the voltage level on the CC2 line in its steady state. The voltage variation on the CC2 line during USB PD messages due to the BMC PHY modulation does not impact the bitfield value. 18 2 read-only B_0x0 Lowest 0x0 B_0x1 Low 0x1 B_0x2 High 0x2 B_0x3 Highest 0x3 FRSEVT FRS detection event The flag is cleared by setting the FRSEVTCF bit. 20 1 read-only B_0x0 No new event 0x0 B_0x1 New FRS receive event occurred 0x1 UCPD_ICR UCPD_ICR UCPD interrupt clear register 0x18 0x20 0x00000000 0xFFFFFFFF TXMSGDISCCF Tx message discard flag (TXMSGDISC) clear Setting the bit clears the TXMSGDISC flag in the UCPD_SR register. 1 1 write-only TXMSGSENTCF Tx message send flag (TXMSGSENT) clear Setting the bit clears the TXMSGSENT flag in the UCPD_SR register. 2 1 write-only TXMSGABTCF Tx message abort flag (TXMSGABT) clear Setting the bit clears the TXMSGABT flag in the UCPD_SR register. 3 1 write-only HRSTDISCCF Hard reset discard flag (HRSTDISC) clear Setting the bit clears the HRSTDISC flag in the UCPD_SR register. 4 1 write-only HRSTSENTCF Hard reset send flag (HRSTSENT) clear Setting the bit clears the HRSTSENT flag in the UCPD_SR register. 5 1 write-only TXUNDCF Tx underflow flag (TXUND) clear Setting the bit clears the TXUND flag in the UCPD_SR register. 6 1 write-only RXORDDETCF Rx ordered set detect flag (RXORDDET) clear Setting the bit clears the RXORDDET flag in the UCPD_SR register. 9 1 write-only RXHRSTDETCF Rx Hard Reset detect flag (RXHRSTDET) clear Setting the bit clears the RXHRSTDET flag in the UCPD_SR register. 10 1 write-only RXOVRCF Rx overflow flag (RXOVR) clear Setting the bit clears the RXOVR flag in the UCPD_SR register. 11 1 write-only RXMSGENDCF Rx message received flag (RXMSGEND) clear Setting the bit clears the RXMSGEND flag in the UCPD_SR register. 12 1 write-only TYPECEVT1CF Type-C CC1 event flag (TYPECEVT1) clear Setting the bit clears the TYPECEVT1 flag in the UCPD_SR register 14 1 write-only TYPECEVT2CF Type-C CC2 line event flag (TYPECEVT2) clear Setting the bit clears the TYPECEVT2 flag in the UCPD_SR register 15 1 write-only FRSEVTCF FRS event flag (FRSEVT) clear Setting the bit clears the FRSEVT flag in the UCPD_SR register. 20 1 write-only UCPD_TX_ORDSETR UCPD_TX_ORDSETR UCPD Tx ordered set type register 0x1c 0x20 0x00000000 0xFFFFFFFF TXORDSET Ordered set to transmit The bitfield determines a full 20-bit sequence to transmit, consisting of four K-codes, each of five bits, defining the packet to transmit. The bit 0 (bit 0 of K-code1) is the first, the bit 19 (bit 4 of K‑code4) the last. 0 20 read-write UCPD_TX_PAYSZR UCPD_TX_PAYSZR UCPD Tx payload size register 0x20 0x20 0x00000000 0xFFFFFFFF TXPAYSZ Payload size yet to transmit The bitfield is modified by software and by hardware. It contains the number of bytes of a payload (including header but excluding CRC) yet to transmit: each time a data byte is written into the UCPD_TXDR register, the bitfield value decrements and the TXIS bit is set, except when the bitfield value reaches zero. The enumerated values are standard payload sizes before the start of transmission. 0 10 read-write B_0x2 2 bytes - the size of Control message from the protocol layer 0x2 B_0x6 6 bytes - the shortest Data message allowed from the protocol layer) 0x6 B_0x1E 30 bytes - the longest non-extended Data message allowed from the protocol layer 0x1E B_0x106 262 bytes - the longest possible extended message 0x106 B_0x3FF 1024 bytes - the longest possible payload (for future expansion) 0x3FF UCPD_TXDR UCPD_TXDR UCPD Tx data register 0x24 0x20 0x00000000 0xFFFFFFFF TXDATA Data byte to transmit 0 8 read-write UCPD_RX_ORDSETR UCPD_RX_ORDSETR UCPD Rx ordered set register 0x28 0x20 0x00000000 0xFFFFFFFF RXORDSET Rx ordered set code detected 0 3 read-only B_0x0 SOP code detected in receiver 0x0 B_0x1 SOP' code detected in receiver 0x1 B_0x2 SOP'' code detected in receiver 0x2 B_0x3 SOP'_Debug detected in receiver 0x3 B_0x4 SOP''_Debug detected in receiver 0x4 B_0x5 Cable Reset detected in receiver 0x5 B_0x6 SOP extension#1 detected in receiver 0x6 B_0x7 SOP extension#2 detected in receiver 0x7 RXSOP3OF4 The bit indicates the number of correct K‑codes. For debug purposes only. 3 1 read-only B_0x0 4 correct K‑codes out of 4‑ 0x0 B_0x1 3 correct K‑codes out of 4‑ 0x1 RXSOPKINVALID The bitfield is for debug purposes only. Others: Invalid 4 3 read-only B_0x0 No K‑code corrupted 0x0 B_0x1 First K‑code corrupted 0x1 B_0x2 Second K‑code corrupted 0x2 B_0x3 Third K‑code corrupted 0x3 B_0x4 Fourth K‑code corrupted 0x4 UCPD_RX_PAYSZR UCPD_RX_PAYSZR UCPD Rx payload size register 0x2c 0x20 0x00000000 0xFFFFFFFF RXPAYSZ Rx payload size received This bitfield contains the number of bytes of a payload (including header but excluding CRC) received: each time a new data byte is received in the UCPD_RXDR register, the bitfield value increments and the RXMSGEND flag is set (and an interrupt generated if enabled). The bitfield may return a spurious value when a byte reception is ongoing (the RXMSGEND flag is low). 0 10 read-only B_0x2 2 bytes - the size of Control message from the protocol layer 0x2 B_0x6 6 bytes - the shortest Data message allowed from the protocol layer) 0x6 B_0x1E 30 bytes - the longest non-extended Data message allowed from the protocol layer 0x1E B_0x106 262 bytes - the longest possible extended message 0x106 B_0x3FF 1024 bytes - the longest possible payload (for future expansion) 0x3FF UCPD_RXDR UCPD_RXDR UCPD receive data register 0x30 0x20 0x00000000 0xFFFFFFFF RXDATA Data byte received 0 8 read-only UCPD_RX_ORDEXTR1 UCPD_RX_ORDEXTR1 UCPD Rx ordered set extension register 1 0x34 0x20 0x00000000 0xFFFFFFFF RXSOPX1 Ordered set 1 received The bitfield contains a full 20-bit sequence received, consisting of four K‑codes, each of five bits. The bit 0 (bit 0 of K‑code1) is receive first, the bit 19 (bit 4 of K‑code4) last. 0 20 read-write UCPD_RX_ORDEXTR2 UCPD_RX_ORDEXTR2 UCPD Rx ordered set extension register 2 0x38 0x20 0x00000000 0xFFFFFFFF RXSOPX2 Ordered set 2 received The bitfield contains a full 20-bit sequence received, consisting of four K‑codes, each of five bits. The bit 0 (bit 0 of K‑code1) is receive first, the bit 19 (bit 4 of K‑code4) last. 0 20 read-write UCPD2 0x4000A400 USART1 Universal synchronous asynchronous receiver transmitter USART 0x40013800 0x0 0x400 registers USART1 USART1 global interrupt 27 CR1_FIFO_ENABLED CR1_FIFO_ENABLED Control register 1 0x0 0x20 read-write 0x0000 UE USART enable When this bit is cleared, the USART prescalers and outputs are stopped immediately, and all current operations are discarded. The USART configuration is kept, but all the USART_ISR status flags are reset. This bit is set and cleared by software. Note: To enter low-power mode without generating errors on the line, the TE bit must be previously reset and the software must wait for the TC bit in the USART_ISR to be set before resetting the UE bit. The DMA requests are also reset when UE = 0 so the DMA channel must be disabled before resetting the UE bit. In Smartcard mode, (SCEN = 1), the SCLK is always available when CLKEN = 1, regardless of the UE bit value. 0 1 read-write B_0x0 USART prescaler and outputs disabled, low-power mode 0x0 B_0x1 USART enabled 0x1 UESM USART enable in low-power mode When this bit is cleared, the USART cannot wake up the MCU from low-power mode. When this bit is set, the USART can wake up the MCU from low-power mode. This bit is set and cleared by software. Note: It is recommended to set the UESM bit just before entering low-power mode and clear it when exit from low-power mode. If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Refer to . 1 1 read-write B_0x0 USART not able to wake up the MCU from low-power mode. 0x0 B_0x1 USART able to wake up the MCU from low-power mode. 0x1 RE Receiver enable This bit enables the receiver. It is set and cleared by software. 2 1 read-write B_0x0 Receiver is disabled 0x0 B_0x1 Receiver is enabled and begins searching for a start bit 0x1 TE Transmitter enable This bit enables the transmitter. It is set and cleared by software. Note: During transmission, a low pulse on the TE bit ('0’ followed by '1’) sends a preamble (idle line) after the current word, except in Smartcard mode. In order to generate an idle character, the TE must not be immediately written to '1’. To ensure the required duration, the software can poll the TEACK bit in the USART_ISR register. In Smartcard mode, when TE is set, there is a 1 bit-time delay before the transmission starts. 3 1 read-write B_0x0 Transmitter is disabled 0x0 B_0x1 Transmitter is enabled 0x1 IDLEIE IDLE interrupt enable This bit is set and cleared by software. 4 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever IDLE = 1 in the USART_ISR register 0x1 RXFNEIE RXFIFO not empty interrupt enable This bit is set and cleared by software. 5 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever ORE = 1 or RXFNE = 1 in the USART_ISR register 0x1 TCIE Transmission complete interrupt enable This bit is set and cleared by software. 6 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever TC = 1 in the USART_ISR register 0x1 TXFNFIE TXFIFO not full interrupt enable This bit is set and cleared by software. 7 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever TXFNF =1 in the USART_ISR register 0x1 PEIE PE interrupt enable This bit is set and cleared by software. 8 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever PE = 1 in the USART_ISR register 0x1 PS Parity selection This bit selects the odd or even parity when the parity generation/detection is enabled (PCE bit set). It is set and cleared by software. The parity is selected after the current byte. This bitfield can only be written when the USART is disabled (UE = 0). 9 1 read-write B_0x0 Even parity 0x0 B_0x1 Odd parity 0x1 PCE Parity control enable This bit selects the hardware parity control (generation and detection). When the parity control is enabled, the computed parity is inserted at the MSB position (9th bit if M = 1; 8th bit if M = 0) and the parity is checked on the received data. This bit is set and cleared by software. Once it is set, PCE is active after the current byte (in reception and in transmission). This bitfield can only be written when the USART is disabled (UE = 0). 10 1 read-write B_0x0 Parity control disabled 0x0 B_0x1 Parity control enabled 0x1 WAKE Receiver wakeup method This bit determines the USART wakeup method from Mute mode. It is set or cleared by software. This bitfield can only be written when the USART is disabled (UE = 0). 11 1 read-write B_0x0 Idle line 0x0 B_0x1 Address mark 0x1 M0 Word length This bit is used in conjunction with bit 28 (M1) to determine the word length. It is set or cleared by software (refer to bit 28 (M1)description). This bit can only be written when the USART is disabled (UE = 0). 12 1 read-write MME Mute mode enable This bit enables the USART Mute mode function. When set, the USART can switch between active and Mute mode, as defined by the WAKE bit. It is set and cleared by software. 13 1 read-write B_0x0 Receiver in active mode permanently 0x0 B_0x1 Receiver can switch between Mute mode and active mode. 0x1 CMIE Character match interrupt enable This bit is set and cleared by software. 14 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when the CMF bit is set in the USART_ISR register. 0x1 OVER8 Oversampling mode This bit can only be written when the USART is disabled (UE = 0). Note: In LIN, IrDA and Smartcard modes, this bit must be kept cleared. 15 1 read-write B_0x0 Oversampling by 16 0x0 B_0x1 Oversampling by 8 0x1 DEDT Driver Enable deassertion time This 5-bit value defines the time between the end of the last stop bit, in a transmitted message, and the de-activation of the DE (Driver Enable) signal. It is expressed in sample time units (1/8 or 1/16 bit time, depending on the oversampling rate). If the USART_TDR register is written during the DEDT time, the new data is transmitted only when the DEDT and DEAT times have both elapsed. This bitfield can only be written when the USART is disabled (UE = 0). Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 16 5 read-write DEAT Driver Enable assertion time This 5-bit value defines the time between the activation of the DE (Driver Enable) signal and the beginning of the start bit. It is expressed in sample time units (1/8 or 1/16 bit time, depending on the oversampling rate). This bitfield can only be written when the USART is disabled (UE = 0). Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 21 5 read-write RTOIE Receiver timeout interrupt enable This bit is set and cleared by software. Note: If the USART does not support the Receiver timeout feature, this bit is reserved and must be kept at reset value. . 26 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when the RTOF bit is set in the USART_ISR register. 0x1 EOBIE End of Block interrupt enable This bit is set and cleared by software. Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Refer to . 27 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when the EOBF flag is set in the USART_ISR register 0x1 M1 Word length This bit must be used in conjunction with bit 12 (M0) to determine the word length. It is set or cleared by software. M[1:0] = '00’: 1 start bit, 8 Data bits, n Stop bit M[1:0] = '01’: 1 start bit, 9 Data bits, n Stop bit M[1:0] = '10’: 1 start bit, 7 Data bits, n Stop bit This bit can only be written when the USART is disabled (UE = 0). Note: In 7-bits data length mode, the Smartcard mode, LIN master mode and Auto baud rate (0x7F and 0x55 frames detection) are not supported. 28 1 read-write FIFOEN FIFO mode enable This bit is set and cleared by software. This bitfield can only be written when the USART is disabled (UE = 0). Note: FIFO mode can be used on standard UART communication, in SPI master/slave mode and in Smartcard modes only. It must not be enabled in IrDA and LIN modes. 29 1 read-write B_0x0 FIFO mode is disabled. 0x0 B_0x1 FIFO mode is enabled. 0x1 TXFEIE TXFIFO empty interrupt enable This bit is set and cleared by software. 30 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when TXFE = 1 in the USART_ISR register 0x1 RXFFIE RXFIFO Full interrupt enable This bit is set and cleared by software. 31 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when RXFF = 1 in the USART_ISR register 0x1 CR1_FIFO_DISABLED CR1_FIFO_DISABLED Control register 1 CR1_FIFO_ENABLED 0x0 0x20 read-write 0x0000 UE USART enable When this bit is cleared, the USART prescalers and outputs are stopped immediately, and all current operations are discarded. The USART configuration is kept, but all the USART_ISR status flags are reset. This bit is set and cleared by software. Note: To enter low-power mode without generating errors on the line, the TE bit must be previously reset and the software must wait for the TC bit in the USART_ISR to be set before resetting the UE bit. The DMA requests are also reset when UE = 0 so the DMA channel must be disabled before resetting the UE bit. In Smartcard mode, (SCEN = 1), the SCLK is always available when CLKEN = 1, regardless of the UE bit value. 0 1 read-write B_0x0 USART prescaler and outputs disabled, low-power mode 0x0 B_0x1 USART enabled 0x1 UESM USART enable in low-power mode When this bit is cleared, the USART cannot wake up the MCU from low-power mode. When this bit is set, the USART can wake up the MCU from low-power mode. This bit is set and cleared by software. Note: It is recommended to set the UESM bit just before entering low-power mode and clear it when exit from low-power mode. If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Refer to . 1 1 read-write B_0x0 USART not able to wake up the MCU from low-power mode. 0x0 B_0x1 USART able to wake up the MCU from low-power mode. 0x1 RE Receiver enable This bit enables the receiver. It is set and cleared by software. 2 1 read-write B_0x0 Receiver is disabled 0x0 B_0x1 Receiver is enabled and begins searching for a start bit 0x1 TE Transmitter enable This bit enables the transmitter. It is set and cleared by software. Note: During transmission, a low pulse on the TE bit ('0’ followed by '1’) sends a preamble (idle line) after the current word, except in Smartcard mode. In order to generate an idle character, the TE must not be immediately written to '1’. To ensure the required duration, the software can poll the TEACK bit in the USART_ISR register. In Smartcard mode, when TE is set, there is a 1 bit-time delay before the transmission starts. 3 1 read-write B_0x0 Transmitter is disabled 0x0 B_0x1 Transmitter is enabled 0x1 IDLEIE IDLE interrupt enable This bit is set and cleared by software. 4 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever IDLE = 1 in the USART_ISR register 0x1 RXNEIE Receive data register not empty This bit is set and cleared by software. 5 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever ORE = 1 or RXNE = 1 in the USART_ISR register 0x1 TCIE Transmission complete interrupt enable This bit is set and cleared by software. 6 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever TC = 1 in the USART_ISR register 0x1 TXEIE Transmit data register empty This bit is set and cleared by software. 7 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever TXE =1 in the USART_ISR register 0x1 PEIE PE interrupt enable This bit is set and cleared by software. 8 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever PE = 1 in the USART_ISR register 0x1 PS Parity selection This bit selects the odd or even parity when the parity generation/detection is enabled (PCE bit set). It is set and cleared by software. The parity is selected after the current byte. This bitfield can only be written when the USART is disabled (UE = 0). 9 1 read-write B_0x0 Even parity 0x0 B_0x1 Odd parity 0x1 PCE Parity control enable This bit selects the hardware parity control (generation and detection). When the parity control is enabled, the computed parity is inserted at the MSB position (9th bit if M = 1; 8th bit if M = 0) and the parity is checked on the received data. This bit is set and cleared by software. Once it is set, PCE is active after the current byte (in reception and in transmission). This bitfield can only be written when the USART is disabled (UE = 0). 10 1 read-write B_0x0 Parity control disabled 0x0 B_0x1 Parity control enabled 0x1 WAKE Receiver wakeup method This bit determines the USART wakeup method from Mute mode. It is set or cleared by software. This bitfield can only be written when the USART is disabled (UE = 0). 11 1 read-write B_0x0 Idle line 0x0 B_0x1 Address mark 0x1 M0 Word length This bit is used in conjunction with bit 28 (M1) to determine the word length. It is set or cleared by software (refer to bit 28 (M1)description). This bit can only be written when the USART is disabled (UE = 0). 12 1 read-write MME Mute mode enable This bit enables the USART Mute mode function. When set, the USART can switch between active and Mute mode, as defined by the WAKE bit. It is set and cleared by software. 13 1 read-write B_0x0 Receiver in active mode permanently 0x0 B_0x1 Receiver can switch between Mute mode and active mode. 0x1 CMIE Character match interrupt enable This bit is set and cleared by software. 14 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when the CMF bit is set in the USART_ISR register. 0x1 OVER8 Oversampling mode This bit can only be written when the USART is disabled (UE = 0). Note: In LIN, IrDA and Smartcard modes, this bit must be kept cleared. 15 1 read-write B_0x0 Oversampling by 16 0x0 B_0x1 Oversampling by 8 0x1 DEDT Driver Enable deassertion time This 5-bit value defines the time between the end of the last stop bit, in a transmitted message, and the de-activation of the DE (Driver Enable) signal. It is expressed in sample time units (1/8 or 1/16 bit time, depending on the oversampling rate). If the USART_TDR register is written during the DEDT time, the new data is transmitted only when the DEDT and DEAT times have both elapsed. This bitfield can only be written when the USART is disabled (UE = 0). Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 16 5 read-write DEAT Driver Enable assertion time This 5-bit value defines the time between the activation of the DE (Driver Enable) signal and the beginning of the start bit. It is expressed in sample time units (1/8 or 1/16 bit time, depending on the oversampling rate). This bitfield can only be written when the USART is disabled (UE = 0). Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 21 5 read-write RTOIE Receiver timeout interrupt enable This bit is set and cleared by software. Note: If the USART does not support the Receiver timeout feature, this bit is reserved and must be kept at reset value. . 26 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when the RTOF bit is set in the USART_ISR register. 0x1 EOBIE End of Block interrupt enable This bit is set and cleared by software. Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Refer to . 27 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when the EOBF flag is set in the USART_ISR register 0x1 M1 Word length This bit must be used in conjunction with bit 12 (M0) to determine the word length. It is set or cleared by software. M[1:0] = '00’: 1 start bit, 8 Data bits, n Stop bit M[1:0] = '01’: 1 start bit, 9 Data bits, n Stop bit M[1:0] = '10’: 1 start bit, 7 Data bits, n Stop bit This bit can only be written when the USART is disabled (UE = 0). Note: In 7-bits data length mode, the Smartcard mode, LIN master mode and Auto baud rate (0x7F and 0x55 frames detection) are not supported. 28 1 read-write FIFOEN FIFO mode enable This bit is set and cleared by software. This bitfield can only be written when the USART is disabled (UE = 0). Note: FIFO mode can be used on standard UART communication, in SPI master/slave mode and in Smartcard modes only. It must not be enabled in IrDA and LIN modes. 29 1 read-write B_0x0 FIFO mode is disabled. 0x0 B_0x1 FIFO mode is enabled. 0x1 CR2 CR2 Control register 2 0x4 0x20 read-write 0x0000 SLVEN Synchronous Slave mode enable When the SLVEN bit is set, the synchronous slave mode is enabled. Note: When SPI slave mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 0 1 read-write B_0x0 Slave mode disabled. 0x0 B_0x1 Slave mode enabled. 0x1 DIS_NSS When the DIS_NSS bit is set, the NSS pin input is ignored. Note: When SPI slave mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 3 1 read-write B_0x0 SPI slave selection depends on NSS input pin. 0x0 B_0x1 SPI slave is always selected and NSS input pin is ignored. 0x1 ADDM7 7-bit Address Detection/4-bit Address Detection This bit is for selection between 4-bit address detection or 7-bit address detection. This bit can only be written when the USART is disabled (UE = 0) Note: In 7-bit and 9-bit data modes, the address detection is done on 6-bit and 8-bit address (ADD[5:0] and ADD[7:0]) respectively. 4 1 read-write B_0x0 4-bit address detection 0x0 B_0x1 7-bit address detection (in 8-bit data mode) 0x1 LBDL LIN break detection length This bit is for selection between 11 bit or 10 bit break detection. This bit can only be written when the USART is disabled (UE = 0). Note: If LIN mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 5 1 read-write B_0x0 10-bit break detection 0x0 B_0x1 11-bit break detection 0x1 LBDIE LIN break detection interrupt enable Break interrupt mask (break detection using break delimiter). Note: If LIN mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 6 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An interrupt is generated whenever LBDF = 1 in the USART_ISR register 0x1 LBCL Last bit clock pulse This bit is used to select whether the clock pulse associated with the last data bit transmitted (MSB) has to be output on the SCLK pin in synchronous mode. The last bit is the 7th or 8th or 9th data bit transmitted depending on the 7 or 8 or 9 bit format selected by the M bit in the USART_CR1 register. This bit can only be written when the USART is disabled (UE = 0). Note: If synchronous mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 8 1 read-write B_0x0 The clock pulse of the last data bit is not output to the SCLK pin 0x0 B_0x1 The clock pulse of the last data bit is output to the SCLK pin 0x1 CPHA Clock phase This bit is used to select the phase of the clock output on the SCLK pin in synchronous mode. It works in conjunction with the CPOL bit to produce the desired clock/data relationship (see and ) This bit can only be written when the USART is disabled (UE = 0). Note: If synchronous mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 9 1 read-write B_0x0 The first clock transition is the first data capture edge 0x0 B_0x1 The second clock transition is the first data capture edge 0x1 CPOL Clock polarity This bit enables the user to select the polarity of the clock output on the SCLK pin in synchronous mode. It works in conjunction with the CPHA bit to produce the desired clock/data relationship This bit can only be written when the USART is disabled (UE = 0). Note: If synchronous mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 10 1 read-write B_0x0 Steady low value on SCLK pin outside transmission window 0x0 B_0x1 Steady high value on SCLK pin outside transmission window 0x1 CLKEN Clock enable This bit enables the user to enable the SCLK pin. This bit can only be written when the USART is disabled (UE = 0). Note: If neither synchronous mode nor Smartcard mode is supported, this bit is reserved and must be kept at reset value. Refer to . In Smartcard mode, in order to provide correctly the SCLK clock to the smartcard, the steps below must be respected: UE = 0 SCEN = 1 GTPR configuration CLKEN= 1 UE = 1 11 1 read-write B_0x0 SCLK pin disabled 0x0 B_0x1 SCLK pin enabled 0x1 STOP stop bits These bits are used for programming the stop bits. This bitfield can only be written when the USART is disabled (UE = 0). 12 2 read-write B_0x0 1 stop bit 0x0 B_0x1 0.5 stop bit. 0x1 B_0x2 2 stop bits 0x2 B_0x3 1.5 stop bits 0x3 LINEN LIN mode enable This bit is set and cleared by software. The LIN mode enables the capability to send LIN synchronous breaks (13 low bits) using the SBKRQ bit in the USART_CR1 register, and to detect LIN Sync breaks. This bitfield can only be written when the USART is disabled (UE = 0). Note: If the USART does not support LIN mode, this bit is reserved and must be kept at reset value. Refer to . 14 1 read-write B_0x0 LIN mode disabled 0x0 B_0x1 LIN mode enabled 0x1 SWAP Swap TX/RX pins This bit is set and cleared by software. This bitfield can only be written when the USART is disabled (UE = 0). 15 1 read-write B_0x0 TX/RX pins are used as defined in standard pinout 0x0 B_0x1 The TX and RX pins functions are swapped. This enables to work in the case of a cross-wired connection to another UART. 0x1 RXINV RX pin active level inversion This bit is set and cleared by software. This enables the use of an external inverter on the RX line. This bitfield can only be written when the USART is disabled (UE = 0). 16 1 read-write B_0x0 RX pin signal works using the standard logic levels (VDD =1/idle, Gnd = 0/mark) 0x0 B_0x1 RX pin signal values are inverted (VDD =0/mark, Gnd = 1/idle). 0x1 TXINV TX pin active level inversion This bit is set and cleared by software. This enables the use of an external inverter on the TX line. This bitfield can only be written when the USART is disabled (UE = 0). 17 1 read-write B_0x0 TX pin signal works using the standard logic levels (VDD =1/idle, Gnd = 0/mark) 0x0 B_0x1 TX pin signal values are inverted (VDD =0/mark, Gnd = 1/idle). 0x1 DATAINV Binary data inversion This bit is set and cleared by software. This bitfield can only be written when the USART is disabled (UE = 0). 18 1 read-write B_0x0 Logical data from the data register are send/received in positive/direct logic. (1 = H, 0 = L) 0x0 B_0x1 Logical data from the data register are send/received in negative/inverse logic. (1 = L, 0 = H). The parity bit is also inverted. 0x1 MSBFIRST Most significant bit first This bit is set and cleared by software. This bitfield can only be written when the USART is disabled (UE = 0). 19 1 read-write B_0x0 data is transmitted/received with data bit 0 first, following the start bit. 0x0 B_0x1 data is transmitted/received with the MSB (bit 7/8) first, following the start bit. 0x1 ABREN Auto baud rate enable This bit is set and cleared by software. Note: If the USART does not support the auto baud rate feature, this bit is reserved and must be kept at reset value. Refer to . 20 1 read-write B_0x0 Auto baud rate detection is disabled. 0x0 B_0x1 Auto baud rate detection is enabled. 0x1 ABRMOD Auto baud rate mode These bits are set and cleared by software. This bitfield can only be written when ABREN = 0 or the USART is disabled (UE = 0). Note: If DATAINV = 1 and/or MSBFIRST = 1 the patterns must be the same on the line, for example 0xAA for MSBFIRST) If the USART does not support the auto baud rate feature, this bit is reserved and must be kept at reset value. Refer to . 21 2 read-write B_0x0 Measurement of the start bit is used to detect the baud rate. 0x0 B_0x1 Falling edge to falling edge measurement (the received frame must start with a single bit = 1 and Frame = Start10xxxxxx) 0x1 B_0x2 0x7F frame detection. 0x2 B_0x3 0x55 frame detection 0x3 RTOEN Receiver timeout enable This bit is set and cleared by software. When this feature is enabled, the RTOF flag in the USART_ISR register is set if the RX line is idle (no reception) for the duration programmed in the RTOR (receiver timeout register). Note: If the USART does not support the Receiver timeout feature, this bit is reserved and must be kept at reset value. Refer to . 23 1 read-write B_0x0 Receiver timeout feature disabled. 0x0 B_0x1 Receiver timeout feature enabled. 0x1 ADD Address of the USART node ADD[7:4]: These bits give the address of the USART node or a character code to be recognized. They are used to wake up the MCU with 7-bit address mark detection in multiprocessor communication during Mute mode or low-power mode. The MSB of the character sent by the transmitter should be equal to 1. They can also be used for character detection during normal reception, Mute mode inactive (for example, end of block detection in ModBus protocol). In this case, the whole received character (8-bit) is compared to the ADD[7:0] value and CMF flag is set on match. These bits can only be written when reception is disabled (RE = 0) or the USART is disabled (UE = 0). ADD[3:0]: These bits give the address of the USART node or a character code to be recognized. They are used for wakeup with address mark detection, in multiprocessor communication during Mute mode or low-power mode. These bits can only be written when reception is disabled (RE = 0) or the USART is disabled (UE = 0). 24 8 read-write CR3 CR3 Control register 3 0x8 0x20 read-write 0x0000 EIE Error interrupt enable Error Interrupt Enable Bit is required to enable interrupt generation in case of a framing error, overrun error noise flag or SPI slave underrun error (FE = 1 or ORE = 1 or NE = 1 or UDR = 1 in the USART_ISR register). 0 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 interrupt generated when FE = 1 or ORE = 1 or NE = 1 or UDR = 1 (in SPI slave mode) in the USART_ISR register. 0x1 IREN IrDA mode enable This bit is set and cleared by software. This bit can only be written when the USART is disabled (UE = 0). Note: If IrDA mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 1 1 read-write B_0x0 IrDA disabled 0x0 B_0x1 IrDA enabled 0x1 IRLP IrDA low-power This bit is used for selecting between normal and low-power IrDA modes This bit can only be written when the USART is disabled (UE = 0). Note: If IrDA mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 2 1 read-write B_0x0 Normal mode 0x0 B_0x1 Low-power mode 0x1 HDSEL Half-duplex selection Selection of Single-wire Half-duplex mode This bit can only be written when the USART is disabled (UE = 0). 3 1 read-write B_0x0 Half duplex mode is not selected 0x0 B_0x1 Half duplex mode is selected 0x1 NACK Smartcard NACK enable This bitfield can only be written when the USART is disabled (UE = 0). Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Refer to . 4 1 read-write B_0x0 NACK transmission in case of parity error is disabled 0x0 B_0x1 NACK transmission during parity error is enabled 0x1 SCEN Smartcard mode enable This bit is used for enabling Smartcard mode. This bitfield can only be written when the USART is disabled (UE = 0). Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Refer to . 5 1 read-write B_0x0 Smartcard Mode disabled 0x0 B_0x1 Smartcard Mode enabled 0x1 DMAR DMA enable receiver This bit is set/reset by software 6 1 read-write B_0x1 DMA mode is enabled for reception 0x1 B_0x0 DMA mode is disabled for reception 0x0 DMAT DMA enable transmitter This bit is set/reset by software 7 1 read-write B_0x1 DMA mode is enabled for transmission 0x1 B_0x0 DMA mode is disabled for transmission 0x0 RTSE RTS enable This bit can only be written when the USART is disabled (UE = 0). Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 8 1 read-write B_0x0 RTS hardware flow control disabled 0x0 B_0x1 RTS output enabled, data is only requested when there is space in the receive buffer. The transmission of data is expected to cease after the current character has been transmitted. The nRTS output is asserted (pulled to 0) when data can be received. 0x1 CTSE CTS enable This bit can only be written when the USART is disabled (UE = 0) Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 9 1 read-write B_0x0 CTS hardware flow control disabled 0x0 B_0x1 CTS mode enabled, data is only transmitted when the nCTS input is asserted (tied to 0). If the nCTS input is deasserted while data is being transmitted, then the transmission is completed before stopping. If data is written into the data register while nCTS is asserted, the transmission is postponed until nCTS is asserted. 0x1 CTSIE CTS interrupt enable Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 10 1 read-write B_0x0 Interrupt is inhibited 0x0 B_0x1 An interrupt is generated whenever CTSIF = 1 in the USART_ISR register 0x1 ONEBIT One sample bit method enable This bit enables the user to select the sample method. When the one sample bit method is selected the noise detection flag (NE) is disabled. This bit can only be written when the USART is disabled (UE = 0). 11 1 read-write B_0x0 Three sample bit method 0x0 B_0x1 One sample bit method 0x1 OVRDIS Overrun Disable This bit is used to disable the receive overrun detection. the ORE flag is not set and the new received data overwrites the previous content of the USART_RDR register. When FIFO mode is enabled, the RXFIFO is bypassed and data is written directly in USART_RDR register. Even when FIFO management is enabled, the RXNE flag is to be used. This bit can only be written when the USART is disabled (UE = 0). Note: This control bit enables checking the communication flow w/o reading the data 12 1 read-write B_0x0 Overrun Error Flag, ORE, is set when received data is not read before receiving new data. 0x0 B_0x1 Overrun functionality is disabled. If new data is received while the RXNE flag is still set 0x1 DDRE DMA Disable on Reception Error This bit can only be written when the USART is disabled (UE=0). Note: The reception errors are: parity error, framing error or noise error. 13 1 read-write B_0x0 DMA is not disabled in case of reception error. The corresponding error flag is set but RXNE is kept 0 preventing from overrun. As a consequence, the DMA request is not asserted, so the erroneous data is not transferred (no DMA request), but next correct received data is transferred (used for Smartcard mode). 0x0 B_0x1 DMA is disabled following a reception error. The corresponding error flag is set, as well as RXNE. The DMA request is masked until the error flag is cleared. This means that the software must first disable the DMA request (DMAR = 0) or clear RXNE/RXFNE is case FIFO mode is enabled) before clearing the error flag. 0x1 DEM Driver enable mode This bit enables the user to activate the external transceiver control, through the DE signal. This bit can only be written when the USART is disabled (UE = 0). Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. . 14 1 read-write B_0x0 DE function is disabled. 0x0 B_0x1 DE function is enabled. The DE signal is output on the RTS pin. 0x1 DEP Driver enable polarity selection This bit can only be written when the USART is disabled (UE = 0). Note: If the Driver Enable feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 15 1 read-write B_0x0 DE signal is active high. 0x0 B_0x1 DE signal is active low. 0x1 SCARCNT Smartcard auto-retry count This bitfield specifies the number of retries for transmission and reception in Smartcard mode. In transmission mode, it specifies the number of automatic retransmission retries, before generating a transmission error (FE bit set). In reception mode, it specifies the number or erroneous reception trials, before generating a reception error (RXNE/RXFNE and PE bits set). This bitfield must be programmed only when the USART is disabled (UE = 0). When the USART is enabled (UE = 1), this bitfield may only be written to 0x0, in order to stop retransmission. Note: If Smartcard mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 17 3 read-write B_0x0 retransmission disabled - No automatic retransmission in transmit mode. 0x0 B_0x1 number of automatic retransmission attempts (before signaling error) 0x1 B_0x2 number of automatic retransmission attempts (before signaling error) 0x2 B_0x3 number of automatic retransmission attempts (before signaling error) 0x3 B_0x4 number of automatic retransmission attempts (before signaling error) 0x4 B_0x5 number of automatic retransmission attempts (before signaling error) 0x5 B_0x6 number of automatic retransmission attempts (before signaling error) 0x6 B_0x7 number of automatic retransmission attempts (before signaling error) 0x7 WUS Wakeup from low-power mode interrupt flag selection This bitfield specifies the event which activates the WUF (Wakeup from low-power mode flag). This bitfield can only be written when the USART is disabled (UE = 0). If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Refer to page 835. 20 2 read-write B_0x0 WUF active on address match (as defined by ADD[7:0] and ADDM7) 0x0 B_0x2 WUF active on start bit detection 0x2 B_0x3 WUF active on RXNE/RXFNE. 0x3 WUFIE Wakeup from low-power mode interrupt enable This bit is set and cleared by software. Note: WUFIE must be set before entering in low-power mode. If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Refer to page 835. 22 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever WUF = 1 in the USART_ISR register 0x1 TXFTIE TXFIFO threshold interrupt enable This bit is set and cleared by software. 23 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when TXFIFO reaches the threshold programmed in TXFTCFG. 0x1 TCBGTIE Transmission Complete before guard time, interrupt enable This bit is set and cleared by software. Note: If the USART does not support the Smartcard mode, this bit is reserved and must be kept at reset value. Refer to . 24 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated whenever TCBGT=1 in the USART_ISR register 0x1 RXFTCFG Receive FIFO threshold configuration Remaining combinations: Reserved 25 3 read-write B_0x0 Receive FIFO reaches 1/8 of its depth 0x0 B_0x1 Receive FIFO reaches 1/4 of its depth 0x1 B_0x2 Receive FIFO reaches 1/2 of its depth 0x2 B_0x3 Receive FIFO reaches 3/4 of its depth 0x3 B_0x4 Receive FIFO reaches 7/8 of its depth 0x4 B_0x5 Receive FIFO becomes full 0x5 RXFTIE RXFIFO threshold interrupt enable This bit is set and cleared by software. 28 1 read-write B_0x0 Interrupt inhibited 0x0 B_0x1 USART interrupt generated when Receive FIFO reaches the threshold programmed in RXFTCFG. 0x1 TXFTCFG TXFIFO threshold configuration Remaining combinations: Reserved 29 3 read-write B_0x0 TXFIFO reaches 1/8 of its depth 0x0 B_0x1 TXFIFO reaches 1/4 of its depth 0x1 B_0x2 TXFIFO reaches 1/2 of its depth 0x2 B_0x3 TXFIFO reaches 3/4 of its depth 0x3 B_0x4 TXFIFO reaches 7/8 of its depth 0x4 B_0x5 TXFIFO becomes empty 0x5 BRR BRR Baud rate register 0xC 0x20 read-write 0x0000 BRR USART baud rate 0 16 read-write GTPR GTPR Guard time and prescaler register 0x10 0x20 read-write 0x0000 PSC Prescaler value In IrDA low-power and normal IrDA mode: PSC[7:0] = IrDA Normal and Low-Power baud rate PSC[7:0] is used to program the prescaler for dividing the USART source clock to achieve the low-power frequency: the source clock is divided by the value given in the register (8 significant bits): In Smartcard mode: PSC[4:0] = Prescaler value PSC[4:0] is used to program the prescaler for dividing the USART source clock to provide the Smartcard clock. The value given in the register (5 significant bits) is multiplied by 2 to give the division factor of the source clock frequency: ... 0010 0000: Divides the source clock by 32 (IrDA mode) ... 1111 1111: Divides the source clock by 255 (IrDA mode) This bitfield can only be written when the USART is disabled (UE = 0). Note: Bits [7:5] must be kept cleared if Smartcard mode is used. This bitfield is reserved and forced by hardware to '0’ when the Smartcard and IrDA modes are not supported. Refer to . 0 8 read-write B_0x0 Reserved - do not program this value 0x0 B_0x1 Divides the source clock by 1 (IrDA mode) / by 2 (Smarcard mode) 0x1 B_0x2 Divides the source clock by 2 (IrDA mode) / by 4 (Smartcard mode) 0x2 B_0x3 Divides the source clock by 3 (IrDA mode) / by 6 (Smartcard mode) 0x3 B_0x1F Divides the source clock by 31 (IrDA mode) / by 62 (Smartcard mode) 0x1F GT Guard time value This bitfield is used to program the Guard time value in terms of number of baud clock periods. This is used in Smartcard mode. The Transmission Complete flag is set after this guard time value. This bitfield can only be written when the USART is disabled (UE = 0). Note: If Smartcard mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 8 8 read-write RTOR RTOR Receiver timeout register 0x14 0x20 read-write 0x0000 RTO Receiver timeout value 0 24 BLEN Block Length 24 8 RQR RQR Request register 0x18 0x20 write-only 0x0000 ABRRQ Auto baud rate request Writing 1 to this bit resets the ABRF flag in the USART_ISR and requests an automatic baud rate measurement on the next received data frame. Note: If the USART does not support the auto baud rate feature, this bit is reserved and must be kept at reset value. Refer to . 0 1 write-only SBKRQ Send break request Writing 1 to this bit sets the SBKF flag and request to send a BREAK on the line, as soon as the transmit machine is available. Note: When the application needs to send the break character following all previously inserted data, including the ones not yet transmitted, the software should wait for the TXE flag assertion before setting the SBKRQ bit. 1 1 write-only MMRQ Mute mode request Writing 1 to this bit puts the USART in Mute mode and resets the RWU flag. 2 1 write-only RXFRQ Receive data flush request Writing 1 to this bit empties the entire receive FIFO i.e. clears the bit RXFNE. This enables to discard the received data without reading them, and avoid an overrun condition. 3 1 write-only TXFRQ Transmit data flush request When FIFO mode is disabled, writing '1’ to this bit sets the TXE flag. This enables to discard the transmit data. This bit must be used only in Smartcard mode, when data have not been sent due to errors (NACK) and the FE flag is active in the USART_ISR register. If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. When FIFO is enabled, TXFRQ bit is set to flush the whole FIFO. This sets the TXFE flag (Transmit FIFO empty, bit 23 in the USART_ISR register). Flushing the Transmit FIFO is supported in both UART and Smartcard modes. Note: In FIFO mode, the TXFNF flag is reset during the flush request until TxFIFO is empty in order to ensure that no data are written in the data register. 4 1 write-only ISR_FIFO_ENABLED ISR_FIFO_ENABLED Interrupt & status register 0x1C 0x20 read-only 0x008000C0 PE Parity error This bit is set by hardware when a parity error occurs in receiver mode. It is cleared by software, writing 1 to the PECF in the USART_ICR register. An interrupt is generated if PEIE = 1 in the USART_CR1 register. Note: This error is associated with the character in the USART_RDR. 0 1 read-only B_0x0 No parity error 0x0 B_0x1 Parity error 0x1 FE Framing error This bit is set by hardware when a de-synchronization, excessive noise or a break character is detected. It is cleared by software, writing 1 to the FECF bit in the USART_ICR register. When transmitting data in Smartcard mode, this bit is set when the maximum number of transmit attempts is reached without success (the card NACKs the data frame). An interrupt is generated if EIE = 1 in the USART_CR1 register. Note: This error is associated with the character in the USART_RDR. 1 1 read-only B_0x0 No Framing error is detected 0x0 B_0x1 Framing error or break character is detected 0x1 NE Noise detection flag This bit is set by hardware when noise is detected on a received frame. It is cleared by software, writing 1 to the NECF bit in the USART_ICR register. Note: This bit does not generate an interrupt as it appears at the same time as the RXFNE bit which itself generates an interrupt. An interrupt is generated when the NE flag is set during multi buffer communication if the EIE bit is set. When the line is noise-free, the NE flag can be disabled by programming the ONEBIT bit to 1 to increase the USART tolerance to deviations (Refer to Tolerance of the USART receiver to clock deviation on page 861). This error is associated with the character in the USART_RDR. 2 1 read-only B_0x0 No noise is detected 0x0 B_0x1 Noise is detected 0x1 ORE Overrun error This bit is set by hardware when the data currently being received in the shift register is ready to be transferred into the USART_RDR register while RXFF = 1. It is cleared by a software, writing 1 to the ORECF, in the USART_ICR register. An interrupt is generated if RXFNEIE = 1 or EIE = 1 in the USART_CR1 register. Note: When this bit is set, the USART_RDR register content is not lost but the shift register is overwritten. An interrupt is generated if the ORE flag is set during multi buffer communication if the EIE bit is set. This bit is permanently forced to 0 (no overrun detection) when the bit OVRDIS is set in the USART_CR3 register. 3 1 read-only B_0x0 No overrun error 0x0 B_0x1 Overrun error is detected 0x1 IDLE Idle line detected This bit is set by hardware when an Idle Line is detected. An interrupt is generated if IDLEIE = 1 in the USART_CR1 register. It is cleared by software, writing 1 to the IDLECF in the USART_ICR register. Note: The IDLE bit is not set again until the RXFNE bit has been set (i.e. a new idle line occurs). If Mute mode is enabled (MME = 1), IDLE is set if the USART is not mute (RWU = 0), whatever the Mute mode selected by the WAKE bit. If RWU = 1, IDLE is not set. 4 1 read-only B_0x0 No Idle line is detected 0x0 B_0x1 Idle line is detected 0x1 RXFNE RXFIFO not empty RXFNE bit is set by hardware when the RXFIFO is not empty, meaning that data can be read from the USART_RDR register. Every read operation from the USART_RDR frees a location in the RXFIFO. RXFNE is cleared when the RXFIFO is empty. The RXFNE flag can also be cleared by writing 1 to the RXFRQ in the USART_RQR register. An interrupt is generated if RXFNEIE = 1 in the USART_CR1 register. 5 1 read-only B_0x0 Data is not received 0x0 B_0x1 Received data is ready to be read. 0x1 TC Transmission complete This bit indicates that the last data written in the USART_TDR has been transmitted out of the shift register. It is set by hardware when the transmission of a frame containing data is complete and when TXFE is set. An interrupt is generated if TCIE = 1 in the USART_CR1 register. TC bit is is cleared by software, by writing 1 to the TCCF in the USART_ICR register or by a write to the USART_TDR register. Note: If TE bit is reset and no transmission is on going, the TC bit is immediately set. 6 1 read-only B_0x0 Transmission is not complete 0x0 B_0x1 Transmission is complete 0x1 TXFNF TXFIFO not full TXFNF is set by hardware when TXFIFO is not full meaning that data can be written in the USART_TDR. Every write operation to the USART_TDR places the data in the TXFIFO. This flag remains set until the TXFIFO is full. When the TXFIFO is full, this flag is cleared indicating that data can not be written into the USART_TDR. An interrupt is generated if the TXFNFIE bit =1 in the USART_CR1 register. Note: The TXFNF is kept reset during the flush request until TXFIFO is empty. After sending the flush request (by setting TXFRQ bit), the flag TXFNF should be checked prior to writing in TXFIFO (TXFNF and TXFE are set at the same time). This bit is used during single buffer transmission. 7 1 read-only B_0x0 Transmit FIFO is full 0x0 B_0x1 Transmit FIFO is not full 0x1 LBDF LIN break detection flag This bit is set by hardware when the LIN break is detected. It is cleared by software, by writing 1 to the LBDCF in the USART_ICR. An interrupt is generated if LBDIE = 1 in the USART_CR2 register. Note: If the USART does not support LIN mode, this bit is reserved and kept at reset value. Refer to . 8 1 read-only B_0x0 LIN Break not detected 0x0 B_0x1 LIN break detected 0x1 CTSIF CTS interrupt flag This bit is set by hardware when the nCTS input toggles, if the CTSE bit is set. It is cleared by software, by writing 1 to the CTSCF bit in the USART_ICR register. An interrupt is generated if CTSIE = 1 in the USART_CR3 register. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 9 1 read-only B_0x0 No change occurred on the nCTS status line 0x0 B_0x1 A change occurred on the nCTS status line 0x1 CTS CTS flag This bit is set/reset by hardware. It is an inverted copy of the status of the nCTS input pin. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 10 1 read-only B_0x0 nCTS line set 0x0 B_0x1 nCTS line reset 0x1 RTOF Receiver timeout This bit is set by hardware when the timeout value, programmed in the RTOR register has lapsed, without any communication. It is cleared by software, writing 1 to the RTOCF bit in the USART_ICR register. An interrupt is generated if RTOIE = 1 in the USART_CR2 register. In Smartcard mode, the timeout corresponds to the CWT or BWT timings. Note: If a time equal to the value programmed in RTOR register separates 2 characters, RTOF is not set. If this time exceeds this value + 2 sample times (2/16 or 2/8, depending on the oversampling method), RTOF flag is set. The counter counts even if RE = 0 but RTOF is set only when RE = 1. If the timeout has already elapsed when RE is set, then RTOF is set. If the USART does not support the Receiver timeout feature, this bit is reserved and kept at reset value. 11 1 read-only B_0x0 Timeout value not reached 0x0 B_0x1 Timeout value reached without any data reception 0x1 EOBF End of block flag This bit is set by hardware when a complete block has been received (for example T = 1 Smartcard mode). The detection is done when the number of received bytes (from the start of the block, including the prologue) is equal or greater than BLEN + 4. An interrupt is generated if the EOBIE = 1 in the USART_CR2 register. It is cleared by software, writing 1 to the EOBCF in the USART_ICR register. Note: If Smartcard mode is not supported, this bit is reserved and kept at reset value. Refer to . 12 1 read-only B_0x0 End of Block not reached 0x0 B_0x1 End of Block (number of characters) reached 0x1 UDR SPI slave underrun error flag In slave transmission mode, this flag is set when the first clock pulse for data transmission appears while the software has not yet loaded any value into USART_TDR. This flag is reset by setting UDRCF bit in the USART_ICR register. Note: If the USART does not support the SPI slave mode, this bit is reserved and kept at reset value. Refer to . 13 1 read-only B_0x0 No underrun error 0x0 B_0x1 underrun error 0x1 ABRE Auto baud rate error This bit is set by hardware if the baud rate measurement failed (baud rate out of range or character comparison failed) It is cleared by software, by writing 1 to the ABRRQ bit in the USART_CR3 register. Note: If the USART does not support the auto baud rate feature, this bit is reserved and kept at reset value. 14 1 read-only ABRF Auto baud rate flag This bit is set by hardware when the automatic baud rate has been set (RXFNE is also set, generating an interrupt if RXFNEIE = 1) or when the auto baud rate operation was completed without success (ABRE = 1) (ABRE, RXFNE and FE are also set in this case) It is cleared by software, in order to request a new auto baud rate detection, by writing 1 to the ABRRQ in the USART_RQR register. Note: If the USART does not support the auto baud rate feature, this bit is reserved and kept at reset value. 15 1 read-only BUSY Busy flag This bit is set and reset by hardware. It is active when a communication is ongoing on the RX line (successful start bit detected). It is reset at the end of the reception (successful or not). 16 1 read-only B_0x0 USART is idle (no reception) 0x0 B_0x1 Reception on going 0x1 CMF Character match flag This bit is set by hardware, when a the character defined by ADD[7:0] is received. It is cleared by software, writing 1 to the CMCF in the USART_ICR register. An interrupt is generated if CMIE = 1in the USART_CR1 register. 17 1 read-only B_0x0 No Character match detected 0x0 B_0x1 Character Match detected 0x1 SBKF Send break flag This bit indicates that a send break character was requested. It is set by software, by writing 1 to the SBKRQ bit in the USART_CR3 register. It is automatically reset by hardware during the stop bit of break transmission. 18 1 read-only B_0x0 Break character transmitted 0x0 B_0x1 Break character requested by setting SBKRQ bit in USART_RQR register 0x1 RWU Receiver wakeup from Mute mode This bit indicates if the USART is in Mute mode. It is cleared/set by hardware when a wakeup/mute sequence is recognized. The Mute mode control sequence (address or IDLE) is selected by the WAKE bit in the USART_CR1 register. When wakeup on IDLE mode is selected, this bit can only be set by software, writing 1 to the MMRQ bit in the USART_RQR register. Note: If the USART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. Refer to . 19 1 read-only B_0x0 Receiver in active mode 0x0 B_0x1 Receiver in Mute mode 0x1 WUF Wakeup from low-power mode flag This bit is set by hardware, when a wakeup event is detected. The event is defined by the WUS bitfield. It is cleared by software, writing a 1 to the WUCF in the USART_ICR register. An interrupt is generated if WUFIE = 1 in the USART_CR3 register. Note: When UESM is cleared, WUF flag is also cleared. If the USART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. Refer to . 20 1 read-only TEACK Transmit enable acknowledge flag This bit is set/reset by hardware, when the Transmit Enable value is taken into account by the USART. It can be used when an idle frame request is generated by writing TE = 0, followed by TE = 1 in the USART_CR1 register, in order to respect the TE = 0 minimum period. 21 1 read-only REACK Receive enable acknowledge flag This bit is set/reset by hardware, when the Receive Enable value is taken into account by the USART. It can be used to verify that the USART is ready for reception before entering low-power mode. Note: If the USART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. Refer to . 22 1 read-only TXFE TXFIFO empty This bit is set by hardware when TXFIFO is empty. When the TXFIFO contains at least one data, this flag is cleared. The TXFE flag can also be set by writing 1 to the bit TXFRQ (bit 4) in the USART_RQR register. An interrupt is generated if the TXFEIE bit  = 1 (bit 30) in the USART_CR1 register. 23 1 read-only B_0x0 TXFIFO not empty. 0x0 B_0x1 TXFIFO empty. 0x1 RXFF RXFIFO full This bit is set by hardware when the number of received data corresponds to RXFIFO size + 1 (RXFIFO full + 1 data in the USART_RDR register. An interrupt is generated if the RXFFIE bit  = 1 in the USART_CR1 register. 24 1 read-only B_0x0 RXFIFO not full. 0x0 B_0x1 RXFIFO Full. 0x1 TCBGT Transmission complete before guard time flag This bit is set when the last data written in the USART_TDR has been transmitted correctly out of the shift register. It is set by hardware in Smartcard mode, if the transmission of a frame containing data is complete and if the smartcard did not send back any NACK. An interrupt is generated if TCBGTIE = 1 in the USART_CR3 register. This bit is cleared by software, by writing 1 to the TCBGTCF in the USART_ICR register or by a write to the USART_TDR register. Note: If the USART does not support the Smartcard mode, this bit is reserved and kept at reset value. If the USART supports the Smartcard mode and the Smartcard mode is enabled, the TCBGT reset value is '1’. Refer to on page 835. 25 1 read-only B_0x0 Transmission is not complete or transmission is complete unsuccessfully (i.e. a NACK is received from the card) 0x0 B_0x1 Transmission is complete successfully (before Guard time completion and there is no NACK from the smart card). 0x1 RXFT RXFIFO threshold flag This bit is set by hardware when the threshold programmed in RXFTCFG in USART_CR3 register is reached. This means that there are (RXFTCFG - 1) data in the Receive FIFO and one data in the USART_RDR register. An interrupt is generated if the RXFTIE bit  = 1 (bit 27) in the USART_CR3 register. Note: When the RXFTCFG threshold is configured to '101’, RXFT flag is set if 16 data are available i.e. 15 data in the RXFIFO and 1 data in the USART_RDR. Consequently, the 17th received data does not cause an overrun error. The overrun error occurs after receiving the 18th data. 26 1 read-only B_0x0 Receive FIFO does not reach the programmed threshold. 0x0 B_0x1 Receive FIFO reached the programmed threshold. 0x1 TXFT TXFIFO threshold flag This bit is set by hardware when the TXFIFO reaches the threshold programmed in TXFTCFG of USART_CR3 register i.e. the TXFIFO contains TXFTCFG empty locations. An interrupt is generated if the TXFTIE bit  = 1 (bit 31) in the USART_CR3 register. 27 1 read-only B_0x0 TXFIFO does not reach the programmed threshold. 0x0 B_0x1 TXFIFO reached the programmed threshold. 0x1 ISR_FIFO_DISABLED ISR_FIFO_DISABLED Interrupt & status register ISR_FIFO_ENABLED 0x1C 0x20 read-only 0x000000C0 PE Parity error This bit is set by hardware when a parity error occurs in receiver mode. It is cleared by software, writing 1 to the PECF in the USART_ICR register. An interrupt is generated if PEIE = 1 in the USART_CR1 register. 0 1 read-only B_0x0 No parity error 0x0 B_0x1 Parity error 0x1 FE Framing error This bit is set by hardware when a de-synchronization, excessive noise or a break character is detected. It is cleared by software, writing 1 to the FECF bit in the USART_ICR register. When transmitting data in Smartcard mode, this bit is set when the maximum number of transmit attempts is reached without success (the card NACKs the data frame). An interrupt is generated if EIE = 1 in the USART_CR1 register. 1 1 read-only B_0x0 No Framing error is detected 0x0 B_0x1 Framing error or break character is detected 0x1 NE Noise detection flag This bit is set by hardware when noise is detected on a received frame. It is cleared by software, writing 1 to the NECF bit in the USART_ICR register. Note: This bit does not generate an interrupt as it appears at the same time as the RXNE bit which itself generates an interrupt. An interrupt is generated when the NE flag is set during multi buffer communication if the EIE bit is set. When the line is noise-free, the NE flag can be disabled by programming the ONEBIT bit to 1 to increase the USART tolerance to deviations (Refer to Tolerance of the USART receiver to clock deviation on page 861). 2 1 read-only B_0x0 No noise is detected 0x0 B_0x1 Noise is detected 0x1 ORE Overrun error This bit is set by hardware when the data currently being received in the shift register is ready to be transferred into the USART_RDR register while RXNE = 1. It is cleared by a software, writing 1 to the ORECF, in the USART_ICR register. An interrupt is generated if RXNEIE = 1 or EIE  =  1 in the USART_CR1 register. Note: When this bit is set, the USART_RDR register content is not lost but the shift register is overwritten. An interrupt is generated if the ORE flag is set during multi buffer communication if the EIE bit is set. This bit is permanently forced to 0 (no overrun detection) when the bit OVRDIS is set in the USART_CR3 register. 3 1 read-only B_0x0 No overrun error 0x0 B_0x1 Overrun error is detected 0x1 IDLE Idle line detected This bit is set by hardware when an Idle Line is detected. An interrupt is generated if IDLEIE = 1 in the USART_CR1 register. It is cleared by software, writing 1 to the IDLECF in the USART_ICR register. Note: The IDLE bit is not set again until the RXNE bit has been set (i.e. a new idle line occurs). If Mute mode is enabled (MME = 1), IDLE is set if the USART is not mute (RWU = 0), whatever the Mute mode selected by the WAKE bit. If RWU = 1, IDLE is not set. 4 1 read-only B_0x0 No Idle line is detected 0x0 B_0x1 Idle line is detected 0x1 RXNE Read data register not empty RXNE bit is set by hardware when the content of the USART_RDR shift register has been transferred to the USART_RDR register. It is cleared by reading from the USART_RDR register. The RXNE flag can also be cleared by writing 1 to the RXFRQ in the USART_RQR register. An interrupt is generated if RXNEIE = 1 in the USART_CR1 register. 5 1 read-only B_0x0 Data is not received 0x0 B_0x1 Received data is ready to be read. 0x1 TC Transmission complete This bit indicates that the last data written in the USART_TDR has been transmitted out of the shift register. It is set by hardware when the transmission of a frame containing data is complete and when TXE is set. An interrupt is generated if TCIE = 1 in the USART_CR1 register. TC bit is is cleared by software, by writing 1 to the TCCF in the USART_ICR register or by a write to the USART_TDR register. Note: If TE bit is reset and no transmission is on going, the TC bit is set immediately. 6 1 read-only B_0x0 Transmission is not complete 0x0 B_0x1 Transmission is complete 0x1 TXE Transmit data register empty TXE is set by hardware when the content of the USART_TDR register has been transferred into the shift register. It is cleared by writing to the USART_TDR register. The TXE flag can also be set by writing 1 to the TXFRQ in the USART_RQR register, in order to discard the data (only in Smartcard T = 0 mode, in case of transmission failure). An interrupt is generated if the TXEIE bit  = 1 in the USART_CR1 register. 7 1 read-only B_0x0 Data register full 0x0 B_0x1 Data register not full 0x1 LBDF LIN break detection flag This bit is set by hardware when the LIN break is detected. It is cleared by software, by writing 1 to the LBDCF in the USART_ICR. An interrupt is generated if LBDIE = 1 in the USART_CR2 register. Note: If the USART does not support LIN mode, this bit is reserved and kept at reset value. Refer to . 8 1 read-only B_0x0 LIN Break not detected 0x0 B_0x1 LIN break detected 0x1 CTSIF CTS interrupt flag This bit is set by hardware when the nCTS input toggles, if the CTSE bit is set. It is cleared by software, by writing 1 to the CTSCF bit in the USART_ICR register. An interrupt is generated if CTSIE = 1 in the USART_CR3 register. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 9 1 read-only B_0x0 No change occurred on the nCTS status line 0x0 B_0x1 A change occurred on the nCTS status line 0x1 CTS CTS flag This bit is set/reset by hardware. It is an inverted copy of the status of the nCTS input pin. Note: If the hardware flow control feature is not supported, this bit is reserved and kept at reset value. 10 1 read-only B_0x0 nCTS line set 0x0 B_0x1 nCTS line reset 0x1 RTOF Receiver timeout This bit is set by hardware when the timeout value, programmed in the RTOR register has lapsed, without any communication. It is cleared by software, writing 1 to the RTOCF bit in the USART_ICR register. An interrupt is generated if RTOIE = 1 in the USART_CR2 register. In Smartcard mode, the timeout corresponds to the CWT or BWT timings. Note: If a time equal to the value programmed in RTOR register separates 2 characters, RTOF is not set. If this time exceeds this value + 2 sample times (2/16 or 2/8, depending on the oversampling method), RTOF flag is set. The counter counts even if RE = 0 but RTOF is set only when RE = 1. If the timeout has already elapsed when RE is set, then RTOF is set. If the USART does not support the Receiver timeout feature, this bit is reserved and kept at reset value. 11 1 read-only B_0x0 Timeout value not reached 0x0 B_0x1 Timeout value reached without any data reception 0x1 EOBF End of block flag This bit is set by hardware when a complete block has been received (for example T = 1 Smartcard mode). The detection is done when the number of received bytes (from the start of the block, including the prologue) is equal or greater than BLEN + 4. An interrupt is generated if the EOBIE = 1 in the USART_CR2 register. It is cleared by software, writing 1 to the EOBCF in the USART_ICR register. Note: If Smartcard mode is not supported, this bit is reserved and kept at reset value. Refer to . 12 1 read-only B_0x0 End of Block not reached 0x0 B_0x1 End of Block (number of characters) reached 0x1 UDR SPI slave underrun error flag In slave transmission mode, this flag is set when the first clock pulse for data transmission appears while the software has not yet loaded any value into USART_TDR. This flag is reset by setting UDRCF bit in the USART_ICR register. Note: If the USART does not support the SPI slave mode, this bit is reserved and kept at reset value. Refer to . 13 1 read-only B_0x0 No underrun error 0x0 B_0x1 underrun error 0x1 ABRE Auto baud rate error This bit is set by hardware if the baud rate measurement failed (baud rate out of range or character comparison failed) It is cleared by software, by writing 1 to the ABRRQ bit in the USART_CR3 register. Note: If the USART does not support the auto baud rate feature, this bit is reserved and kept at reset value. 14 1 read-only ABRF Auto baud rate flag This bit is set by hardware when the automatic baud rate has been set (RXNE is also set, generating an interrupt if RXNEIE = 1) or when the auto baud rate operation was completed without success (ABRE = 1) (ABRE, RXNE and FE are also set in this case) It is cleared by software, in order to request a new auto baud rate detection, by writing 1 to the ABRRQ in the USART_RQR register. Note: If the USART does not support the auto baud rate feature, this bit is reserved and kept at reset value. 15 1 read-only BUSY Busy flag This bit is set and reset by hardware. It is active when a communication is ongoing on the RX line (successful start bit detected). It is reset at the end of the reception (successful or not). 16 1 read-only B_0x0 USART is idle (no reception) 0x0 B_0x1 Reception on going 0x1 CMF Character match flag This bit is set by hardware, when a the character defined by ADD[7:0] is received. It is cleared by software, writing 1 to the CMCF in the USART_ICR register. An interrupt is generated if CMIE = 1in the USART_CR1 register. 17 1 read-only B_0x0 No Character match detected 0x0 B_0x1 Character Match detected 0x1 SBKF Send break flag This bit indicates that a send break character was requested. It is set by software, by writing 1 to the SBKRQ bit in the USART_CR3 register. It is automatically reset by hardware during the stop bit of break transmission. 18 1 read-only B_0x0 Break character transmitted 0x0 B_0x1 Break character requested by setting SBKRQ bit in USART_RQR register 0x1 RWU Receiver wakeup from Mute mode This bit indicates if the USART is in Mute mode. It is cleared/set by hardware when a wakeup/mute sequence is recognized. The Mute mode control sequence (address or IDLE) is selected by the WAKE bit in the USART_CR1 register. When wakeup on IDLE mode is selected, this bit can only be set by software, writing 1 to the MMRQ bit in the USART_RQR register. Note: If the USART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. Refer to . 19 1 read-only B_0x0 Receiver in active mode 0x0 B_0x1 Receiver in Mute mode 0x1 WUF Wakeup from low-power mode flag This bit is set by hardware, when a wakeup event is detected. The event is defined by the WUS bitfield. It is cleared by software, writing a 1 to the WUCF in the USART_ICR register. An interrupt is generated if WUFIE = 1 in the USART_CR3 register. Note: When UESM is cleared, WUF flag is also cleared. If the USART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. Refer to . 20 1 read-only TEACK Transmit enable acknowledge flag This bit is set/reset by hardware, when the Transmit Enable value is taken into account by the USART. It can be used when an idle frame request is generated by writing TE = 0, followed by TE = 1 in the USART_CR1 register, in order to respect the TE = 0 minimum period. 21 1 read-only REACK Receive enable acknowledge flag This bit is set/reset by hardware, when the Receive Enable value is taken into account by the USART. It can be used to verify that the USART is ready for reception before entering low-power mode. Note: If the USART does not support the wakeup from Stop feature, this bit is reserved and kept at reset value. Refer to . 22 1 read-only TCBGT Transmission complete before guard time flag This bit is set when the last data written in the USART_TDR has been transmitted correctly out of the shift register. It is set by hardware in Smartcard mode, if the transmission of a frame containing data is complete and if the smartcard did not send back any NACK. An interrupt is generated if TCBGTIE = 1 in the USART_CR3 register. This bit is cleared by software, by writing 1 to the TCBGTCF in the USART_ICR register or by a write to the USART_TDR register. Note: If the USART does not support the Smartcard mode, this bit is reserved and kept at reset value. If the USART supports the Smartcard mode and the Smartcard mode is enabled, the TCBGT reset value is '1’. Refer to on page 835. 25 1 read-only B_0x0 Transmission is not complete or transmission is complete unsuccessfully (i.e. a NACK is received from the card) 0x0 B_0x1 Transmission is complete successfully (before Guard time completion and there is no NACK from the smart card). 0x1 ICR ICR Interrupt flag clear register 0x20 0x20 write-only 0x0000 PECF Parity error clear flag Writing 1 to this bit clears the PE flag in the USART_ISR register. 0 1 write-only FECF Framing error clear flag Writing 1 to this bit clears the FE flag in the USART_ISR register. 1 1 write-only NECF Noise detected clear flag Writing 1 to this bit clears the NE flag in the USART_ISR register. 2 1 write-only ORECF Overrun error clear flag Writing 1 to this bit clears the ORE flag in the USART_ISR register. 3 1 write-only IDLECF Idle line detected clear flag Writing 1 to this bit clears the IDLE flag in the USART_ISR register. 4 1 write-only TXFECF TXFIFO empty clear flag Writing 1 to this bit clears the TXFE flag in the USART_ISR register. 5 1 write-only TCCF Transmission complete clear flag Writing 1 to this bit clears the TC flag in the USART_ISR register. 6 1 write-only TCBGTCF Transmission complete before Guard time clear flag Writing 1 to this bit clears the TCBGT flag in the USART_ISR register. 7 1 write-only LBDCF LIN break detection clear flag Writing 1 to this bit clears the LBDF flag in the USART_ISR register. Note: If LIN mode is not supported, this bit is reserved and must be kept at reset value. Refer to . 8 1 write-only CTSCF CTS clear flag Writing 1 to this bit clears the CTSIF flag in the USART_ISR register. Note: If the hardware flow control feature is not supported, this bit is reserved and must be kept at reset value. Refer to . 9 1 write-only RTOCF Receiver timeout clear flag Writing 1 to this bit clears the RTOF flag in the USART_ISR register. Note: If the USART does not support the Receiver timeout feature, this bit is reserved and must be kept at reset value. Refer to page 835. 11 1 write-only EOBCF End of block clear flag Writing 1 to this bit clears the EOBF flag in the USART_ISR register. Note: If the USART does not support Smartcard mode, this bit is reserved and must be kept at reset value. Refer to . 12 1 write-only UDRCF SPI slave underrun clear flag Writing 1 to this bit clears the UDRF flag in the USART_ISR register. Note: If the USART does not support SPI slave mode, this bit is reserved and must be kept at reset value. Refer to 13 1 write-only CMCF Character match clear flag Writing 1 to this bit clears the CMF flag in the USART_ISR register. 17 1 write-only WUCF Wakeup from low-power mode clear flag Writing 1 to this bit clears the WUF flag in the USART_ISR register. Note: If the USART does not support the wakeup from Stop feature, this bit is reserved and must be kept at reset value. Refer to page 835. 20 1 write-only RDR RDR Receive data register 0x24 0x20 read-only 0x0000 RDR Receive data value 0 9 TDR TDR Transmit data register 0x28 0x20 read-write 0x0000 TDR Transmit data value 0 9 PRESC PRESC Prescaler register 0x2C 0x20 read-write 0x0000 PRESCALER Clock prescaler The USART input clock can be divided by a prescaler factor: Remaining combinations: Reserved Note: When PRESCALER is programmed with a value different of the allowed ones, programmed prescaler value is 1011 i.e. input clock divided by 256. 0 4 read-write B_0x0 input clock not divided 0x0 B_0x1 input clock divided by 2 0x1 B_0x2 input clock divided by 4 0x2 B_0x3 input clock divided by 6 0x3 B_0x4 input clock divided by 8 0x4 B_0x5 input clock divided by 10 0x5 B_0x6 input clock divided by 12 0x6 B_0x7 input clock divided by 16 0x7 B_0x8 input clock divided by 32 0x8 B_0x9 input clock divided by 64 0x9 B_0xA input clock divided by 128 0xA B_0xB input clock divided by 256 0xB USART2 0x40004400 USART2_LPUART2 USART2 and LPUART2 global interrupt (combined with EXTI 26) 28 USART3 0x40004800 USART3_USART4_USART5_USART6_LPUART1 USART3,4,5,6 and LPUART1 global interrupt (combined with EXTI 28) 29 USART4 0x40004C00 USART5 0x40005000 USART6 0x40013C00 USB Universal serial bus full-speed host/device interface USB 0x40005C00 0x0 0x400 registers USB_CHEP0R USB_CHEP0R USB endpoint/channel 0 register 0x0 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CHEP1R USB_CHEP1R USB endpoint/channel 1 register 0x4 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CHEP2R USB_CHEP2R USB endpoint/channel 2 register 0x8 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CHEP3R USB_CHEP3R USB endpoint/channel 3 register 0xc 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CHEP4R USB_CHEP4R USB endpoint/channel 4 register 0x10 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CHEP5R USB_CHEP5R USB endpoint/channel 5 register 0x14 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CHEP6R USB_CHEP6R USB endpoint/channel 6 register 0x18 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CHEP7R USB_CHEP7R USB endpoint/channel 7 register 0x1c 0x20 0x00000000 0xFFFFFFFF EA endpoint/channel address Device mode Software must write in this field the 4-bit address used to identify the transactions directed to this endpoint. A value must be written before enabling the corresponding endpoint. Host mode Software must write in this field the 4-bit address used to identify the channel addressed by the host transaction. 0 4 read-write STATTX Status bits, for transmission transfers Device mode These bits contain the information about the endpoint status, listed in . These bits can be toggled by the software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STTX bits to NAK, when a correct transfer has occurred (VTTX=1) corresponding to a IN or SETUP (control only) transaction addressed to this channel/endpoint. It then waits for the software to prepare the next set of data to be transmitted. Double-buffered bulk endpoints implement a special transaction flow control, which controls the status based on buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can only be “VALID” or “DISABLED”. Therefore, the hardware cannot change the status of the channel/endpoint/channel after a successful transaction. If the software sets the STTX bits to 'STALL’ or 'NAK’ for an Isochronous channel/endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode Same as STRX behaviour but for IN transactions (TBC) 4 2 write-only DTOGTX Data Toggle, for transmission transfers If the endpoint/channel is non-isochronous, this bit contains the required value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be transmitted. Hardware toggles this bit when the ACK handshake is received from the USB host, following a data packet transmission. If the endpoint/channel is defined as a control one, hardware sets this bit to 1 at the reception of a SETUP PID addressed to this endpoint. If the endpoint/channel is using the double buffer feature, this bit is used to support packet buffer swapping too (Refer to ) If the endpoint/channel is Isochronous, this bit is used to support packet buffer swapping since no data toggling is used for this sort of endpoints and only DATA0 packet are transmitted (Refer to ). Hardware toggles this bit just after the end of data packet transmission, since no handshake is used for Isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint/channel is not a control one) or to force a specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGTX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can only be toggled by writing 1. 6 1 write-only VTTX Valid USB transaction transmitted Device mode This bit is set by the hardware when an IN transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in the USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written. Host mode Same of VTRX behaviour but for USB OUT and SETUP transactions. 7 1 read-write EPKIND endpoint/channel kind The meaning of this bit depends on the endpoint/channel type configured by the EP_TYPE bits. summarizes the different meanings. DBL_BUF: This bit is set by the software to enable the double-buffering feature for this bulk endpoint. The usage of double-buffered bulk endpoints is explained in Double-buffered endpoints. STATUS_OUT: This bit is set by the software to indicate that a status out transaction is expected: in this case all OUT transactions containing more than zero data bytes are answered 'STALL’ instead of 'ACK’. This bit may be used to improve the robustness of the application to protocol errors during control transfers and its usage is intended for control endpoints only. When STATUS_OUT is reset, OUT transactions can have any number of bytes, as required. 8 1 read-write UTYPE USB type of transaction These bits configure the behavior of this endpoint/channel as described in endpoint/channel type encoding on page 2001. Channel0/Endpoint0 must always be a control endpoint/channel and each USB function must have at least one control endpoint/channel which has address 0, but there may be other control channels/endpoints if required. Only control channels/endpoints handle SETUP transactions, which are ignored by endpoints of other kinds. SETUP transactions cannot be answered with NAK or STALL. If a control endpoint/channel is defined as NAK, the USB peripheral will not answer, simulating a receive error, in the receive direction when a SETUP transaction is received. If the control endpoint/channel is defined as STALL in the receive direction, then the SETUP packet will be accepted anyway, transferring data and issuing the CTR interrupt. The reception of OUT transactions is handled in the normal way, even if the endpoint/channel is a control one. Bulk and interrupt endpoints have very similar behavior and they differ only in the special feature available using the EPKIND configuration bit. The usage of Isochronous channels/endpoints is explained in transfers 9 2 read-write SETUP Setup transaction completed Device mode This bit is read-only and it is set by the hardware when the last completed transaction is a SETUP. This bit changes its value only for control endpoints. It must be examined, in the case of a successful receive transaction (VTRX event), to determine the type of transaction occurred. To protect the interrupt service routine from the changes in SETUP bits due to next incoming tokens, this bit is kept frozen while VTRX bit is at 1; its state changes when VTRX is at 0. This bit is read-only. Host mode This bit is set by the software to send a SETUP transaction on a control endpoint. This bit changes its value only for control endpoints. It is cleared by hardware when the SETUP transaction is acknowledged and VTTX interrupt generated. 11 1 read-only STATRX Status bits, for reception transfers Device mode These bits contain information about the endpoint status, which are listed in Reception status encoding on page 2000.These bits can be toggled by software to initialize their value. When the application software writes '0, the value remains unchanged, while writing '1 makes the bit value toggle. Hardware sets the STRX bits to NAK when a correct transfer has occurred (VTRX=1) corresponding to a OUT or SETUP (control only) transaction addressed to this endpoint, so the software has the time to elaborate the received data before it acknowledge a new transaction Double-buffered bulk endpoints implement a special transaction flow control, which control the status based upon buffer availability condition (Refer to endpoints). If the endpoint is defined as Isochronous, its status can be only “VALID” or “DISABLED”, so that the hardware cannot change the status of the endpoint after a successful transaction. If the software sets the STRX bits to 'STALL’ or 'NAK’ for an Isochronous endpoint, the USB peripheral behavior is not defined. These bits are read/write but they can be only toggled by writing '1. Host mode These bits are the host application controls to start, retry, or abort host transactions driven by the channel. These bits also contain information about the device answer to the last IN channel transaction and report the current status of the channel according to the following STRX table of states: - DISABLE DISABLE value is reported in case of ACK acknowledge is received on a single-buffer channel. When in DISABLE state the channel is unused or not active waiting for application to restart it by writing VALID. Application can reset a VALID channel to DISABLE to abort a transaction. In this case the transaction is immediately removed from the Host execution list. If the aborted transaction was already under execution it will be regularly terminated on the USB but the relative VTRX interrupt is not generated. - VALID An Host channel is actively trying to submit USB transaction to device only when in VALID state.VALID state can be set by software or automatically by hardware on a NAKED channel at the start of a new frame. When set to VALID, an host channel enters the host execution queue and waits permission from the Host Frame Schedure to submit its configured transaction. VALID value is also reported in case of ACK acknowledge is received on a double-buffered channel. In this case the channel remains active on the alternate buffer while application needs to read the current buffer and toggle DTOGTX. In case software is late in reading and the alternate buffer is not ready, the host channel is automatically suspended transparently to the application. The suspended double buffered channel will be re-activated as soon as delay is recovered and DTOGTX is toggled. - NAK NAK value is reported in case of NAK acknowledge received. When in NAK state the channel is suspended and does not try to transmit. NAK state is moved to VALID by hardware at the start of the next frame, or software can change it to immediately retry transmission by writing it to VALID, or can disable it and abort the transaction by writing DISABLE - STALL STALL value is reported in case of STALL acknowledge received. When in STALL state the channel behaves as disabled. Application should not retry transmission but reset the USB and re-enumerate. 12 2 write-only DTOGRX Data Toggle, for reception transfers If the endpoint/channel is not Isochronous, this bit contains the expected value of the data toggle bit (0=DATA0, 1=DATA1) for the next data packet to be received. Hardware toggles this bit, when the ACK handshake is sent following a data packet reception having a matching data PID value; if the endpoint is defined as a control one, hardware clears this bit at the reception of a SETUP PID received from host (in device) or acknowledged by device (in host). If the endpoint/channel is using the double-buffering feature this bit is used to support packet buffer swapping too (Refer to ). If the endpoint/channel is Isochronous, this bit is used only to support packet buffer swapping for data transmission since no data toggling is used for this kind of channels/endpoints and only DATA0 packet are transmitted (Refer to Isochronous transfers). Hardware toggles this bit just after the end of data packet reception, since no handshake is used for isochronous transfers. This bit can also be toggled by the software to initialize its value (mandatory when the endpoint is not a control one) or to force specific data toggle/packet buffer usage. When the application software writes '0, the value of DTOGRX remains unchanged, while writing '1 makes the bit value toggle. This bit is read/write but it can be only toggled by writing 1. 14 1 write-only VTRX USB valid transaction received Device mode This bit is set by the hardware when an OUT/SETUP transaction is successfully completed on this endpoint; the software can only clear this bit. If the CTRM bit in USB_CNTR register is set accordingly, a generic interrupt condition is generated together with the endpoint related interrupt condition, which is always activated. The type of occurred transaction, OUT or SETUP, can be determined from the SETUP bit described below. A transaction ended with a NAK or STALL handshake does not set this bit, since no data is actually transferred, as in the case of protocol errors or data toggle mismatches. This bit is read/write but only '0 can be written, writing 1 has no effect. Host mode This bit is set by the hardware when an IN transaction is successfully completed on this channel. The software can only clear this bit. If the VTRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. - A transaction ended with a NAK sets this bit and NAK answer is reported to application reading the NAK state from the STRX field of this register. One naked transaction keeps pending and is automatically retried by the Host at the next frame, or the Host can immediately retry by resetting STRX state to VALID. - A transaction ended by STALL handshake sets this bit and the STALL answer is reported to application reading the STALL state from the STRX field of this register. Host application should consequently disable the channel and re-enumerate. - A transaction ended with ACK handshake sets this bit If double buffering is disabled, ACK answer is reported by application reading the DISABLE state from the STRX field of this register. Host application should read received data from USBRAM and re-arm the channel by writing VALID to the STRX field of this register. If double buffering is enabled, ACK answer is reported by application reading VALID state from the STRX field of this register. Host application should read received data from USBRAM and toggle the DTOGTX bit of this register. This bit is read/write but only '0 can be written, writing 1 has no effect. 15 1 read-write DEVADDR Host mode Device address assigned to the endpoint during the enumeration process. 16 7 read-write NAK Host mode This bit is set by the hardware when a device responds with a NAK. Software can be use this bit to monitoring the number of NAKs received from a device. 23 1 read-write LS_EP Low speed endpoint – Host with HUB only Host mode This bit is set by the software to send an LS transaction to the corresponding endpoint. 24 1 read-write B_0x0 Full speed endpoint 0x0 B_0x1 Low speed endpoint 0x1 ERR_TX Transmit error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an OUT or SETUP transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 25 1 read-write ERR_RX Receive error Host mode This bit is set by the hardware when an error (e.g. no answer by the device, CRC error, bit stuffing error, framing format violation, etc.) has occurred during an IN transaction on this channel. The software can only clear this bit. If the ERRM bit in USB_CNTR register is set a generic interrupt condition is generated together with the channel related flag, which is always activated. 26 1 read-write USB_CNTR USB_CNTR USB control register 0x40 0x20 0x00000003 0xFFFFFFFF USBRST USB Reset Device mode Software can set this bit to reset the USB core, exactly as it happens when receiving a RESET signaling on the USB.The USB peripheral, in response to a RESET, resets its internal protocol state machine. Reception and transmission are disabled until the RESET bit is cleared. All configuration registers do not reset: the microcontroller must explicitly clear these registers (this is to ensure that the RESET interrupt can be safely delivered, and any transaction immediately followed by a RESET can be completed). The function address and endpoint registers are reset by an USB reset event. Host mode Software sets this bit to drive USB reset state on the bus and initialize the device. USB reset terminates as soon as this bit is cleared by software. 0 1 read-write B_0x0 No effect 0x0 B_0x1 USB core is under reset 0x1 B_0x0 No effect 0x0 B_0x1 USB reset driven 0x1 PDWN Power down This bit is used to completely switch off all USB-related analog parts if it is required to completely disable the USB peripheral for any reason. When this bit is set, the USB peripheral is disconnected from the transceivers and it cannot be used. 1 1 read-write B_0x0 Exit Power Down. 0x0 B_0x1 Enter Power down mode. 0x1 SUSPRDY Suspend state effective This bit is set by hardware as soon as the suspend state entered through the SUSPEN control gets internally effective. In this state USB activity is suspended, USB clock is gated, transceiver is set in low power mode by disabling the differential receiver. Only asynchronous wakeup logic and single ended receiver is kept alive to detect remote wakeup or resume events. Software must poll this bit to confirm it to be set before any STOP mode entry. This bit is cleared by hardware simultaneously to the WAKEUP flag being set. 2 1 read-only B_0x0 Normal operation 0x0 B_0x1 Suspend state 0x1 SUSPEN Suspend state enable Device mode Software can set this bit when the SUSP interrupt is received, which is issued when no traffic is received by the USB peripheral for 3 ms. Software can also set this bit when the L1REQ interrupt is received with positive acknowledge sent. As soon as the suspend state is propagated internally all device activity is stopped, USB clock is gated, USB transceiver is set into low power mode and the SUSPRDY bit is set by hardware. In the case that device application wants to purse more aggressive power saving by stopping the USB clock source and by moving the microcontroller to stop mode, as in the case of bus powered device application, it must first wait few cycles to see the SUSPRDY=1 acknowledge the suspend request. This bit is cleared by hardware simultaneous with the WAKEUP flag set. Host mode Software can set this bit when Host application has nothing scheduled for the next frames and wants to enter long term power saving. When set, it stops immediately SOF generation and any other host activity, gates the USB clock and sets the transceiver in low power mode. If any USB transaction is on-going at the time SUSPEN is set, suspend is entered at the end of the current transaction. As soon as suspend state is propagated internally and gets effective the SUSPRDY bit is set. In the case that host application wants to purse more aggressive power saving by stopping the USB clock source and by moving the micro-controller to STOP mode, it must first wait few cycles to see SUSPRDY=1 acknowledge to the suspend request. This bit is cleared by hardware simultaneous with the WAKEUP flag set. 3 1 read-write B_0x0 No effect. 0x0 B_0x1 Enter L1/L2 suspend 0x1 B_0x0 No effect. 0x0 B_0x1 Enter L1/L2 suspend 0x1 L2RESUME L2 Remote Wakeup / Resume driver Device mode The microcontroller can set this bit to send remote wake-up signaling to the Host. It must be activated, according to USB specifications, for no less than 1ms and no more than 15ms after which the Host PC is ready to drive the resume sequence up to its end. Host mode Software sets this bit to send resume signaling to the device. Software clears this bit to send end of resume to device and restart SOF generation. In the context of remote wake up, this bit is to be set following the WAKEUP interrupt. 4 1 read-write B_0x0 No effect 0x0 B_0x1 Send L2 resume signaling to device 0x1 L1RESUME L1 Remote Wakeup / Resume driver Device mode Software sets this bit to send a LPM L1 50us remote wakeup signaling to the host. After the signaling ends, this bit is cleared by hardware. Host mode Software sets this bit to send L1 resume signaling to device. Resume duration and next SOF generation is automatically driven to set the restart of USB activity timely aligned with the programmed BESL value. In the context of remote wake up, this bit is to be set following the WAKEUP interrupt. This bit is cleared by hardware at the end of resume. 5 1 read-write B_0x0 No effect 0x0 B_0x1 Send 50us remote-wakeup signaling to host 0x1 B_0x0 No effect 0x0 B_0x1 Send L1 resume signaling to device 0x1 L1REQM LPM L1 state request interrupt mask 7 1 read-write B_0x0 LPM L1 state request (L1REQ) Interrupt disabled. 0x0 B_0x1 L1REQ Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 ESOFM Expected start of frame interrupt mask 8 1 read-write B_0x0 Expected Start of Frame (ESOF) Interrupt disabled. 0x0 B_0x1 ESOF Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 SOFM Start of frame interrupt mask 9 1 read-write B_0x0 SOF Interrupt disabled. 0x0 B_0x1 SOF Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 RESETM USB reset interrupt mask 10 1 read-write B_0x0 RESET Interrupt disabled. 0x0 B_0x1 RESET Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 SUSPM Suspend mode interrupt mask 11 1 read-write B_0x0 Suspend Mode Request (SUSP) Interrupt disabled. 0x0 B_0x1 SUSP Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 WKUPM Wakeup interrupt mask 12 1 read-write B_0x0 WKUP Interrupt disabled. 0x0 B_0x1 WKUP Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 ERRM Error interrupt mask 13 1 read-write B_0x0 ERR Interrupt disabled. 0x0 B_0x1 ERR Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 PMAOVRM Packet memory area over / underrun interrupt mask 14 1 read-write B_0x0 PMAOVR Interrupt disabled. 0x0 B_0x1 PMAOVR Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 CTRM Correct transfer interrupt mask 15 1 read-write B_0x0 Correct Transfer (CTR) Interrupt disabled. 0x0 B_0x1 CTR Interrupt enabled, an interrupt request is generated when the corresponding bit in the USB_ISTR register is set. 0x1 THR512M 512 byte threshold interrupt mask 16 1 read-write B_0x0 512 byte threshold interrupt disabled 0x0 B_0x1 512 byte threshold interrupt enabled 0x1 HOST HOST mode HOST bit selects betweens Host or Device USB mode of operation. It must be set before enabling the USB peripheral by the function enable bit. 31 1 read-write B_0x0 USB Device function 0x0 B_0x1 USB Host function 0x1 USB_ISTR USB_ISTR USB interrupt status register 0x44 0x20 0x00000000 0xFFFFFFFF IDN Device Endpoint / Host channel identification number These bits are written by the hardware according to the host channel or device endpoint number, which generated the interrupt request. If several endpoint/channel transactions are pending, the hardware writes the identification number related to the endpoint/channel having the highest priority defined in the following way: Two levels are defined, in order of priority: Isochronous and double-buffered bulk channels/endpoints are considered first and then the others are examined. If more than one endpoint/channel from the same set is requesting an interrupt, the IDN bits in USB_ISTR register are assigned according to the lowest requesting register, CHEP0R having the highest priority followed by CHEP1R and so on. The application software can assign a register to each endpoint/channel according to this priority scheme, so as to order the concurring endpoint/channel requests in a suitable way. These bits are read only. 0 4 read-only DIR Direction of transaction This bit is written by the hardware according to the direction of the successful transaction, which generated the interrupt request. If DIR bit=0, VTTX bit is set in the USB_EPnR register related to the interrupting endpoint. The interrupting transaction is of IN type (data transmitted by the USB peripheral to the host PC). If DIR bit=1, VTRX bit or both VTTX/VTRX are set in the USB_EPnR register related to the interrupting endpoint. The interrupting transaction is of OUT type (data received by the USB peripheral from the host PC) or two pending transactions are waiting to be processed. This information can be used by the application software to access the USB_EPnR bits related to the triggering transaction since it represents the direction having the interrupt pending. This bit is read-only. 4 1 read-only L1REQ LPM L1 state request This bit is set by the hardware when LPM command to enter the L1 state is successfully received and acknowledged. This bit is read/write but only '0 can be written and writing '1 has no effect. 7 1 read-write ESOF Expected start of frame This bit is set by the hardware when an SOF packet is expected but not received. The host sends an SOF packet each 1 ms, but if the device does not receive it properly, the Suspend Timer issues this interrupt. If three consecutive ESOF interrupts are generated (i.e. three SOF packets are lost) without any traffic occurring in between, a SUSP interrupt is generated. This bit is set even when the missing SOF packets occur while the Suspend Timer is not yet locked. This bit is read/write but only '0 can be written and writing '1 has no effect. 8 1 read-write SOF Start of frame This bit signals the beginning of a new USB frame and it is set when a SOF packet arrives through the USB bus. The interrupt service routine may monitor the SOF events to have a 1 ms synchronization event to the USB host and to safely read the USB_FNR register which is updated at the SOF packet reception (this could be useful for isochronous applications). This bit is read/write but only '0 can be written and writing '1 has no effect. 9 1 read-write RST_DCON USB reset request Device mode This bit is set by hardware when an USB reset is released by the host and the bus returns to idle. USB reset state is internally detected after the sampling of 60 consecutive SE0 cycles. Host mode This bit is set by hardware when device connection or device disconnection is detected. Device connection is signaled after J state is sampled for 22cycles consecutively from unconnected state. Device disconnection is signaled after SE0 state is sampled for 22cycles consecutively from connected state. 10 1 read-write SUSP Suspend mode request This bit is set by the hardware when no traffic has been received for 3 ms, indicating a suspend mode request from the USB bus. The suspend condition check is enabled immediately after any USB reset and it is disabled by the hardware when the suspend mode is active (SUSPEN=1) until the end of resume sequence. This bit is read/write but only '0 can be written and writing '1 has no effect. 11 1 read-write WKUP Wakeup This bit is set to 1 by the hardware when, during suspend mode, activity is detected that wakes up the USB peripheral. This event asynchronously clears the LP_MODE bit in the CTLR register and activates the USB_WAKEUP line, which can be used to notify the rest of the device (e.g. wakeup unit) about the start of the resume process. This bit is read/write but only '0 can be written and writing '1 has no effect. 12 1 read-write ERR Error This flag is set whenever one of the errors listed below has occurred: NANS: No ANSwer. The timeout for a host response has expired. CRC: Cyclic Redundancy Check error. One of the received CRCs, either in the token or in the data, was wrong. BST: Bit Stuffing error. A bit stuffing error was detected anywhere in the PID, data, and/or CRC. FVIO: Framing format Violation. A non-standard frame was received (EOP not in the right place, wrong token sequence, etc.). The USB software can usually ignore errors, since the USB peripheral and the PC host manage retransmission in case of errors in a fully transparent way. This interrupt can be useful during the software development phase, or to monitor the quality of transmission over the USB bus, to flag possible problems to the user (e.g. loose connector, too noisy environment, broken conductor in the USB cable and so on). This bit is read/write but only '0 can be written and writing '1 has no effect. 13 1 read-write PMAOVR Packet memory area over / underrun This bit is set if the microcontroller has not been able to respond in time to an USB memory request. The USB peripheral handles this event in the following way: During reception an ACK handshake packet is not sent, during transmission a bit-stuff error is forced on the transmitted stream; in both cases the host will retry the transaction. The PMAOVR interrupt should never occur during normal operations. Since the failed transaction is retried by the host, the application software has the chance to speed-up device operations during this interrupt handling, to be ready for the next transaction retry; however this does not happen during Isochronous transfers (no isochronous transaction is anyway retried) leading to a loss of data in this case. This bit is read/write but only '0 can be written and writing '1 has no effect. 14 1 read-write CTR Correct transfer This bit is set by the hardware to indicate that an endpoint/channel has successfully completed a transaction; using DIR and EP_ID bits software can determine which endpoint/channel requested the interrupt. This bit is read-only. 15 1 read-only THR512 512 byte threshold interrupt This bit is set to 1 by the hardware when 512 bytes have been transmitted or received during isochronous transfers. This bit is read/write but only 0 can be written and writing 1 has no effect. Note that no information is available to indicate the associated channel/endpoint, however in practice only one ISO endpoint/channel with such large packets can be supported, so that channel. 16 1 read-write DCON_STAT Device connection status Host mode: This bit contains information about device connection status. It is set by hardware when a LS/FS device is attached to the host while it is reset when the device is disconnected. 29 1 read-only B_0x0 No device connected 0x0 B_0x1 FS or LS device connected to the host 0x1 LS_DCON Low Speed device connected Host mode: This bit is set by hardware when an LS device connection is detected. Device connection is signaled after LS J-state is sampled for 22 consecutive cycles of the USB clock (48 MHz) from the unconnected state. 30 1 read-only USB_FNR USB_FNR USB frame number register 0x48 0x20 0x00000000 0xFFFFF000 FN Frame number This bit field contains the 11-bits frame number contained in the last received SOF packet. The frame number is incremented for every frame sent by the host and it is useful for Isochronous transfers. This bit field is updated on the generation of an SOF interrupt. 0 11 read-only LSOF Lost SOF Device mode These bits are written by the hardware when an ESOF interrupt is generated, counting the number of consecutive SOF packets lost. At the reception of an SOF packet, these bits are cleared. 11 2 read-only LCK Locked Device mode This bit is set by the hardware when at least two consecutive SOF packets have been received after the end of an USB reset condition or after the end of an USB resume sequence. Once locked, the frame timer remains in this state until an USB reset or USB suspend event occurs. 13 1 read-only RXDM Receive data - line status This bit can be used to observe the status of received data minus upstream port data line. It can be used during end-of-suspend routines to help determining the wakeup event. 14 1 read-only RXDP Receive data + line status This bit can be used to observe the status of received data plus upstream port data line. It can be used during end-of-suspend routines to help determining the wakeup event. 15 1 read-only USB_DADDR USB_DADDR USB device address 0x4c 0x20 0x00000000 0xFFFFFFFF ADD Device address Device mode These bits contain the USB function address assigned by the host PC during the enumeration process. Both this field and the endpoint/channel Address (EA) field in the associated USB_EPnR register must match with the information contained in a USB token in order to handle a transaction to the required endpoint. Host mode These bits contain the address transmitted with the LPM transaction 0 7 read-write EF Enable function This bit is set by the software to enable the USB device. The address of this device is contained in the following ADD[6:0] bits. If this bit is at '0 no transactions are handled, irrespective of the settings of USB_EPnR registers. 7 1 read-write USB_LPMCSR USB_LPMCSR LPM control and status register 0x54 0x20 0x00000000 0xFFFFFFFF LPMEN LPM support enable Device mode This bit is set by the software to enable the LPM support within the USB device. If this bit is at '0 no LPM transactions are handled. Host mode Software sets this bit to transmit an LPM transaction to device. This bit is cleared by hardware, simultaneous with L1REQ flag set, when device answer is received 0 1 read-write LPMACK LPM Token acknowledge enable The NYET/ACK will be returned only on a successful LPM transaction: No errors in both the EXT token and the LPM token (else ERROR) A valid bLinkState = 0001B (L1) is received (else STALL) This bit contains the device answer to the LPM transaction. It mast be evaluated following the L1REQ interrupt. 1 1 read-write DEVICE_MODE0x0 the valid LPM Token will be NYET. 0x0 DEVICE_MODE0x1 the valid LPM Token will be ACK. 0x1 HOST_MODE0x0 NYET answer 0x0 HOST_MODE0x1 ACK answer 0x1 REMWAKE bRemoteWake value Device mode This bit contains the bRemoteWake value received with last ACKed LPM Token Host mode This bit contains the bRemoteWake value transmitted with the LPM transaction 3 1 read-only BESL BESL value Device mode These bits contain the BESL value received with last ACKed LPM Token Host mode These bits contain the BESL value transmitted with the LPM transaction 4 4 read-only USB_BCDR USB_BCDR Battery charging detector 0x58 0x20 0x00000000 0xFFFFFFFF BCDEN Battery charging detector (BCD) enable Device mode This bit is set by the software to enable the BCD support within the USB device. When enabled, the USB PHY is fully controlled by BCD and cannot be used for normal communication. Once the BCD discovery is finished, the BCD should be placed in OFF mode by clearing this bit to '0 in order to allow the normal USB operation. 0 1 read-write DCDEN Data contact detection (DCD) mode enable Device mode This bit is set by the software to put the BCD into DCD mode. Only one detection mode (DCD, PD, SD or OFF) should be selected to work correctly. 1 1 read-write PDEN Primary detection (PD) mode enable Device mode This bit is set by the software to put the BCD into PD mode. Only one detection mode (DCD, PD, SD or OFF) should be selected to work correctly. 2 1 read-write SDEN Secondary detection (SD) mode enable Device mode This bit is set by the software to put the BCD into SD mode. Only one detection mode (DCD, PD, SD or OFF) should be selected to work correctly. 3 1 read-write DCDET Data contact detection (DCD) status Device mode This bit gives the result of DCD. 4 1 read-only B_0x0 data lines contact not detected. 0x0 B_0x1 data lines contact detected. 0x1 PDET Primary detection (PD) status Device mode This bit gives the result of PD. 5 1 read-only B_0x0 no BCD support detected (connected to SDP or proprietary device). 0x0 B_0x1 BCD support detected (connected to ACA, CDP or DCP). 0x1 SDET Secondary detection (SD) status Device mode This bit gives the result of SD. 6 1 read-only B_0x0 CDP detected. 0x0 B_0x1 DCP detected. 0x1 PS2DET DM pull-up detection status Device mode This bit is active only during PD and gives the result of comparison between DM voltage level and VLGC threshold. In normal situation, the DM level should be below this threshold. If it is above, it means that the DM is externally pulled high. This can be caused by connection to a PS2 port (which pulls-up both DP and DM lines) or to some proprietary charger not following the BCD specification. 7 1 read-only B_0x0 Normal port detected (connected to SDP, ACA, CDP or DCP). 0x0 B_0x1 PS2 port or proprietary charger detected. 0x1 DPPU_DPD DP pull-up / DPDM pull-down Device mode This bit is set by software to enable the embedded pull-up on DP line. Clearing it to '0 can be used to signal disconnect to the host when needed by the user software. Host mode This bit is set by software to enable the embedded pull-down on DP and DM lines. 15 1 read-write VREFBUF System configuration controller VREFBUF 0x40010030 0x0 0x400 registers VREFBUF_CSR VREFBUF_CSR VREFBUF control and status register 0x0 0x20 0x00000002 ENVR Voltage reference buffer mode enable This bit is used to enable the voltage reference buffer mode. 0 1 read-write B_0x0 Internal voltage reference mode disable (external voltage reference mode). 0x0 B_0x1 Internal voltage reference mode (reference buffer enable or hold mode) enable. 0x1 HIZ High impedance mode This bit controls the analog switch to connect or not the VREF+ pin. Refer to for the mode descriptions depending on ENVR bit configuration. 1 1 read-write B_0x0 VREF+ pin is internally connected to the voltage reference buffer output. 0x0 B_0x1 VREF+ pin is high impedance. 0x1 VRS Voltage reference scale This bit selects the value generated by the voltage reference buffer. 2 1 read-write B_0x0 Voltage reference set to VREF_OUT1 (around 2.048 V). 0x0 B_0x1 Voltage reference set to VREF_OUT2 (around 2.5 V). 0x1 VRR Voltage reference buffer ready 3 1 read-only B_0x0 the voltage reference buffer output is not ready. 0x0 B_0x1 the voltage reference buffer output reached the requested level. 0x1 VREFBUF_CCR VREFBUF_CCR VREFBUF calibration control register 0x4 0x20 read-write 0x00000000 TRIM Trimming code These bits are automatically initialized after reset with the trimming value stored in the Flash memory during the production test. Writing into these bits allows the tuning of the internal reference buffer voltage. 0 6 read-write WWDG System window watchdog WWDG 0x40002C00 0x0 0x400 registers WWDG Window watchdog interrupt 0 WWDG_CR WWDG_CR Control register 0x0 0x20 read-write 0x0000007F T 7-bit counter (MSB to LSB) These bits contain the value of the watchdog counter, decremented every (4096 x 2WDGTB[1:0]) PCLK cycles. A reset is produced when it is decremented from 0x40 to 0x3F (T6 becomes cleared). 0 7 read-write WDGA Activation bit This bit is set by software and only cleared by hardware after a reset. When WDGA = 1, the watchdog can generate a reset. 7 1 read-write B_0x0 Watchdog disabled 0x0 B_0x1 Watchdog enabled 0x1 WWDG_CFR WWDG_CFR Configuration register 0x4 0x20 read-write 0x0000007F W 7-bit window value These bits contain the window value to be compared with the down-counter. 0 7 read-write EWI Early wakeup interrupt When set, an interrupt occurs whenever the counter reaches the value 0x40. This interrupt is only cleared by hardware after a reset. 9 1 read-write WDGTB Timer base The timebase of the prescaler can be modified as follows: 11 3 read-write B_0x0 CK Counter Clock (PCLK div 4096) div 1 0x0 B_0x1 CK Counter Clock (PCLK div 4096) div 2 0x1 B_0x2 CK Counter Clock (PCLK div 4096) div 4 0x2 B_0x3 CK Counter Clock (PCLK div 4096) div 8 0x3 B_0x4 CK Counter Clock (PCLK div 4096) div 16 0x4 B_0x5 CK Counter Clock (PCLK div 4096) div 32 0x5 B_0x6 CK Counter Clock (PCLK div 4096) div 64 0x6 B_0x7 CK Counter Clock (PCLK div 4096) div 128 0x7 WWDG_SR WWDG_SR Status register 0x8 0x20 read-write 0x00000000 EWIF Early wakeup interrupt flag 0 1