/**
  @addtogroup MDR32FxQI_I2C_Slave I2C Slave example for MDR32FxQI (K1986VE92xI)
  @latexonly
  @verbatim
  ******************** (C) COPYRIGHT 2026 Milandr ******************************
  * @file    readme.txt
  * @author  Milandr Application Team
  * @version V0.1.0
  * @date    30/06/2026
  * @brief   Description of the I2C Slave Example.
  ******************************************************************************
  * THE PRESENT FIRMWARE IS FOR GUIDANCE ONLY. IT AIMS AT PROVIDING CUSTOMERS
  * WITH CODING INFORMATION REGARDING MILANDR'S PRODUCTS IN ORDER TO FACILITATE
  * THE USE AND SAVE TIME. MILANDR SHALL NOT BE HELD LIABLE FOR ANY
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES RESULTING
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR A USE MADE BY CUSTOMERS OF THE
  * CODING INFORMATION CONTAINED HEREIN IN THEIR PRODUCTS.
  ******************************************************************************
  @endverbatim
  @endlatexonly

@par Example Description

This example demonstrates I2C Slave operation with several virtual devices on a single
I2C bus:

- EEPROM0 at address 0x50 emulates a 256-byte EEPROM memory.
  The device operates using the standard callback-based I2C_Slave driver interface.

- EEPROM1 at address 0x51 emulates a 256-byte EEPROM memory.
  The device operates using low-level user handlers of the I2C_Slave driver.

All I2C virtual devices operate with 7-bit addressing and support operation in standard (100 kHz) and fast (400 kHz) modes.

The microcontroller frequency is set to 80 MHz using HSE (8 MHz) and PLL (multiplication by 10).

EEPROM devices use the EEPROM_Emul driver, which emulates EEPROM operation in Flash memory.
When EEPROM devices start, data is loaded from FLASH into a RAM buffer. Write operations update the RAM buffer and
are saved back on the STOP condition.

@par Directory contents:

    - main.c                        Main program
    - i2c_slave_config.h            I2C slave library configuration
    - i2c_eeprom/i2c_eeprom.c       Common I2C EEPROM emulation
    - i2c_eeprom/i2c_eeprom_0.c     I2C EEPROM0 initialization and standard callbacks
    - i2c_eeprom/i2c_eeprom_1.c     I2C EEPROM1 initialization and low-level handlers
    - Library/CMSIS                 MDR32FxQI CMSIS library
    - Library/SPL                   MDR32FxQI SPL library
    - Library/I2C_Slave/            I2C slave library (port for MDR32FxQI)
    - Library/EEPROM_Emul/          Modified STM EEPROM emulator (port for MDR32FxQI)

@par Hardware and Software environment:

    - This example runs on the K1986VE92xI (MDR32FxQI) microcontroller.
    - Use the Keil uVision IDE with the "Arm Compiler" and the "Software pack for Keil MDK 5 for MCU K1986VE92QI, K1986VE92FI, K1986VE92F1I,
      K1986VE94GI, K1986VE1QI, K1986VE1FI, K1986VE1GI, K1901VC1QI".
      Select the target microcontroller in "Options for Target -> Device".
    - IMPORTANT:
      - The EEPROM controller access functions are placed in RAM (section "EXECUTABLE_MEMORY_SECTION").
        Select the ".\RTE\Device\K1986VE92xI\K1986VE9xI.sct" file in "Options for Target -> Linker -> Scatter File".
      - To use "I2C_SL_OPT_REGISTER_VARIABLES", set "-ffixed-r10 -ffixed-r11" in "Options for Target -> Device -> Misc Controls".
    - Connect the I2C master device to the board: SCL - PC0, SDA - PC1. Pull-up resistors must be present on the SCL and SDA lines.

@par How to Use

To launch the example, perform the following steps:
    - Create a Keil uVision project for the target microcontroller.
    - Add main.c, i2c_slave_config.h, the i2c_eeprom sources, and the I2C_Slave, EEPROM_Emul, SPL (BKP, EEPROM, PORT, RST_CLK, UTILS)
      libraries to the project, and add the corresponding include paths.
    - Compile the project and run it on the target.

 * <h3><center>&copy; COPYRIGHT 2026 Milandr</center></h3>
 */
