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

Нужна помощь с I2C SAM7S256

Не получается организовать random read из внешней еепром.

После отправки фрейма на запись адреса памяти еепром и получения ACK

не могу добиться отправки стартового условия+адрес микросхемы и далее

последовательного чтения. Стартовое условие+адрес микросхемы отправляется только после стопового условия, но это условие не должно быть по протоколу

 

 

Кто уже работал с i2c подскажите что еще нужно сделать.

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


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

Не получается организовать random read из внешней еепром.

После отправки фрейма на запись адреса памяти еепром и получения ACK

не могу добиться отправки стартового условия+адрес микросхемы и далее

последовательного чтения. Стартовое условие+адрес микросхемы отправляется только после стопового условия, но это условие не должно быть по протоколу

 

Не ясно описана проблема :-(

- Не получается считать _сразу_ после записи? Тогда нужно посылать "стартовое условие"

многократно, пока флешка не запишется дожидаясь ACK

 

- Не получается просто считать? Так чтение состоит из ДВУХ фаз

1. Завершенная "стоповым условием" сразу после передачи данных являющимися

адресом фаза записи.

2. Собственно фаза чтения. На фазе чтения адрес НЕ ПЕРЕДАЕТСЯ.

 

В принципе максимально подробно все это описано даташите на 24AA515. В остальных попадавшихся мне на глаза немколько скомканнее.

 

Если интересует исходники буквально сегодняшнего исследования I2C на LPC2xxx - могу выложить сюда. Работа по прерываниям, временных прокладок нет, обработка всех нештатных ситуаций,

последовательная и страничная запись/чтение.

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


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

Собственно проблема заключалась в отправке "повторного старта" после фазы записи адреса данных в микросхеме.

2. Собственно фаза чтения. На фазе чтения адрес НЕ ПЕРЕДАЕТСЯ.

Здесь я имел в виду адрес микросхемы, а не адрес данных.

 

В итоге понял что можно обойтись без повторного старта, а с помощью обычного. Т.е. с помощью двух независимых пакетов - "запись адреса данных" и "чтение данных".

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


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

Т.е. с помощью двух независимых пакетов - "запись адреса данных" и "чтение данных".

Именно так дело и обстоит.

Только правильнее назвать первый "запись данных с адресом". После чего идет "чтение данных"

по текущему адресу. Читать "обычно" можно блоками до границы 32K.

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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