\n
address_offset : 0x0 Bytes (0x0)
size : 0x400 byte (0x0)
mem_usage : registers
protection : not protected
Control register 1
address_offset : 0x0 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
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.
bits : 0 - 0 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Peripheral disable
0x1 : B_0x1
Peripheral enable
End of enumeration elements list.
TXIE : TX Interrupt enable
bits : 1 - 1 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Transmit (TXIS) interrupt disabled
0x1 : B_0x1
Transmit (TXIS) interrupt enabled
End of enumeration elements list.
RXIE : RX Interrupt enable
bits : 2 - 2 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Receive (RXNE) interrupt disabled
0x1 : B_0x1
Receive (RXNE) interrupt enabled
End of enumeration elements list.
ADDRIE : Address match Interrupt enable (slave only)
bits : 3 - 3 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Address match (ADDR) interrupts disabled
0x1 : B_0x1
Address match (ADDR) interrupts enabled
End of enumeration elements list.
NACKIE : Not acknowledge received Interrupt enable
bits : 4 - 4 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Not acknowledge (NACKF) received interrupts disabled
0x1 : B_0x1
Not acknowledge (NACKF) received interrupts enabled
End of enumeration elements list.
STOPIE : Stop detection Interrupt enable
bits : 5 - 5 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Stop detection (STOPF) interrupt disabled
0x1 : B_0x1
Stop detection (STOPF) interrupt enabled
End of enumeration elements list.
TCIE : Transfer Complete interrupt enable Note: Any of these events generate an interrupt: Transfer Complete (TC) Transfer Complete Reload (TCR)
bits : 6 - 6 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Transfer Complete interrupt disabled
0x1 : B_0x1
Transfer Complete interrupt enabled
End of enumeration elements list.
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)
bits : 7 - 7 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Error detection interrupts disabled
0x1 : B_0x1
Error detection interrupts enabled
End of enumeration elements list.
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).
bits : 8 - 11 (4 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Digital filter disabled
0x1 : B_0x1
Digital filter enabled and filtering capability up to 1 tI2CCLK
0xF : B_0xF
digital filter enabled and filtering capability up to15 tI2CCLK
End of enumeration elements list.
ANFOFF : Analog noise filter OFF Note: This bit can only be programmed when the I2C is disabled (PE = 0).
bits : 12 - 12 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Analog noise filter enabled
0x1 : B_0x1
Analog noise filter disabled
End of enumeration elements list.
TXDMAEN : DMA transmission requests enable
bits : 14 - 14 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
DMA mode disabled for transmission
0x1 : B_0x1
DMA mode enabled for transmission
End of enumeration elements list.
RXDMAEN : DMA reception requests enable
bits : 15 - 15 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
DMA mode disabled for reception
0x1 : B_0x1
DMA mode enabled for reception
End of enumeration elements list.
SBC : Slave byte control This bit is used to enable hardware byte control in slave mode.
bits : 16 - 16 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Slave byte control disabled
0x1 : B_0x1
Slave byte control enabled
End of enumeration elements list.
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).
bits : 17 - 17 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Clock stretching enabled
0x1 : B_0x1
Clock stretching disabled
End of enumeration elements list.
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â
bits : 18 - 18 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Wakeup from Stop mode disable.
0x1 : B_0x1
Wakeup from Stop mode enable.
End of enumeration elements list.
GCEN : General call enable
bits : 19 - 19 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
General call disabled. Address 0b00000000 is NACKed.
0x1 : B_0x1
General call enabled. Address 0b00000000 is ACKed.
End of enumeration elements list.
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 .
bits : 20 - 20 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Host Address disabled. Address 0b0001000x is NACKed.
0x1 : B_0x1
Host Address enabled. Address 0b0001000x is ACKed.
End of enumeration elements list.
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 .
bits : 21 - 21 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Device Default Address disabled. Address 0b1100001x is NACKed.
0x1 : B_0x1
Device Default Address enabled. Address 0b1100001x is ACKed.
End of enumeration elements list.
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 .
bits : 22 - 22 (1 bit)
access : read-write
Enumeration:
0x0 : 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).
0x1 : 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).
End of enumeration elements list.
PECEN : PEC enable Note: If the SMBus feature is not supported, this bit is reserved and forced by hardware to '0â. Refer to .
bits : 23 - 23 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
PEC calculation disabled
0x1 : B_0x1
PEC calculation enabled
End of enumeration elements list.
Timing register
address_offset : 0x10 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
SCLL : SCL low period (master mode)
bits : 0 - 7 (8 bit)
SCLH : SCL high period (master mode)
bits : 8 - 15 (8 bit)
SDADEL : Data hold time
bits : 16 - 19 (4 bit)
SCLDEL : Data setup time
bits : 20 - 23 (4 bit)
PRESC : Timing prescaler
bits : 28 - 31 (4 bit)
Status register 1
address_offset : 0x14 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
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.
bits : 0 - 11 (12 bit)
access : read-write
TIDLE : Idle clock timeout detection Note: This bit can be written only when TIMOUTEN=0.
bits : 12 - 12 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
TIMEOUTA is used to detect SCL low timeout
0x1 : B_0x1
TIMEOUTA is used to detect both SCL and SDA high timeout (bus idle condition)
End of enumeration elements list.
TIMOUTEN : Clock timeout enable
bits : 15 - 15 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
SCL timeout detection is disabled
0x1 : 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).
End of enumeration elements list.
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.
bits : 16 - 27 (12 bit)
access : read-write
TEXTEN : Extended clock timeout enable
bits : 31 - 31 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Extended clock timeout detection is disabled
0x1 : 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).
End of enumeration elements list.
Interrupt and Status register
address_offset : 0x18 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
TXE : Transmit data register empty (transmitters)
bits : 0 - 0 (1 bit)
access : read-write
TXIS : Transmit interrupt status (transmitters)
bits : 1 - 1 (1 bit)
access : read-write
RXNE : Receive data register not empty (receivers)
bits : 2 - 2 (1 bit)
access : read-only
ADDR : Address matched (slave mode)
bits : 3 - 3 (1 bit)
access : read-only
NACKF : Not acknowledge received flag
bits : 4 - 4 (1 bit)
access : read-only
STOPF : Stop detection flag
bits : 5 - 5 (1 bit)
access : read-only
TC : Transfer Complete (master mode)
bits : 6 - 6 (1 bit)
access : read-only
TCR : Transfer Complete Reload
bits : 7 - 7 (1 bit)
access : read-only
BERR : Bus error
bits : 8 - 8 (1 bit)
access : read-only
ARLO : Arbitration lost
bits : 9 - 9 (1 bit)
access : read-only
OVR : Overrun/Underrun (slave mode)
bits : 10 - 10 (1 bit)
access : read-only
PECERR : PEC Error in reception
bits : 11 - 11 (1 bit)
access : read-only
TIMEOUT : Timeout or t_low detection flag
bits : 12 - 12 (1 bit)
access : read-only
ALERT : SMBus alert
bits : 13 - 13 (1 bit)
access : read-only
BUSY : Bus busy
bits : 15 - 15 (1 bit)
access : read-only
DIR : Transfer direction (Slave mode) This flag is updated when an address match event occurs (ADDR=1).
bits : 16 - 16 (1 bit)
access : read-only
Enumeration:
0x0 : B_0x0
Write transfer, slave enters receiver mode.
0x1 : B_0x1
Read transfer, slave enters transmitter mode.
End of enumeration elements list.
ADDCODE : Address match code (Slave mode)
bits : 17 - 23 (7 bit)
access : read-only
Interrupt clear register
address_offset : 0x1C Bytes (0x0)
size : 32 bit
access : write-only
reset_value : 0x0
reset_Mask : 0x0
ADDRCF : Address Matched flag clear
bits : 3 - 3 (1 bit)
NACKCF : Not Acknowledge flag clear
bits : 4 - 4 (1 bit)
STOPCF : Stop detection flag clear
bits : 5 - 5 (1 bit)
BERRCF : Bus error flag clear
bits : 8 - 8 (1 bit)
ARLOCF : Arbitration lost flag clear
bits : 9 - 9 (1 bit)
OVRCF : Overrun/Underrun flag clear
bits : 10 - 10 (1 bit)
PECCF : PEC Error flag clear
bits : 11 - 11 (1 bit)
TIMOUTCF : Timeout detection flag clear
bits : 12 - 12 (1 bit)
ALERTCF : Alert flag clear
bits : 13 - 13 (1 bit)
PEC register
address_offset : 0x20 Bytes (0x0)
size : 32 bit
access : read-only
reset_value : 0x0
reset_Mask : 0x0
PEC : Packet error checking register
bits : 0 - 7 (8 bit)
Receive data register
address_offset : 0x24 Bytes (0x0)
size : 32 bit
access : read-only
reset_value : 0x0
reset_Mask : 0x0
RXDATA : 8-bit receive data
bits : 0 - 7 (8 bit)
Transmit data register
address_offset : 0x28 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
TXDATA : 8-bit transmit data
bits : 0 - 7 (8 bit)
Control register 2
address_offset : 0x4 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
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.
bits : 0 - 9 (10 bit)
access : read-write
RD_WRN : Transfer direction (master mode) Note: Changing this bit when the START bit is set is not allowed.
bits : 10 - 10 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Master requests a write transfer.
0x1 : B_0x1
Master requests a read transfer.
End of enumeration elements list.
ADD10 : 10-bit addressing mode (master mode) Note: Changing this bit when the START bit is set is not allowed.
bits : 11 - 11 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
The master operates in 7-bit addressing mode,
0x1 : B_0x1
The master operates in 10-bit addressing mode
End of enumeration elements list.
HEAD10R : 10-bit address header only read direction (master receiver mode) Note: Changing this bit when the START bit is set is not allowed.
bits : 12 - 12 (1 bit)
access : read-write
Enumeration:
0x0 : 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.
0x1 : B_0x1
The master only sends the 1st 7 bits of the 10 bit address, followed by Read direction.
End of enumeration elements list.
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.
bits : 13 - 13 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
No Start generation.
0x1 : B_0x1
Restart/Start generation:
End of enumeration elements list.
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.
bits : 14 - 14 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
No Stop generation.
0x1 : B_0x1
Stop generation after current byte transfer.
End of enumeration elements list.
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.
bits : 15 - 15 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
an ACK is sent after current received byte.
0x1 : B_0x1
a NACK is sent after current received byte.
End of enumeration elements list.
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.
bits : 16 - 23 (8 bit)
access : read-write
RELOAD : NBYTES reload mode This bit is set and cleared by software.
bits : 24 - 24 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
The transfer is completed after the NBYTES data transfer (STOP or RESTART follows).
0x1 : 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.
End of enumeration elements list.
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.
bits : 25 - 25 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
software end mode: TC flag is set when NBYTES data are transferred, stretching SCL low.
0x1 : B_0x1
Automatic end mode: a STOP condition is automatically sent when NBYTES data are transferred.
End of enumeration elements list.
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 .
bits : 26 - 26 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
No PEC transfer.
0x1 : B_0x1
PEC transmission/reception is requested
End of enumeration elements list.
Own address register 1
address_offset : 0x8 Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
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.
bits : 0 - 9 (10 bit)
access : read-write
OA1MODE : Own Address 1 10-bit mode Note: This bit can be written only when OA1EN=0.
bits : 10 - 10 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Own address 1 is a 7-bit address.
0x1 : B_0x1
Own address 1 is a 10-bit address.
End of enumeration elements list.
OA1EN : Own Address 1 enable
bits : 15 - 15 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Own address 1 disabled. The received slave address OA1 is NACKed.
0x1 : B_0x1
Own address 1 enabled. The received slave address OA1 is ACKed.
End of enumeration elements list.
Own address register 2
address_offset : 0xC Bytes (0x0)
size : 32 bit
access : read-write
reset_value : 0x0
reset_Mask : 0x0
OA2 : Interface address 7-bit addressing mode: 7-bit address Note: These bits can be written only when OA2EN=0.
bits : 1 - 7 (7 bit)
access : 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.
bits : 8 - 10 (3 bit)
access : read-write
Enumeration:
0x0 : B_0x0
No mask
0x1 : B_0x1
OA2[1] is masked and donât care. Only OA2[7:2] are compared.
0x2 : B_0x2
OA2[2:1] are masked and donât care. Only OA2[7:3] are compared.
0x3 : B_0x3
OA2[3:1] are masked and donât care. Only OA2[7:4] are compared.
0x4 : B_0x4
OA2[4:1] are masked and donât care. Only OA2[7:5] are compared.
0x5 : B_0x5
OA2[5:1] are masked and donât care. Only OA2[7:6] are compared.
0x6 : B_0x6
OA2[6:1] are masked and donât care. Only OA2[7] is compared.
0x7 : 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.
End of enumeration elements list.
OA2EN : Own Address 2 enable
bits : 15 - 15 (1 bit)
access : read-write
Enumeration:
0x0 : B_0x0
Own address 2 disabled. The received slave address OA2 is NACKed.
0x1 : B_0x1
Own address 2 enabled. The received slave address OA2 is ACKed.
End of enumeration elements list.
Is something missing? Is something wrong? can you help correct it ? Please contact us at info@chipselect.org !
This website is sponsored by Embeetle, an IDE designed from scratch for embedded software developers.