DM00037591 - STM32F40xxx Errata Sheet
DM00037591 - STM32F40xxx Errata Sheet
Errata sheet
STM32F405/407xx and STM32F415/417xx revision A
device limitations
Silicon identification
This errata sheet applies to the revision A of STMicroelectronics
STM42F405xx/STM42F407xx and STM42F415xx/STM42F417xx microcontroller families.
In this document they will be referred to as STM32F40x and STM32F41x, respectively,
unless otherwise specified.
The STM32F40x and STM32F41x families feature an ARM™ 32-bit Cortex®M4F core, for
which an errata notice is also available (see Section 1 for details).
The full list of part numbers is shown in Table 2. The products are identifiable as shown in
Table 1:
● by the revision code marked below the order code on the device package
● by the last three digits of the Internal order code printed on the box label
STM42F405xx, STM42F407xx
“A”
STM42F415xx, STM42F417xx
1. The REV_ID bits in the DBGMCU_IDCODE register show the revision code of the device (see the
STM32F40x and STM32F41x reference manual for details on how to find the revision code).
2. Refer to Appendix A: Revision and date codes on device marking for details on how to identify the revision
code and the date code on the different packages.
Contents
Revision history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
List of tables
List of figures
An errata notice of the STM32F40x and STM32F41x core is available from the following web
address: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0439c/index.html.
All the described limitations are minor and related to the revision r0p1-v1 of the CortexM4F
core. Table 3 summarizes these limitations and their implications on the behavior of
STM32F40x and STM32F41x devices.
Workaround
As of today, no compiler generates these particular instructions. This limitation can only
occur with hand-written assembly code.
Both issues 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
Workaround
None.
This limitation will be fixed in next silicon revision.
Workaround
To differentiate the STM32F4xxx from the STM32F2xxx series, read the MCU device ID and
the Core Device.
● For STM32F2xxx
MCU device ID = STM32F2xxx device ID
Core Device = CortexM3
● For STM32F4xxx
MCU device ID = STM32F4xxx device ID
Core Device = CortexM4
This limitation will be fixed in next silicon revision.
Workaround
To debug the Stop mode, disable the system tick timer interrupt.
Workaround
To debug Stop mode with WFE entry, the WFE instruction must be inside a dedicated
function with 1 instruction (NOP) between the execution of the WFE and the Bx LR.
Example:
__asm void _WFE(void) {
WFE
NOP
BX lr }
Workarounds
A higher-level mechanism should be used to verify that a write operation is being performed
correctly at the target device, such as:
1. Using the SMBAL pin if supported by the host
2. the alert response address (ARA) protocol
3. the Host notify protocol
Workaround
In the I²C standard, it is allowed to send a Stop only at the end of the full byte (8 bits +
acknowledge), so this scenario is not allowed. Other derived protocols like CBUS allow it,
but they are not supported by the I²C peripheral.
A software workaround consists in asserting the software reset using the SWRST bit in the
I2C_CR1 control register.
2.2.3 Mismatch on the “Setup time for a repeated Start condition” timing
parameter
Description
In case of a repeated Start, the “Setup time for a repeated Start condition” (named Tsu;sta
in the I²C specification) can be slightly violated when the I²C operates in Master Standard
mode at a frequency between 88 kHz and 100 kHz.
The issue can occur only in the following configuration:
● in Master mode
● in Standard mode at a frequency between 88 kHz and 100 kHz (no issue in Fast-mode)
● SCL rise time:
– If the slave does not stretch the clock and the SCL rise time is more than 300 ns (if
the SCL rise time is less than 300 ns the issue cannot occur)
– If the slave stretches the clock
The setup time can be violated independently of the APB peripheral frequency.
Workaround
Reduce the frequency down to 88 kHz or use the I²C Fast-mode if supported by the slave.
2.2.4 Data valid time (tVD;DAT) violated without the OVR flag being set
Description
The data valid time (tVD;DAT, tVD;ACK) described by the I²C standard can be violated (as well
as the maximum data hold time of the current data (tHD;DAT)) under the conditions described
below. This violation cannot be detected because the OVR flag is not set (no transmit buffer
underrun is detected).
This issue can occur only under the following conditions:
● in Slave transmit mode
● with clock stretching disabled (NOSTRETCH=1)
● if the software is late to write the DR data register, but not late enough to set the OVR
flag (the data register is written before)
Workaround
If the master device allows it, use the clock stretching mechanism by programming the bit
NOSTRETCH=0 in the I2C_CR1 register.
If the master device does not allow it, ensure that the software is fast enough when polling
the TXE or ADDR flag to immediately write to the DR data register. For instance, use an
interrupt on the TXE or ADDR flag and boost its priority to the higher level.
2.3.1 In I2S slave mode, WS level must to be set by the external master
when enabling the I2S
Description
In slave mode the WS signal level is used only to start the communication. If the I2S (in
slave mode) is enabled while the master is already sending the clock and the WS signal
level is low (for I2S protocol) or is high (for the LSB or MSB-justified mode), the slave starts
communicating data immediately. In this case the master and slave will be desynchronized
throughout the whole communication.
Workaround
The I2S peripheral must be enabled when the external master sets the WS line at:
● High level when the I2S protocol is selected.
● Low level when the LSB or MSB-justified mode is selected.
Workaround
None.
2.4.2 In full duplex mode, the Parity Error (PE) flag can be cleared by
writing the data register
Description
In full duplex mode, when the Parity Error flag is set by the receiver at the end of a reception,
it may be cleared while transmitting by reading the USART_SR register to check the TXE or
TC flags and writing data in the data register.
Consequently, the software receiver can read the PE flag as '0' even if a parity error
occurred.
Workaround
The Parity Error flag should be checked after the end of reception and before transmission.
2.4.3 Parity Error (PE) flag is not set when receiving in Mute mode
using address mark detection
Description
The USART receiver is in Mute mode and is configured to exit the Mute mode using the
address mark detection. When the USART receiver recognizes a valid address with a parity
error, it exits the Mute mode without setting the Parity Error flag.
Workaround
None.
Workaround
None.
Workaround
The lost data should be resent to the USART.
2.5.1 Data in RxFIFO are overwritten when all channels are disabled
simultaneously
Description
If the available RxFIFO is just large enough to host 1 packet + its data status, and is
currently occupied by the last received data + its status and, at the same time, the
application requests that more IN channels be disabled, the OTG_FS peripheral does not
first check for available space before inserting the disabled status of the IN channels. It just
inserts them by overwriting the existing data payload.
Workaround
Use one of the following recommendations:
1. Configure the RxFIFO to host a minimum of 2 × MPSIZ + 2 × data status entries.
2. The application has to check the RXFLVL bit (RxFIFO non-empty) in the
OTG_FS_GINTSTS register before disabling each IN channel. If this bit is not set, then
the application can disable an IN channel at a time. Each time the application disables
an IN channel, however, it first has to check that the RXFLVL bit = 0 condition is true.
2.5.2 OTG host blocks the receive channel when receiving IN packets and no
TxFIFO is configured
Description
When receiving data, the OTG_FS core erroneously checks for available TxFIFO space
when it should only check for RxFIFO space. If the OTG_FS core cannot see any space
allocated for data transmission, it blocks the reception channel and no data are received.
Workaround
Set at least one TxFIFO equal to the maximum packet size. In this way, the host application,
which intends to supports only IN traffic, also has to allocate some space for the TxFIFO.
Since a USB host is expected to support any kind of connected endpoint, it is good practice
to always configure enough TxFIFO space for OUT endpoints.
2.6.2 The Ethernet MAC processes invalid extension headers in the received
IPv6 frames
Description
In IPv6 frames, there can be zero or some extension headers preceding the actual IP
payload. The Ethernet MAC processes the following extension headers defined in the IPv6
protocol: Hop-by-Hop Options header, Routing header and Destination Options header.
All extension headers except the Hop-by-Hop extension header can be present multiple
times and in any order before the actual IP payload. The Hop-by-Hop extension header, if
present, has to come immediately after the IPv6’s main header.
The Ethernet MAC processes all (valid or invalid) extension headers including the Hop-by-
Hop extension headers that are present after the first extension header. For this reason, the
GMAC core will accept IPv6 frames with invalid Hop-by-Hop extension headers. As a
consequence, it will accept any IP payload as valid IPv6 frames with TCP, UDP or ICMP
payload, and then incorrectly update the Receive status of the corresponding frame.
Workaround
None.
2.6.3 MAC stuck in the Idle state on receiving the TxFIFO flush command
exactly 1 clock cycle after a transmission completes
Description
When the software issues a TxFIFO flush command, the transfer of frame data stops (even
in the middle of a frame transfer). The TxFIFO read controller goes into the Idle state
(TFRS=00 in ETH_MACDBGR) and then resumes its normal operation.
However, if the TxFIFO read controller receives the TxFIFO flush command exactly one
clock cycle after receiving the status from the MAC, the controller remains stuck in the Idle
state and stops transmitting frames from the TxFIFO. The system can recover from this
state only with a reset (e.g. a soft reset).
Workaround
Do not use the TxFIFO flush feature.
If TXFIFO flush is really needed, wait until the TxFIFO is empty prior to using the TxFIFO
flush command.
Description
Frame data may get corrupted when the TxFIFO is repeatedly transitioning from non-empty
to empty for a very short period, and then from empty to non-empty, without causing an
underflow.
This transitioning from non-empty to empty and back to non-empty happens when the rate
at which the data are being written to the TxFIFO is almost equal to or a little less than the
rate at which the data are being read.
This corruption cannot be detected by the receiver when the CRC is inserted by the MAC,
as the corrupted data are used for the CRC computation.
Workaround
Use the Store-and-Forward mode: TSF=1 (bit 21 in ETH_DMAOMR). In this mode the data
are transmitted only when the whole packet is available in the TxFIFO.
Workaround
None.
Workaround
None.
Note: Do not use the HW flow control. Overrun errors (Rx mode) and FIFO underrun (Tx mode)
should be managed by the application software.
Figure 1, Figure 2, Figure 3, Figure 4 and Figure 5 show the marking compositions for the
UFBGA176, LQFP176, LQFP144, LQFP100 and LQFP64 packages, respectively. The only
fields shown are the Additional field containing the revision code and the Year and Week
fields making up the date code.
!DDITIONAL INFORMATION FIELD
INCLUDING REVISION CODE
9EAR 7EEK
34 LOGO
-36
9EAR 7EEK
$ATE CODE 9EAR7EEK
AI
!DDITIONAL INFORMATION FIELD
INCLUDING 2EVISION CODE
9EAR 7EEK
$ATE CODE 9EAR7EEK
AIB
!DDITIONAL INFORMATION FIELD
INCLUDING 2EVISION CODE
$ATE CODE 9EAR7EEK
9EAR 7EEK
AIB
!2- LOGO !DDITIONAL INFORMATION FIELD
INCLUDING 2EVISION CODE
$ATE CODE 9EAR7EEK
9EAR 7EEK
34 LOGO
A
AIC
Revision history
Information in this document is provided solely in connection with ST products. STMicroelectronics NV and its subsidiaries (“ST”) reserve the
right to make changes, corrections, modifications or improvements, to this document, and the products and services described herein at any
time, without notice.
All ST products are sold pursuant to ST’s terms and conditions of sale.
Purchasers are solely responsible for the choice, selection and use of the ST products and services described herein, and ST assumes no
liability whatsoever relating to the choice, selection or use of the ST products and services described herein.
No license, express or implied, by estoppel or otherwise, to any intellectual property rights is granted under this document. If any part of this
document refers to any third party products or services it shall not be deemed a license grant by ST for the use of such third party products
or services, or any intellectual property contained therein or considered as a warranty covering the use in any manner whatsoever of such
third party products or services or any intellectual property contained therein.
UNLESS OTHERWISE SET FORTH IN ST’S TERMS AND CONDITIONS OF SALE ST DISCLAIMS ANY EXPRESS OR IMPLIED
WARRANTY WITH RESPECT TO THE USE AND/OR SALE OF ST PRODUCTS INCLUDING WITHOUT LIMITATION IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE (AND THEIR EQUIVALENTS UNDER THE LAWS
OF ANY JURISDICTION), OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.
UNLESS EXPRESSLY APPROVED IN WRITING BY TWO AUTHORIZED ST REPRESENTATIVES, ST PRODUCTS ARE NOT
RECOMMENDED, AUTHORIZED OR WARRANTED FOR USE IN MILITARY, AIR CRAFT, SPACE, LIFE SAVING, OR LIFE SUSTAINING
APPLICATIONS, NOR IN PRODUCTS OR SYSTEMS WHERE FAILURE OR MALFUNCTION MAY RESULT IN PERSONAL INJURY,
DEATH, OR SEVERE PROPERTY OR ENVIRONMENTAL DAMAGE. ST PRODUCTS WHICH ARE NOT SPECIFIED AS "AUTOMOTIVE
GRADE" MAY ONLY BE USED IN AUTOMOTIVE APPLICATIONS AT USER’S OWN RISK.
Resale of ST products with provisions different from the statements and/or technical features set forth in this document shall immediately void
any warranty granted by ST for the ST product or service described herein and shall not create or extend in any manner whatsoever, any
liability of ST.
Information in this document supersedes and replaces all information previously supplied.
The ST logo is a registered trademark of STMicroelectronics. All other names are the property of their respective owners.