Currently I use a STM32F439. I have a demand to increase the speed of I2C above 400kHz. Is this possible? If not is there a STM32F/L4 controller that is pin-2-pin compatible that can be used instead?
Bus capacitance also limits I2C bus speed.
But SDIO can reach 25MHz, and even 50MHz in some devices.
Dear Chang, SDIO is "SPI" with a twitch and not I2C.
>>Bus capacitance also limits I2C bus speed.
Yes, the capacitive loading will be a major factor in the rising edge of the I2C signals. A stronger (smaller, more aggressive) pull-up may help there.
I would expect the I2C on the F4 could get to 1MHz and beyond. Here you'd want short distance, single board.
Well, I did some checking using the CUBE software and found out the device only allows for normal and fast mode being 100kHz and 400kHz. AN4235 of STM talks about fast mode plus for the F0 and F3. After careful checking the datasheets I came to the conclusion that the STM32F4xx line DOES NOT support the fast mode plus.
So that's it :-(
Most others like 32L4, F0, F3 support Fast Mode Plus.... Time to change to a different family for the next design...
Check the STM32 reference manual for the chosen part. Some I2C can go over 400kHz, usually when all slaves are on the same board (no connector, no wires). The quality of the signal (speed, slewrate, capacitance/pull-up) must be tuned. Also remember ALL slaves should be compatible with higher speed. The highest speed is defined by the slowest slave's. Going beyond 400kHz requires sending a special command to slaves. Make sure they are designed for it.
However, before going to the brute force of speeding up, ask yourself if the communication done between MCU and slaves is optimal (are you using autoincrement multi-byte block transfer? some slaves have FIFO for bigger block transfer)....
Thanks for the remarks, and yes the remarks are all very very true. I think I have to rephrase my question:
The I2C spec has been upgraded over the years from 100kHz to 400kHz (fast mode) and nowadays you can go to speeds over 3MHz. What I specifically look for is the fast speed + mode, being 1MHz or above. Some controller may have this, some don't. I was wondering if the F4xx series do support the "fast speed +" mode of 1MHz? Or when it is limited by design to 400kHz max, if there is a (pin) equivalent processor that does... Target processor used is the STM32F437VIT6 to be precise (not the 439 as I mentioned in the original question).
Hi roland van straten,
I was wondering if the F4xx series do support the "fast speed +" mode of 1MHz?
Yes there are some STM32F4 devices embedding I2C that support fast mode plus mode (called I2CFMP). You have to refer to new devices likes STM32F410, STM32F412, STM32F413...
Retrieving data ...