2022-10-08 01:36 AM
Hello,
is it possible to swap some address pins or is it necessary to follow up the pin given in the datasheet?
Lets say i need to change that FMC_A0 does not go to PF0, it should be connected to PF1, and FMC_A1 connected to PF0.
And for data i need to swap some signals, FMC_D0 to PD15 instead of PD14 and FMC_D1 to PD14.
At the IOC File i can not choose other FMC pins at the MCU.
Is it possible to change it in the software that it still work when i swap some signals or is it impossible?
Thank you very much.
Solved! Go to Solution.
2022-10-08 11:41 PM
If you’re only using the FMC for static RAM then you can do limited swapping.
Data pins may be swapped provided you keep things in the correct byte (so D3 may swap with D5 but not D8).
This does not work if “commands�? ever go down the data bus - as the commands will be misinterpreted by the memory chip.
Low address pins may only be swapped if you never use “burst�? modes - again fine for simple static RAM but not SDRAM. I don’t know enough about burst modes to be able to comment on high address pins - if a burst is always within a single “page�? then it might be possible to swap address pins that select which page, but not those that affect the order of bytes within a page.
Is this for a pcb you’ve already had manufactured, or just to simplify the layout of one you’re designing. If it is not yet made, then I strongly recommend that you do get the pins in the right order. Struggling here could be a sign that you are trying to use too few layers. Signals are very fast so you do need ground planes and a four layer pcb is a bare minimum. I would be more comfortable with a 6 layer pcb with FMC.
Hope this helps,
Danish
2022-10-08 10:46 AM
There are now almost 1000 derivatives with FMC, so it is always a good idea to be more specific about the derivative in question.
Not all peripheral functions have alternative pin functions, e.g. these lines, which unfortunately cannot be placed on alternative pins. In the data sheet of the respective STM32, the alternative pin functions are listed if there are several options possible, so you would find them there by simply searching.
Does it answer your question?
Regards
/Peter
2022-10-08 11:41 PM
If you’re only using the FMC for static RAM then you can do limited swapping.
Data pins may be swapped provided you keep things in the correct byte (so D3 may swap with D5 but not D8).
This does not work if “commands�? ever go down the data bus - as the commands will be misinterpreted by the memory chip.
Low address pins may only be swapped if you never use “burst�? modes - again fine for simple static RAM but not SDRAM. I don’t know enough about burst modes to be able to comment on high address pins - if a burst is always within a single “page�? then it might be possible to swap address pins that select which page, but not those that affect the order of bytes within a page.
Is this for a pcb you’ve already had manufactured, or just to simplify the layout of one you’re designing. If it is not yet made, then I strongly recommend that you do get the pins in the right order. Struggling here could be a sign that you are trying to use too few layers. Signals are very fast so you do need ground planes and a four layer pcb is a bare minimum. I would be more comfortable with a 6 layer pcb with FMC.
Hope this helps,
Danish
2022-10-09 12:30 AM
Thank you very much.
sorry for not beeing detailed enough.
My PCB designer told me that he needs to swap signals, A0 to A1, A2 to A0.
MCU: STM32F779AIY6TR
SDRAM: MT48LC4M32B2B5
But as more is i try to find that is not possible. So we need 8 layer instead of 6 layer for the PCB which makes it a lot more expensive.
2022-10-09 12:32 AM
Thank you very much Danish,
yes, it is because of the pcb layer.
My pcb-designer asked for the option to swap so he can use 6 layer, but if not he would need 8 layer.
But i think that will not work, so we will follow your recommendation and just use the standard pins as it should be.