STM32F412xE/xGArm® 32-bit Cortex®-M4 with FPU limitations
1 Arm® 32-bit Cortex®-M4 with FPU limitations
An errata notice of the STM32F412xx core is available from http://infocenter.arm.com.
All the described limitations are minor and related to the revision r0p1-v1 of the Cortex-M4
core. Table 3 summarizes these limitations and their implications on the behavior of
STM32F412xx devices.
Table 3. Cortex-M4 core limitations and impact on microcontroller behavior
Arm ID
752770Cat B
776924Cat B
Arm
category
Arm summary of errataImpact on STM32F412xx
Interrupted loads to SP can cause erroneous
behavior
VDIV or VSQRT instructions might not complete
correctly when very short ISRs are used
Minor
Minor
1.1 Cortex-M4 interrupted loads to stack pointer can cause
erroneous behavior
Description
An interrupt occurring during the data-phase of a single word load to the stack pointer
(SP/R13) can cause an erroneous behavior of the device. In addition, returning from the
interrupt results in the load instruction being executed an additional time.
For all the instructions performing an update of the base register, the base register is
erroneously updated on each execution, resulting in the stack pointer being loaded from an
incorrect memory location.
The instructions affected by this limitation are the following:
•LDR SP, [Rn],#imm
•LDR SP, [Rn,#imm]!
•LDR SP, [Rn,#imm]
•LDR SP, [Rn]
•LDR SP, [Rn,Rm]
Workaround
As of today, no compiler generates these particular instructions. This limitation can only
occur with hand-written assembly code.
Both limitations can be solved by replacing the direct load to the stack pointer by an
intermediate load to a general-purpose register followed by a move to the stack pointer.
Example:
Replace LDR SP, [R0] by
LDR R2,[R0]
MOV SP,R2
ES0305 Rev 95/25
24
Arm® 32-bit Cortex®-M4 with FPU limitationsSTM32F412xE/xG
1.2 VDIV or VSQRT instructions might not complete correctly
when very short ISRs are used
Description
On Cortex-M4 with FPU core, 14 cycles are required to execute a VDIV or VSQRT
instruction.
This limitation is present when the following conditions are met:
•A VDIV or VSQRT is executed
•The destination register for VDIV or VSQRT is one of s0 - s15
•An interrupt occurs and is taken
•The ISR being executed does not contain a floating point instruction
•14 cycles after the VDIV or VSQRT is executed, an interrupt return is executed
In this case, if there are only one or two instructions inside the interrupt service routine, then
the VDIV or VQSRT instruction does not complete correctly and the register bank and
FPSCR are not updated, meaning that these registers hold incorrect out-of-date data.
Workaround
Two workarounds are applicable:
•Disable lazy context save of floating point state by clearing LSPEN to 0 (bit 30 of the
FPCCR at address 0xE000EF34).
•Ensure that every ISR contains more than 2 instructions in addition to the exception
return instruction.
6/25ES0305 Rev 9
STM32F412xE/xGSTM32F412xx silicon limitations
2 STM32F412xx silicon limitations
Table 4 gives quick references to all documented limitations.
Legend for Table 4: A = workaround available; N = no workaround available; P = partial
workaround available, ‘-’ and grayed = fixed.
Section 2.1.1: Debugging Sleep/Stop mode with WFE/WFI entryAA
Section 2.1.2: Wakeup sequence from Standby mode when using
more than one wakeup source
Table 4. Summary of silicon limitations
Links to silicon limitationsRevision Z
AA
Revision C
and
Revision 1
Section 2.1:
System limitations
Section 2.2: IWDG
peripheral
limitation
Section 2.3: I2C
peripheral
limitations
Section 2.1.3: Full JTAG configuration without NJTRST pin cannot
be used
Section 2.1.4: MPU attribute to RTC and IWDG registers could be
managed incorrectly
AA
AA
Section 2.1.5: Delay after an RCC peripheral clock enablingAA
Section 2.1.6: Internal noise impacting the ADC accuracyAA
Section 2.1.7: Flash sector erase issue for sectors 5 to 11A
-
Section 2.1.8: In some specific cases, DMA2 data corruption
occurs when managing AHB and APB2 peripherals in a concurrent
AA
way
Section 2.2.1: RVU and PVU flags are not reset in STOP modeAA
Section 2.3.1: SMBus standard not fully supportedAA
Section 2.3.2: Start cannot be generated after a misplaced StopAA
Section 2.3.3: Mismatch on the “Setup time for a repeated Start
condition” timing parameter
Section 2.3.4: Data valid time (t
) violated without the OVR
VD;DAT
flag being set
Section 2.3.5: Both SDA and SCL maximum rise time (t
) violated
r
when VDD_I2C bus higher than ((VDD+0.3) / 0.7) V
Section 2.3.6: Last received byte can be lost when using Reload
mode with NBYTES > 1
AA
AA
AA
PP
Section 2.4:
FMPI2C peripheral
limitation
Section 2.4.1: Wrong data sampling when data set-up time
(tSU;DAT) is smaller than one FMPI2CCLK period
ES0305 Rev 97/25
AA
24
STM32F412xx silicon limitationsSTM32F412xE/xG
Table 4. Summary of silicon limitations (continued)
Revision C
Links to silicon limitationsRevision Z
and
Revision 1
Section 2.5:
SPI/I2S peripheral
limitation
Section 2.6:
USART peripheral
limitations
Section 2.5.1: Wrong CRC calculation when the polynomial is
even.
Section 2.5.2: BSY bit may stay high at the end of a data transfer in
slave mode
Section 2.5.3: Corrupted last bit of data and/or CRC, received in
Master mode with delayed SCK feedback
Section 2.6.1: Idle frame is not detected if receiver clock speed is
deviated
Section 2.6.2: In full duplex mode, the Parity Error (PE) flag can be
cleared by writing to the data register
Section 2.6.3: Parity Error (PE) flag is not set when receiving in
Mute mode using address mark detection
Section 2.6.4: Break frame is transmitted regardless of nCTS input
line status
Section 2.6.5: nRTS signal abnormally driven low after a protocol
violation
Section 2.6.6: Start bit detected too soon when sampling for NACK
signal from the smartcard
Section 2.6.7: Break request can prevent the Transmission
Complete flag (TC) from being set
Section 2.6.8: Guard time is not respected when data are sent on
TXE events
AA
AA
AA
NN
AA
NN
NN
AA
AA
AA
AA
Section 2.6.9: nRTS is active while RE or UE = 0AA
Section 2.7:
bxCAN limitation
Section 2.8: FSMC
peripheral
limitation
Section 2.9: SDIO
peripheral
limitations
Section 2.10: ADC
peripheral
limitations
Section 2.11:
QuadSPI
limitations
8/25ES0305 Rev 9
Section 2.7.1: bxCAN time triggered communication mode not
supported
Section 2.8.1: Dummy read cycles inserted when reading
synchronous memories
Section 2.9.1: Wrong CCRCFAIL status after a response without
CRC is received
Section 2.9.2: No underrun detection with wrong data transmissionAA
Section 2.10.1: ADC sequencer modification during conversionAA
Section 2.11.1: First nibble of data is not written after dummy phaseAA
Section 2.11.2: Wrong data can be read in memory-mapped after
an indirect mode operation
AA
NN
AA
AA
Loading...
+ 17 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.