EEPROM AT24C256C не читается несколько байт подряд: записываю в подряд 12 байт и пробую их прочесть, тоже в подряд, читается только самый первый байт - остальные 11 байт нули!
Если задавать другие адреса чтения, и читать по одному байту, видно что записалось всё правильно, проблема только с потоковым чтением!
Что может быть не так?
Прилагаю датаграмму с логического анализатора для KingstVIS 3.1.2
У вас скорее всего не правильно происходить считывания массива. Считывания одно байта и массива байт, это разные вещи. В даташите есть пример считывания данных по I2C.
_________________ Для связи email: risctronix собака gmail.com
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
уже не помню на вскидку но кажется 24с02 и 24с256 читают пишут иначе
_________________ ZМудрость(Опыт и выдержка) приходит с годами. Все Ваши беды и проблемы, от недостатка знаний. Умный и у дурака научится, а дураку и .. Алберт Ейнштейн не поможет и ВВП не спасет.и МЧС опаздает
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
DENIS451, Выложите Printscreen экрана ЛА. Скорее всего, ошибка в Restart-е после записи адреса стартового адреса чтения. P.S. На всякий случай, напомню: У 24C256 страница записи 64 байта. Т.е., если вы, к примеру, захотите записать несколько байт подряд с адреса 63h - будет ошибка (данные, ожидаемые по записи по адресу 64h, окажутся по адресу 0h). Т.ч, при записи, если вы переходите на следующую страницу, нужно дать Stop, подождать пока она запишет (можно проверять по ACK-у на её адрес), и продолжить запись с начала следующей страницы (Start, Device Adress и т.д.).
Код под STM32F105 нет смысла выкладывать - там софтовый I2C я могу нарисовать любую датаграмму, логический анализатор не самый плохой, на двух каналах выборка 100мГц заметит любую иголку на которую способна среагировать EEPROM.
...что означает параметр из датащита "Write Cycle Time" равный 5 миллисекунд?
Это время записи страницы из буфера AT24C256C в физическую Flash (стартует после команды Stop). В течении этого времени (это максимальное время), AT24C256C не будет выдавать ACK на свой адрес. Что касается основного вопроса - посмотрите в файле. Я отметил два "скользких момента" (первое, на что обратил внимание): 1. Обозначил как Err. Здесь "игра на фронтах" может быть воспринята как команда Stop. 2. Обозначил как t=?. Не понял реальное время, но как мне показалось, времена команды Start не соблюдены. В общем, более тщательно проверьте/исправьте все времена и всё заработает. /картинка кликабельна/
На этом "переходе", время "единички" у SCL должно быть не менее 2-ух времён "единички" при обмене данными. Если делаете "нечто", у чего должна быть высокая повторяемость - лучше выжидайте время не менее 1/Fclk_max/2 (для 400kHz это 1.25µS). Не думаю что это время сильно "затормозит" работу вашего изделия... Вот пример с моего ЛА (SLA5032): /у меня частота по SCL чуть выше 260kHz/
Разделите проверку на две части. Запишите AT24C256C на внешнем программаторе и прочтите данные или запишите своей программой и прочтите программатором. На данный момент, вы не можете быть уверенным что данные реально записываются в EEPROM. Дело в том что декодеры протокола ПО логических анализаторов не "ругнутся" если где-то есть "игра на фронтах" или некое время по I2C не соответствует стандарту.
Добавлено after 10 minutes 32 seconds: Re: EEPROM AT24C256C не читается несколько байт подряд, почему? P.S. Извиняюсь, предположение из серии "дурдома": После чтения первого байта вы точно сами не "роняете" линию SDA в "ноль"? Смущает то, что у стёртой/новой AT24C256C по всем адресам должны быть 0FFh...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения