Предыдущая Следующая

33.8. Интерфейс обмена с внешней памятью через 12С

В приведенном ниже проекте, демонстрируется обмен по шине 12С между микроконтроллером LPC2129 и внешним устройством, имеющим 12С-совмес-тимый интерфейс. В качестве такого устройства выбрана микросхема энергонезависимой многократно программируемой памяти с последовательным доступом I2C EEPROM 24LC64 производства фирмы Microchip [13]. Микросхемы памяти указанного типа широко распространены и поставляются на рынок несколькими фирмами-производителями (Atmel, Microchip, STM и т. д.). Внутренняя память 24LC64 организована в виде массива, состоящего из 8192 8-битных ячеек хранения данных и допускающего побайтное чтение/стирание/за-пись. В реальных проектах на основе микроконтроллеров LPC2000, такое устройство памяти удобно использовать для хранения различных часто изменяемых пользователем параметров (пользовательских настроек, калибровочных констант, архивных записей и т. д.), поскольку оно имеет весьма значительный ресурс по стиранию/записи (типовое значение 1000000 циклов) по сравнению с ресурсом встроенной Flash-памяти микроконтроллера LPC2000 (типовое значение 10000 циклов).

Проект, все файлы которого находятся в каталоге I2C, разработан с целью продемонстрировать, как происходит обмен между микроконтроллером LPC2129 и микросхемой памяти 24LC64, с использованием аппаратного модуля интерфейса I2C LPC2129, в операционных режимах «ведущий передатчик» и «ведущий приемник». Функции и заголовки, относящиеся к модулю 12С LPC2129, содержатся в файлах i2c.c и i2c.h, а функции и заголовки, относящиеся к организации обмена через 12С с 24LC64 — в файлах 24LC64.C и 24LC64.h. В файле main.c находится основная программа обмена через 12С с 24LC64. Все перечисленные файлы программ приведены ниже.

Файл i2c.c

//------------------------------------------------------------------------

//ПО обслуживания модуля I2C

//------------------------------------------------------------------------

tinclude "hardware.h" // подключение специальных заголовков и определений tinclude "i2c.h" /У подключение специальных заголовков и определений

//Функция инициализации модуля I2C void l2Cinit() {

PINSEL0_bit.P0_2 = 0x01; //линию Р0.2 сделать линией SCL PINSEL0_bit.Р0_3 = 0x01; //линию РО.З сделать линией SDA I2SCLH = 48; //задание длительности цикла SPI в циклах PCLK I2SCLL = 48; //58.9824'МГц/4/(48+48) = 0.1536 МГц (частота SPI) }

//------------------------------------------------------------------------

Файл i2c.h

//------------------------------------------------------------------------

//Заголовки и определения обслуживания модуля I2C

//------------------------------------------------------------------------

tinclude "hardware.h" // подключение специальных заголовков и определений

//Объявление функции инициализации void l2Cinit();


Предыдущая Следующая



НА ГЛАВНУЮ | ЧТО ТАКОЕ PIC ? | ПРОГРАММАТОР | ПРОЕКТЫ | СТАТЬИ | ССЫЛКИ | КАРТА САЙТА
Hosted by uCoz