Electronic – STM32F4 FSMC 8-bit data width with 10+ bit addressing

fsmcstm32

I'm planning to interface an FPGA to a STM32F29/439 via the FSMC (Flexible Static Memory Controller). To save pins I would like to use the address/data multiplexing feature. Thus according to the datasheet for 16-bit mode I have multiplexed signals AD[1..16] and control lines nADV, nWE, nOE and nEN.

Now I only need 8-bit data width but still need at least 10-bit wide addresses, leading to multiplexed signals AD[1...8], non-multiplexed high address bits A[9..10] plus usual control lines. Since this assymetric case is not mentioned explicitly in the datasheet I ask whether someone can share some experience.

Clarification: I'm using a STM32F429 but in general this applies to all STM32F4 with FSMC. I think that the NOR-Flash interface would be most appropriate but unfortunatley the datasheet only mentions 16-bit memory data size, albeit without saying that 8-bit mode is unavailable for NOR Flash.

Best Answer

Unless someone has specific experience that they're willing to share then I suspect you're going to have to just have to (as a crusty old electronics tech I used to work with liked to say) suck it and see.

I've successfully used an STM32F407's FSMC with separate 16-bit data, 16-bit address buses to interface to a Spartan-6. Both parts were BGA, so I covered my bases by attaching pretty much every FSMC control line to the FPGA as well. Along those lines, if you have spare I/O (and the FSMC pins aren't otherwise occupied) then I'd suggest wiring it to allow separated address and data buses.

One thing I should say is that I wasn't overly impressed with the blinding speed; iirc (without actually checking my STM32 code for the FSMC settings) I can read and write reliably at around 12MHz, versus 168MHz CPU speed. That's a lot faster than SPI would have been, but it's not exactly closely coupled.