2025-08-19 1:11 AM - last edited on 2025-08-19 1:31 AM by mƎALLEm
Bonjour à tous, cela fait une semaine que je dois développer une API pour la mémoire sécurisée at88sc12816c
De chez Atmel mais trés malheuresement j’arrive paz à établir la communication entre ma carte maitre qui est un stm32f412zgt6 et la mémoire eeprom.
De mon côté, j’ai bien compris le fonctionnement de la mémoire mais sauf que dans ce dernier les adresses sont diverses, j’explique par exemple pour faire une écriture
dans une UserZone c’est B0 et cet octet ce termine par 0 ce qui est correctement compris par la HAL pour faire de l’écriture en i2c
mais dans le cas d’une lecture aussi par exemple on l’adresse qui se termine encore 0, alros que dans un protocole i2c standard pour lire le dernier bit de l’octet d’adresse doit être
à 1. Et je pense que c’est exactement ce que la HAL ne comprend pas à son niveau. J’ai vraiment besoin d’aide pour avancer
2025-08-19 7:32 AM
Do you think I can modify the HAL_I2C_Master_Transmit function so that it does a transmit_receive, if so how?
2025-08-19 7:48 AM
Hello @Abd_karim
Since there is no stop or restart condition between sending the command and reading the data, so you may use the sequential HAL I2C API
HAL_I2C_Master_Seq_Transmit_IT(&hi2c1, DEVICE_ADDR << 1, cmd, 4, I2C_FIRST_FRAME);
// Wait for transmit complete (implement callback or polling as needed)
// Start receive (with stop)
HAL_I2C_Master_Seq_Receive_IT(&hi2c1, DEVICE_ADDR << 1, data, 16, I2C_LAST_FRAME);
2025-08-25 11:51 PM
I am working on a stm32f412zgt6, when I use the HAL_I2C_Master_Transmit function I have a HAL_BUSY type error due to the following function, do you have any idea why?