Keil Logo

ARM: STM32F4xx_DFP: problems with 3 byte reception in I2C master mode


Information in this knowledgebase article applies to:

  • CMSIS driver I2C_STM32F4xx.c version 2.3 (STM32F4xx_DFP version 2.5.0)

SYMPTOM

When I after a 2-byte master receive operation perform another master receive operation, that shall receive more than 2 bytes, e. g:

I2C1_MasterReceive (0x50, &buffer, 2, 0);
I2C1_MasterReceive (0x50, &buffer, 3, 0);

the driver fails to handle this correctly.

CAUSE

The driver has problems with 3 byte reception and I2C_CR1_POS bit handling in master mode.

RESOLUTION

To correct this, modifications in the I2C_EV_IRQHandler() interrupt handler are required.
An updated driver 2.4 is attached to this article. Put that driver in the pack folder:

C:\Keil\ARM\Pack\Keil\STM32F4xx_DFP\2.5.0\CMSIS\Driver\I2C_STM32F4xx.c

after making a backup of the original file and removing the write protection from it. Then build the project again.

STM32F4xx_DFP versions released after version 2.5.0 will also contain this or an even newer driver, that corrects the problem.

ATTACHED FILES

Request the files attached to this knowledgebase article.

FORUM THREADS

The following Discussion Forum threads may provide information related to this topic.

Last Reviewed: Monday, July 6, 2015


Did this article provide the answer you needed?
 
Yes
No
Not Sure
 
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.