реклама на сайте
подробности

 
 
> Аппаратный I2C в LPC2124
MixEr
сообщение Aug 17 2006, 12:38
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 7-03-06
Из: Самара
Пользователь №: 15 040



помогите пожалуйста: надо написать класс I2C для общения с EEPROM.
Смотрел апноты, техноты и даташит. В результете родилось вот это:

void TI2C::Transfer(unsigned char Addr, unsigned char Data)
{
DATA = Data;
I2ADR = Addr;
I2CONCLR = 0xFF;
I2CONSET = 0x40;
I2CONSET = 0x20;
busy = true;
while(busy)
{
};
I2CONSET = 0x10;
}

void TI2C::I2C_ISR(void)
{
switch(I2STAT)
{

case 0x08: //Условие СТАРТ было передано
I2DAT = WRITE_ROM;
I2CONCLR = 0x28;
break;
case 0x10: //Повторное условие СТАРТ было передано
break;
case 0x18: //Slave-адрес и флаг записи были переданы, АСК получен
I2DAT = I2ADR; //Записываем первый байт данных
adr_transmit = true; //Флаг передачи адреса
break;
case 0x20: //Slave-адрес и флаг записи были переданы, АСК не получен
I2DAT = WRITE_ROM; //Повторная передача
break;
case 0x28: //Байт был передан, АСК получен
if(count)
{
I2DAT = 0xaa;
count--;
};
if(!count)
{
I2CONSET = 0x10; //условие СТОП
};
busy = false;
break;
case 0x30: //Байт был передан, АСК не получен
break;

default:
break;
}

I2CONCLR = 0x08;
VICVectAddr = 0x00;
}
это только для записи по I2C в EEPROM байта данных по адресу WORD_ADDRESS.
Как я понимаю посылка должна состоять из 3 байт DEVICE_ADDRESS+WORD_ADDRESS+DATA_BYTE?
Если в case 0x28: оставить только I2CONSET = 0x10; то все работает ( на экране осцилографа видна вся посылка вместе условиями СТАРТ и СТОП), но пересылается только DEVICE_ADDRESS+WORD_ADDRESS. Если оставить как есть, то посылку не видно, никаких СТАРТ и СТОП, а высвечивается только DATA_BYTE. Как заставить отослать все три байта? Подскажите плиз....


--------------------
Бесплатный файлообменник с выгодой для тебя...
http://depositfiles.com/signup.php?ref=ankudin-off
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01333 секунд с 7
ELECTRONIX ©2004-2016