2010-04-06 12:31 AM
First steps with STM32 / designing a development PCB with USB bootloading
2011-05-17 04:46 AM
I want to avoid buying a commercial development PCB, as stated above. They are expensive (for example, €30 for stm32-H103 from olimex - which is nothing more than a breakout board with header pins and a usb + jtag connector), and I do not need high quality just for testing (dual layers, silkscreen, soldermask, etc). Second, I have all components and tools to make a PCB here, so it's really not worth the cost. Last, commercial development boards are made with just that in mind - development. They are big, ugly, and aren't design to be expanded or used in future designs (easily) - plus I'd still need to design a PCB at some point. Not that I'm saying they aren't useful for some, I just find them too expensive for what they offer, plus, I prefer breadboarding and hooking up wires for experimenting.
Anyway, what I want to know is what I need to do to make a STM chip programmable over USB/DFU. a) As far as I understood from the datasheets, the bootloader is written at fabrication, so I assume I can skip the need to build a JTAG programmer and put a JTAG connector onboard. Is this correct? Can new chips be programmed directly over USB without the need of burning a bootloader first? b) Does the need for BOOT0/BOOT1 signals still exists over USB/DFU programming? How is this implemented? As I understood it, if the chip starts with USB disconnected, it goes into application mode, if it resets with USB connected, it starts in programming mode. c) What special precautions do I need to take when compiling code to be loaded over USB/DFU? d) Can code loaded over USB/DFU cover the whole flash range? Thanks.2011-05-17 04:46 AM
As a
first
step, I would recommend that you obtain a ready-made kit - that way you get known-good hardware with examples designed and documented for that specific hardware. Once you have gained basic familiarity with the chip on this hardware, then you can move on to your own hardware. Then, if things don't work, you can go back to the devkit for reference...