Перейти к содержанию
    

Вопрос по I2C

и скажите пжл как должно быть. Связь PIC -> LC2408BT, сверху SCL, внизу SDA. Передаются идентификатор и направление передачи 0b10100000. Так вот в даташите вроде написано, что на каждый принятый байт микросхема LC24 должна отвечать ACK низкого уровня, чего в данном случае не наблюдается. WP на земле, питание 3 В, поменял микросхему, результат такой же. Как должен выглядеть ACK?

i2c.bmp

Изменено пользователем aanbor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нижнего импульса по середине шкалы - быть не должно, а так у Вас NACK, вместо ACK.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотел вставить рисунок схемы, чегой-то не получилось :(, вложил в файл. Может у меня в схеме подключения ошибка, почему не выставляется ACK? Все по даташиту делаю, микросхему менял, но не работает...

post-28642-1315815593_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

A0, A1, A2 у Вас точно на GND соединены?

Попробуйте по другим адресам постучаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так А0,А1,А2 -Not Connected, поэтому оставил их висячими, в корпусе SOT-23 их вообще нет.

Вы сами то какой корпус используете? Если не SOT-23 на GND их

 

И Вы ничего неперепутали с картинкой- это скорее чтение из памяти , а не запись

i2c.bmp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не SOT-23 на GND их
Да не используются они ни в одном корпусе. Эти биты используются для адресации внутри одного кристалла.

post-17095-1315828141_thumb.png

aanbor: показывайте код, в диаграмме проблем не видно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да не используются они ни в одном корпусе. Эти биты используются для адресации внутри одного кристалла.

Видел я DS, но не люблю висящие сигналы - к тому же это DS не запрещает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы сами то какой корпус используете? Если не SOT-23 на GND их

Корпус SOIC, пробовал с GND, результат тот же.

 

 

aanbor: показывайте код, в диаграмме проблем не видно.

I2C_Init();

while(1) // тестовый цикл

{

Flash_WR(0x0101,0x55);

Nop(); // здесь ставлю breakpoint

}

 

void I2C_Init(void) //инит I2C

{

I2C2CONbits.I2CEN=1; //включение модуля

I2C2CONbits.I2CSIDL=0; //модуль работает в IDLE режиме

I2C2CONbits.ACKEN=1; //ACK используется

I2C2BRG=200; //100 кГц

// I2C2BRG=0x030; //400 кГц

}

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

void I2C_Start(void) //I2C старт

{

I2C2CONbits.SEN=1; //запуск старта

while(I2C2CONbits.SEN); //ожидание завершения

}

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

void I2C_Stop(void) //I2C стоп

{

I2C2CONbits.PEN=1; //запуск стопа

while(I2C2CONbits.PEN); //ожидание завершения

}

 

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

void I2C_Wait(void) //ожидание завершения передачи

{

while(I2C2STATbits.TRSTAT); //ожидание завершения передачи

}

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

void Flash_WR(unsigned short Adr,unsigned char Dan) //запись в память

{

I2C_Start(); //I2C старт

I2C2TRN=0b10100000; //идентификатор и направление передачи

I2C_Wait(); //ожидание завершения передачи

I2C2TRN=Adr >> 8; //старшая часть адреса

I2C_Wait(); //ожидание завершения передачи

I2C2TRN=Adr & 0x00FF; //младшая часть адреса

I2C_Wait(); //ожидание завершения передачи

I2C2TRN=Dan; //данные

I2C_Wait(); //ожидание завершения передачи

I2C_Stop(); //I2C стоп

 

DelayMs(6); //время на запись

}

 

PIC32MX795F512L, Compiler C32

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И Вы ничего неперепутали с картинкой- это скорее чтение из памяти , а не запись

Ой ли, по-моему это Вы перепутали, чего это у Вас на картинке W/R стал 9ым битом, а ACK - 10ым?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ой ли, по-моему это Вы перепутали, чего это у Вас на картинке W/R стал 9ым битом, а ACK - 10ым?

Э...э, да Ваша правда , не правильно посчитал. Тогда точно - NACK

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

PIC32MX795F512L, Compiler C32
Ой, это не ко мне. Было предположение, что вы реализуете I2C "ногодрыжеством", а там есть одна распространенная ошибка. Здесь же контроллер обязан настраивать ноги в режим открытого стока.

Будем делать новые предположения.

Попробуйте увеличить время установки и удержания стартового условия Thd:sta и Tsu:sta (в даташите на микрочиповскую 24LC08B указано 600нс, но для большинства остальных 4/4.7мкс). И что за микросхема LC2408BT? Гугля такой не знает... Возможно у нее какие-то еще ограничения на времянку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что за микросхема LC2408BT? Гугля такой не знает... Возможно у нее какие-то еще ограничения на времянку.

Я тоже мучился , потом понял 24LC08BT , там на его фото правильный PN есть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Будем делать новые предположения.

Попробуйте увеличить время установки и удержания стартового условия Thd:sta и Tsu:sta (в даташите на микрочиповскую 24LC08B указано 600нс, но для большинства остальных 4/4.7мкс). И что за микросхема LC2408BT?

Извините, ошибся малость, 24LC08BT конечно.

Попробовал фирменный example, так там у них SCK идет вообще на 25 кГц, однако ж ACK не появился. А так в общем перебрал все варианты, в т.ч. поигрался с питанием, даже не знаю что делать, буду искать другие микросхемы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, так и оказалось, выдрал со старого телефона-АОН 24lc04b аж 1994 г. выпуска и - вот оно, счастье - заработало, пишет и читает!

А что получается у меня - паленые микросхемы? Хотя кто будет возиться-ловчить с копеечными чипами, да и покупал в уважаемой фирме, в общем ситуация непонятная... Спасибо всем принявшим участие.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...