Підключаємо пам'ять 24lc16 до мікроконтролеру avr avr devices

Підключаємо пам'ять 24lc16 до мікроконтролеру avr avr devices

Підключення до контролера.
Підключити пам'ять до МК дуже просто. З обв'язки будуть потрібні тільки пара резисторів опором близько 4.7 кОм.

Підключаємо пам'ять 24lc16 до мікроконтролеру avr avr devices

Для роботи з пам'яттю була розроблена бібліотека реалізує наступні функції:

i2c_init - налаштовує швидкість тактовихімпульсів йдуть по лінії SCL.

Мікросхема 24LC16 підтримує частоту до 400 кГц. Розрахувати частоту можна так:

CPU Clock frequency - частота на якій працює мікроконтролер

TWBR - число записане в однойменний регістр.

TWPS - переддільник. Значення предделителя задаються битами TWPS1 і TWPS0 в регістрі TWSR

Для контролера Atmega 32 справедлива така таблиця:

Підключаємо пам'ять 24lc16 до мікроконтролеру avr avr devices

i2c_stop - відсилає стопову посилку

i2c_send - відсилає байт

i2c_recive - приймає байт

i2c_recive_last - приймає останній байт. Відмінність від попередньої функції полягає в тому, що коли байт прийнятий, мікроконтролер НЕ надсилає біт підтвердження. Якщо при прийомі останнього байта використовувати i2c_recive то лінія SDA залишиться притиснутою до землі.

Запис даних в мікросхему пам'яті

Підключаємо пам'ять 24lc16 до мікроконтролеру avr avr devices

Біти A, B, C служать для вибору блоку пам'яті. Блоків пам'яті в мікросхемі 8 штук по 256 байт кожен. Відповідно біти ABC приймають значення від 000 до 111.

Підключаємо пам'ять 24lc16 до мікроконтролеру avr avr devices

Для того щоб записати в мікросхему байт потрібно виконати наступну послідовність дій:

Приклад. Потрібно записати першу сторінку блоку 0.

Читання даних з мікросхеми
Із записом ніби розібралися, тепер приступимо до читання. Щоб прочитати байт потрібно зробити наступне:

Ну і наостанок прикладаю осциллограмму:

Підключаємо пам'ять 24lc16 до мікроконтролеру avr avr devices

P.S. для розуміння роботи шини рекомендую ознайомиться зі статтею Di Halt'a

Схожі статті