The STM32F401 'Black pill' development board is an updated version of the original F103 based black pill. This newer version features a more powerful Core-M4F based ARM CPU which brings with it a number of enhanced features, including more flash, SRAM memory, a Floating Point Unit, and an increased number of peripherals, including built in USB type-C OTG support. However, possibly the most amazing feature of this development board is the price. When compared to Atmel based Arduino development boards this little development board boasts a very impressive array of features for a fraction of the cost.
Arduino IDE support:
Arduino support for this board can be added to the IDE via its board manager feature. To guide you though this process we’ve added a step-by-step guide on our blog site here:
https://blog.hobbycomponents.com/?p=758
Schematic:
FAQ:
When in normal mode the module works fine but when entering bootloader DFU mode the device comes up as a “Unknown USB device (Device Descriptor Request Failed).
Correct operation of DFU mode is reliant on the STM32 IC to be close to ambient room temperature (~25oC). When entering DFU mode the STM32 executes its internal bootloader firmware. For USB communication the bootloader firmware needs to use the external crystal oscillator (HSE) for correct USB timing. Because the firmware does not have prior knowledge of the frequency of the external oscillator it must first calculate it. This is done by using the STM32’s intal RC oscillator (HSI, MSI) to calculate the frequency of the external crystal. However, the internal RC oscillator is sensitive to ambient temperature and if the device is too warm or too cold it can cause the internal oscillator to operate outside of its 1% tolerance and in turn cause and incorrect calculation of the external oscillator frequency. This results in incorrect USB timing causing the above error.
Note that this does not affect the device in normal running mode as the correct external crystal frequency is programmed into the users application.
If you are experiencing this issue and the device may be in an environment where it could be too hot or too cold, try entering DFU mode again when the device is at a temperature closer to 25oC. For example, if the device is too cold try warming it slightly with your finger.
Taken from ST Microelectronics website:
Also see section 3.1 page 21 of application note AN2606 for more information.For STM32 devices embedding bootloader using the DFU/CAN interface in which the external clock source (HSE) is required for DFU/CAN operations, the detection of the HSE value is done dynamically by the bootloader firmware and is based on the internal oscillator clock (HSI, MSI)."
If the internal oscillator precision is altered above the tolerance band (1% around the theoretical value) due to temperature or other conditions, then the bootloader might calculate a wrong HSE frequency value. Wrong HSE value is then used for calculation of PLL parameters. That make MCU and MCU peripheral work with unexpected frequency. In case the bootloader DFU/CAN interfaces are used, incorrect communication frequency is used and in case of DFU, USB host is not able to communicate with such device, which cannot be connected.
Libraries, example code, and diagrams are provided as an additional free service by Hobby Components and are not sold as part of this product. We do no provide any guarantees or warranties as to their accuracy or fitness for purpose.
Descriptions and diagrams on this page are copyright Hobby Components Ltd and may not be reproduced without permission.