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

 
 
 
Reply to this topicStart new topic
> Вопрос по I2C, Посмотрите осциллограмму
aanbor
сообщение Sep 12 2011, 05:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 23-06-07
Пользователь №: 28 642



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

Сообщение отредактировал aanbor - Sep 12 2011, 05:46
Прикрепленные файлы
Прикрепленный файл  i2c.bmp ( 609.73 килобайт ) Кол-во скачиваний: 39
 
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Sep 12 2011, 06:10
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Нижнего импульса по середине шкалы - быть не должно, а так у Вас NACK, вместо ACK.
Go to the top of the page
 
+Quote Post
aanbor
сообщение Sep 12 2011, 08:20
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 23-06-07
Пользователь №: 28 642



Хотел вставить рисунок схемы, чегой-то не получилось sad.gif, вложил в файл. Может у меня в схеме подключения ошибка, почему не выставляется ACK? Все по даташиту делаю, микросхему менял, но не работает...
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Sep 12 2011, 08:55
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



A0, A1, A2 у Вас точно на GND соединены?
Попробуйте по другим адресам постучаться.
Go to the top of the page
 
+Quote Post
aanbor
сообщение Sep 12 2011, 11:13
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 23-06-07
Пользователь №: 28 642



Так А0,А1,А2 -Not Connected, поэтому оставил их висячими, в корпусе SOT-23 их вообще нет.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Sep 12 2011, 11:25
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



QUOTE (aanbor @ Sep 12 2011, 15:13) *
Так А0,А1,А2 -Not Connected, поэтому оставил их висячими, в корпусе SOT-23 их вообще нет.

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

И Вы ничего неперепутали с картинкой- это скорее чтение из памяти , а не запись
Прикрепленные файлы
Прикрепленный файл  i2c.bmp ( 457.9 килобайт ) Кол-во скачиваний: 15
 


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 12 2011, 11:50
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (ILYAUL @ Sep 12 2011, 14:25) *
Если не SOT-23 на GND их
Да не используются они ни в одном корпусе. Эти биты используются для адресации внутри одного кристалла.
Прикрепленное изображение

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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Sep 12 2011, 11:55
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



QUOTE (Сергей Борщ @ Sep 12 2011, 15:50) *
Да не используются они ни в одном корпусе. Эти биты используются для адресации внутри одного кристалла.

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


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
aanbor
сообщение Sep 12 2011, 12:45
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 23-06-07
Пользователь №: 28 642



Цитата(ILYAUL @ Sep 12 2011, 20:25) *
Вы сами то какой корпус используете? Если не SOT-23 на GND их

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


Цитата(Сергей Борщ @ Sep 12 2011, 20:50) *
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
Go to the top of the page
 
+Quote Post
mrKirill
сообщение Sep 13 2011, 02:06
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 283
Регистрация: 13-06-07
Из: Челябинск
Пользователь №: 28 391



Цитата(ILYAUL @ Sep 12 2011, 17:25) *
И Вы ничего неперепутали с картинкой- это скорее чтение из памяти , а не запись

Ой ли, по-моему это Вы перепутали, чего это у Вас на картинке W/R стал 9ым битом, а ACK - 10ым?
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Sep 13 2011, 05:40
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



QUOTE (mrKirill @ Sep 13 2011, 06:06) *
Ой ли, по-моему это Вы перепутали, чего это у Вас на картинке W/R стал 9ым битом, а ACK - 10ым?

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


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 13 2011, 07:17
Сообщение #12


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (aanbor @ Sep 12 2011, 15:45) *
PIC32MX795F512L, Compiler C32
Ой, это не ко мне. Было предположение, что вы реализуете I2C "ногодрыжеством", а там есть одна распространенная ошибка. Здесь же контроллер обязан настраивать ноги в режим открытого стока.
Будем делать новые предположения.
Попробуйте увеличить время установки и удержания стартового условия Thd:sta и Tsu:sta (в даташите на микрочиповскую 24LC08B указано 600нс, но для большинства остальных 4/4.7мкс). И что за микросхема LC2408BT? Гугля такой не знает... Возможно у нее какие-то еще ограничения на времянку.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Sep 13 2011, 07:21
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



QUOTE (Сергей Борщ @ Sep 13 2011, 11:17) *
И что за микросхема LC2408BT? Гугля такой не знает... Возможно у нее какие-то еще ограничения на времянку.

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


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
aanbor
сообщение Sep 13 2011, 13:30
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 23-06-07
Пользователь №: 28 642



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

Извините, ошибся малость, 24LC08BT конечно.
Попробовал фирменный example, так там у них SCK идет вообще на 25 кГц, однако ж ACK не появился. А так в общем перебрал все варианты, в т.ч. поигрался с питанием, даже не знаю что делать, буду искать другие микросхемы.
Go to the top of the page
 
+Quote Post
aanbor
сообщение Sep 14 2011, 13:56
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 103
Регистрация: 23-06-07
Пользователь №: 28 642



Да, так и оказалось, выдрал со старого телефона-АОН 24lc04b аж 1994 г. выпуска и - вот оно, счастье - заработало, пишет и читает!
А что получается у меня - паленые микросхемы? Хотя кто будет возиться-ловчить с копеечными чипами, да и покупал в уважаемой фирме, в общем ситуация непонятная... Спасибо всем принявшим участие.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th June 2025 - 16:13
Рейтинг@Mail.ru


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