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

 
 
> Вопрос по 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
 
Start new topic
Ответов
aanbor
сообщение Sep 12 2011, 11:13
Сообщение #2


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

Группа: Свой
Сообщений: 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
Сообщение #3


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

Группа: Свой
Сообщений: 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
aanbor
сообщение Sep 12 2011, 12:45
Сообщение #4


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

Группа: Свой
Сообщений: 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
Сергей Борщ
сообщение Sep 13 2011, 07:17
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 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
aanbor
сообщение Sep 13 2011, 13:30
Сообщение #6


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

Группа: Свой
Сообщений: 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



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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 08:12
Рейтинг@Mail.ru


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