iic: xiic_low_level_dynamic_eeprom_example.c File Reference

| iic Xilinx SDK Drivers API Documentation

- Overview
- Data Structures
- APIs
- File List
- Examples

Functions
xiic_low_level_dynamic_eeprom_example.c File Reference

## Overview

This file consists of a polled mode design example which uses the Xilinx IIC device in dynamic mode and low-level driver to exercise the EEPROM.

The XIic_DynSend() API is used to transmit the data and XIic_DynRecv() API is used to receive the data.

The example is tested on ML300/ML310/ML403/ML501/ML507/ML510 Xilinx boards.

The ML310/ML410/ML510 boards have a on-board 64 Kb serial IIC EEPROM (Microchip 24LC64A). The WP pin of the IIC EEPROM is hardwired to ground on this board.

The ML300 board has an on-board 32 Kb serial IIC EEPROM(Microchip 24LC32A). The WP pin of the IIC EEPROM has to be connected to ground for this example. The WP is connected to pin Y3 of the FPGA.

The ML403 board has an on-board 4 Kb serial IIC EEPROM(Microchip 24LC04A). The WP pin of the IIC EEPROM is hardwired to ground on this board.

The ML501/ML505/ML507/ML605/SP601/SP605 boards have an on-board 8 Kb serial IIC EEPROM(STM M24C08). The WP pin of the IIC EEPROM is hardwired to ground on these boards.

The AddressType for ML300/ML310/ML410/ML510 boards should be u16 as the address pointer in the on board EEPROM is 2 bytes.

The AddressType for ML403/ML501/ML505/ML507/ML605/SP601/SP605 boards should be u8 as the address pointer for the on board EEPROM is 1 byte.

The 7 bit IIC Slave address of the IIC EEPROM on the ML300/ML310/ML410/ML403/ ML501/ML505/ML507/ML510 boards is 0x50. The 7 bit IIC Slave address of the IIC EEPROM on the ML605/SP601/SP605 boards is 0x54. Refer to the User Guide's of the respective boards for further information about the IIC slave address of IIC EEPROM's.

The define EEPROM_ADDRESS in this file needs to be changed depending on the board on which this example is to be run.

This code assumes that no Operating System is being used.

Note

None.

    MODIFICATION HISTORY:

    Ver   Who  Date     Changes

    1.00a mta  03/20/06 Created.
    2.00a sdm  09/22/09 Converted all register accesses to 32 bit access.
    2.01a ktn  03/17/10 Updated the information about the EEPROM's used on
                  ML605/SP601/SP605 boards. Updated the example so that it
                  can be used to access the entire IIC EEPROM for devices
                  like M24C04/M24C08 that use LSB bits of the IIC device
                  select code (IIC slave address) to specify the higher
                  address bits of the EEPROM internal address.
    3.3   sk    06/18/16 checked bytes written with the input byte count and
                         returns error if the value is not matched.
    3.4   ms   01/23/17 Added xil_printf statement in main function to
                        ensure that "Successfully ran" and "Failed" strings
                        are available in all examples. This is a fix for
                        CR-965028.
          ms   04/05/17 Modified Comment lines in functions to
                        recognize it as documentation block for doxygen
                        generation.

## Functions
u8 | EepromWriteByte (u8 *BufferPtr, u8 ByteCount)
| This function writes a buffer of bytes to the IIC serial EEPROM. More...
int | main (void)
| Main function to call the low level Dynamic EEPROM example. More...

## Function Documentation

u8 EepromWriteByte | ( | u8 * | BufferPtr,
|  | u8 | ByteCount
| ) |  |

This function writes a buffer of bytes to the IIC serial EEPROM.

Parameters

  BufferPtr | contains the address of the data to write.
  ByteCount | contains the number of bytes in the buffer to be written. Note that this should not exceed the page size of the EEPROM as noted by the constant PAGE_SIZE.

Returns
  The number of bytes written, a value less than that which was specified as an input indicates an error.

Note
  one.

References XIic_DynSend(), and XIIC_STOP.

Referenced by ReadWriteVerify().

int main | ( | void |  | ) |

Main function to call the low level Dynamic EEPROM example.

Parameters

  None. |

Returns
  XST_SUCCESS if successful else XST_FAILURE.

Note
  None.