0% found this document useful (0 votes)
47 views

ES Library Guide (I2c - Memory) - en

The document provides an overview and guide for using the i2c_memory library. It describes basic settings for configuring the memory chip and I2C communication. Functions are provided for initializing the memory, reading and writing single/multiple bytes, erasing memory regions, and checking memory status. Requirements and supported microcontrollers/memories are also outlined.

Uploaded by

Ali Naderi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
47 views

ES Library Guide (I2c - Memory) - en

The document provides an overview and guide for using the i2c_memory library. It describes basic settings for configuring the memory chip and I2C communication. Functions are provided for initializing the memory, reading and writing single/multiple bytes, erasing memory regions, and checking memory status. Requirements and supported microcontrollers/memories are also outlined.

Uploaded by

Ali Naderi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Embedded System Library Guide

)i2c_memory Library(

Last Modified Date:

Wednesday, July 10, 2019

Code author: Majid Derhambakhsh

GitHub: Majid-Derhambakhsh

E-mail
1
Contents

i2c_memory Library guide …………………………………………………………………………………….………………… 3

Basic settings

Functions

Requirements …………………………………………………………………………………………………………………………. 7

Important tips ……………………………………………………………………………………………………………................. 7

Error & Warning's …………………………………………………………………………………………………………………… 8

Supported memories ……………………………………………………………………………………………………………… 9

Supported microcontroller's ………………………………………………………………………………………………… 10

Version history ……………………………………………………………………………………………………………………… 11


2
Guide

To use this library, first add the c file to the program and include the following header.

#include "i2c_memory.h"

Memory Configuration

Follow the steps below to set up your library:

1. First open the file i2c_memory_conf.h:

Edit the following values to adjust the IC code used and its address pins:

#define _AT24C04

#define _MEMORY_A0_PIN_STATE 0
#define _MEMORY_A1_PIN_STATE 0
#define _MEMORY_A2_PIN_STATE 0

-- Used IC number (available in the supported memory section).

-- Logic state of memory address pins (0 or 1).

Edit the following values to config Write Protect pin:

#define _WP_DISABLE

#define _WRITE_PROTECT_PORT GPIOx


#define _WRITE_PROTECT_PIN 0

-- For disable Write Protection (comment it for activation).

-- Connected port & pin to Write Protect.

Allowed value for port: GPIOx in ARM Or PORTx in AVR.

Allowed value for pin: 0 ~ Number of pins supported per port.

I2C Configuration

Follow the steps below to set up I2C:


3
1. I2C in AVR:

First open the i2c_unit_conf.h file from the I2C_UNIT folder and edit the values below.

#define _F_SCL 100000UL

#define _PRESCALER _PRE1

-- I2C Frequency.

-- I2C Unit prescaler (If not correct operation, edit with the values in Table 1-2):

ID Value
_PRE1 1
_PRE4 4
_PRE16 16
_PRE64 64
Table 1-2

Tip: Add i2c_unit.c & gpio_unit.c in AVR compilers.

2. I2C in ARM:

STM32 Series:

First open the stm32_i2c _conf.h file from the STM32_I2C folder and edit the values below.

#define STM32F1

#define _CONNECTED_I2C hi2c1

#define _MEM_DEF_VAL_BUFF_LENGTH 50

-- Microcontroller Series.

-- Structure that contains the configuration information for the specified I2C.

-- Buffer size to clear memory (longer length more speed).

Tip: Add stm32_i2c.c in ARM compilers.


4
Functions
I2C_Memory_Init

Function name void I2C_Memory_Init(void)

Function description This function is used to initialize memory.

Parameters -

Return values -

Example:

• I2C_Memory_Init();

I2C_MemoryIsReady

Function name uint8_t I2C_MemoryIsReady(uint16_t time_out)

Function description This function is used to check memory availability.

Parameters

• time_out: Timeout value in millisecond.

Return values

• AVR: _STAT_OK / _STAT_ERROR


• ARM: HAL_OK / HAL_ERROR

Example:

• device_status = I2C_MemoryIsReady(100);

I2C_Memory_SingleWrite

Function name uint8_t I2C_Memory_SingleWrite(uint32_t address, uint8_t udata, uint16_t time_out)

Function description This function is used to write a byte of data to memory.

Parameters

• address: Memory address for write data.


• udata: Data for write in memory.
• time_out: Timeout value in millisecond.

Return values

• _MEM_SIZE_ERROR
• AVR: _STAT_OK / _STAT_ERROR
• ARM: HAL_OK / HAL_ERROR

Example:

• com_status = I2C_Memory_SingleWrite(0, 'A', 50);


5
I2C_Memory_BurstWrite

Function name uint8_t I2C_Memory_BurstWrite(uint32_t address, uint8_t *udata, uint32_t size, uint16_t time_out)

Function description This function is used to write a string of data to memory.

Parameters

• address: Memory address for write data.


• udata: Data's for write in memory.
• size: Length of data.
• time_out: Timeout value in millisecond.

Return values

• _MEM_SIZE_ERROR
• AVR: _STAT_OK / _STAT_ERROR
• ARM: HAL_OK / HAL_ERROR

Example:

• com_status = I2C_Memory_BurstWrite(0, "Hello", 5, 50);

I2C_Memory_SingleRead

Function name uint8_t I2C_Memory_SingleRead(uint32_t address, uint8_t *udata, uint16_t time_out)

Function description This function is used to read a byte of data from memory.

Parameters

• address: Memory address for reading data.


• udata: Pointer to the variable to store the data received from memory.
• time_out: Timeout value in millisecond.

Return values

• _MEM_SIZE_ERROR
• AVR: _STAT_OK / _STAT_ERROR
• ARM: HAL_OK / HAL_ERROR

Example:

• com_status = I2C_Memory_SingleRead(0, &my_data, 50);

I2C_Memory_BurstRead

Function name uint8_t I2C_Memory_BurstRead(uint32_t address, uint8_t *udata, uint32_t size, uint16_t time_out)

Function description This function is used to read a data string from memory.

Parameters

• address: Memory address for reading data.


• udata: Pointer to the variable to store the data received from memory.
• size: Length of data.
• time_out: Timeout value in millisecond.
6
Return values

• _MEM_SIZE_ERROR
• AVR: _STAT_OK / _STAT_ERROR
• ARM: HAL_OK / HAL_ERROR

Example:

• com_status = I2C_Memory_BurstRead(12, received_data_array, 10, 50);

I2C_Memory_Erase

Function name uint8_t I2C_Memory_Erase(uint32_t address, uint32_t quantity, uint16_t time_out)

Function description This function is used to read a data string from memory.

Parameters

• address: Memory address for reading data.


• quantity: Memory length to clear.
• time_out: Timeout value in millisecond.

Return values

• _MEM_SIZE_ERROR
• AVR: _STAT_OK / _STAT_ERROR
• ARM: HAL_OK / HAL_ERROR

Example:

• com_status = I2C_Memory_Erase(0, 65000, 50);

Requirement

• i2c_unit & gpio_unit drivers for AVR microcontrollers.

• HAL & stm32_i2c drivers for ARM microcontrollers STM32 series.

Important tips

• All commands and settings begin with _.


• All functions are written as Camel Case.
• The functions and codes used in all microcontrollers are the same.
7
Error & Warning's

Error's:

• Chip or I2C Library not supported: This error occurs when the microcontroller or its

library not supported.

• Memory is not selected or not supported: This error occurs when the memory is not correctly

specified or not supported by the library.

Warning's:

• Your Ax Pin state in not correct: This warning appears when the address pins

not set correctly.


8
Supported memories

All 24Cxx family memories:

AT24C01 – AT24C02 – AT24C04 – AT24C08 – AT24C16 – AT24C32 – AT24C64 – AT24C128 – AT24C256 – AT24C512
AT24C1024

Memory blocks

Speed of data writing

Memory Writing Speed Using 72MHz ARM Microcontroller and 400KHz


i2c Frequency

0.8s

AT24C512 (65535 Byte)


AT24C04 (512 Byte)

16s
9
Supported microcontroller's

ATmega & ATtiny series of AVR Microcontroller's with i2c_unit & gpio_unit driver's

Codevision and GNUC compilers such as AtmelStudio

All STM32 series of ARM Microcontroller's with HAL & stm32_i2c driver's

All ARM Compiler's


10
Version history

Version 0.0.1

Fix: _MEM_SIZE_ERROR in Capacities greater than 256Kb

--------------------------------------------------------------------------------------------------------------------------------------

Version 0.0.0

Stable and tested version

--------------------------------------------------------------------------------------------------------------------------------------
11

You might also like