cancel
Showing results for 
Search instead for 
Did you mean: 

FSMC Burst

renato1
Associate II
Posted on January 22, 2014 at 17:05

Hello, everyone!

I'm trying to use the FSMC synchronous burst mode on a STM32F407 and I'm not sure how to activate the burst. Whenever I write a 16 bit word in the Bank, the chip generates 4 clocks for the address and one clock for the data. I want to transmit 360 words in a single burst (only 4 clocks for the address and another 360 clocks for the data).

So far, the only way I found to transmit more than 1 word in a burst is using the DMA burst, but it's limited to 128 bits (because of the FIFO). Therefore, I can only transmit 8 words in a burst, using 12 clocks. So each 8 words uses 12 clocks, resulting in 540 clocks. If I could use one burst for the 360 words, it would only take 364 clocks.

Does anyone know how to generate a FSMC burst transfer with more than 8 words?

Thanks in advance.

#stm32-fsmc-burst-synchronous-dma
1 REPLY 1
troy1818
Senior
Posted on January 25, 2014 at 23:37

Hi, 

I am a bit confused about your problem.

uint16_t byte = 0xAA;

*((volatile uint16_t *)(base address)) = byte;

As far as I know the code above will result in 2 write cycles on FSMC bus, not one. If you write again it will generate 2 more write cycles. If you are using the address lines for FSMC these will reflect the address that you write to on stm32. I am unsure what you mean by the chip generates 4 clocks for address? To my knowledge it will not do this. Do you have any code to show, perhaps I misunderstand something here.

Regards,

rygelxvi