AnsweredAssumed Answered

Support for "repeated start" in STM32 HAL I2C library

Question asked by Mike Duffy on Feb 10, 2015
Latest reply on Apr 22, 2015 by David Wheeler
I am working with a slave I2C device (Kionix KX022 acccelerometer)  which uses a "repeated start" mechanism to send data requested by the master (STM32F405), e.g. to read two bytes of data (from register N and register N+1) the following sequence

Master                   Slave
---------------------    ------------------------
START
Slave Address + Write
                         ACK
N (starting register)
                         ACK
START (repeat)
Slave Address + Read
                         ACK
                         Data
ACK
                         Data
NACK
STOP


It appears the STM32F4xx HAL I2C library does not support this directly, since HAL_I2C_Master_Transmit() sends STOP after the data.

I just want to confirm this before writing some code (i.e. gluing together the HAL_I2C_Master_Transmit() and HAL_I2C_Master_Recieve() functions and removing the intervening STOP).

Thanks in advance,
Mike

Outcomes