aanbor 0 12 сентября, 2011 Опубликовано 12 сентября, 2011 (изменено) · Жалоба и скажите пжл как должно быть. Связь PIC -> LC2408BT, сверху SCL, внизу SDA. Передаются идентификатор и направление передачи 0b10100000. Так вот в даташите вроде написано, что на каждый принятый байт микросхема LC24 должна отвечать ACK низкого уровня, чего в данном случае не наблюдается. WP на земле, питание 3 В, поменял микросхему, результат такой же. Как должен выглядеть ACK? i2c.bmp Изменено 12 сентября, 2011 пользователем aanbor Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mrKirill 1 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба Нижнего импульса по середине шкалы - быть не должно, а так у Вас NACK, вместо ACK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aanbor 0 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба Хотел вставить рисунок схемы, чегой-то не получилось :(, вложил в файл. Может у меня в схеме подключения ошибка, почему не выставляется ACK? Все по даташиту делаю, микросхему менял, но не работает... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mrKirill 1 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба A0, A1, A2 у Вас точно на GND соединены? Попробуйте по другим адресам постучаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aanbor 0 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба Так А0,А1,А2 -Not Connected, поэтому оставил их висячими, в корпусе SOT-23 их вообще нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба Так А0,А1,А2 -Not Connected, поэтому оставил их висячими, в корпусе SOT-23 их вообще нет. Вы сами то какой корпус используете? Если не SOT-23 на GND их И Вы ничего неперепутали с картинкой- это скорее чтение из памяти , а не запись i2c.bmp Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба Если не SOT-23 на GND ихДа не используются они ни в одном корпусе. Эти биты используются для адресации внутри одного кристалла. aanbor: показывайте код, в диаграмме проблем не видно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба Да не используются они ни в одном корпусе. Эти биты используются для адресации внутри одного кристалла. Видел я DS, но не люблю висящие сигналы - к тому же это DS не запрещает Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aanbor 0 12 сентября, 2011 Опубликовано 12 сентября, 2011 · Жалоба Вы сами то какой корпус используете? Если не 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mrKirill 1 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба И Вы ничего неперепутали с картинкой- это скорее чтение из памяти , а не запись Ой ли, по-моему это Вы перепутали, чего это у Вас на картинке W/R стал 9ым битом, а ACK - 10ым? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба Ой ли, по-моему это Вы перепутали, чего это у Вас на картинке W/R стал 9ым битом, а ACK - 10ым? Э...э, да Ваша правда , не правильно посчитал. Тогда точно - NACK Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба PIC32MX795F512L, Compiler C32Ой, это не ко мне. Было предположение, что вы реализуете I2C "ногодрыжеством", а там есть одна распространенная ошибка. Здесь же контроллер обязан настраивать ноги в режим открытого стока. Будем делать новые предположения. Попробуйте увеличить время установки и удержания стартового условия Thd:sta и Tsu:sta (в даташите на микрочиповскую 24LC08B указано 600нс, но для большинства остальных 4/4.7мкс). И что за микросхема LC2408BT? Гугля такой не знает... Возможно у нее какие-то еще ограничения на времянку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба И что за микросхема LC2408BT? Гугля такой не знает... Возможно у нее какие-то еще ограничения на времянку. Я тоже мучился , потом понял 24LC08BT , там на его фото правильный PN есть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aanbor 0 13 сентября, 2011 Опубликовано 13 сентября, 2011 · Жалоба Будем делать новые предположения. Попробуйте увеличить время установки и удержания стартового условия Thd:sta и Tsu:sta (в даташите на микрочиповскую 24LC08B указано 600нс, но для большинства остальных 4/4.7мкс). И что за микросхема LC2408BT? Извините, ошибся малость, 24LC08BT конечно. Попробовал фирменный example, так там у них SCK идет вообще на 25 кГц, однако ж ACK не появился. А так в общем перебрал все варианты, в т.ч. поигрался с питанием, даже не знаю что делать, буду искать другие микросхемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aanbor 0 14 сентября, 2011 Опубликовано 14 сентября, 2011 · Жалоба Да, так и оказалось, выдрал со старого телефона-АОН 24lc04b аж 1994 г. выпуска и - вот оно, счастье - заработало, пишет и читает! А что получается у меня - паленые микросхемы? Хотя кто будет возиться-ловчить с копеечными чипами, да и покупал в уважаемой фирме, в общем ситуация непонятная... Спасибо всем принявшим участие. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться