-
- По моему все логично. 1) Команда разрешения записи WREN -> 2)
проверка бита WEL, ожидаем его установку -> 3) запись данных
-> 4) ожидаем завершения записи, проверяя бит WIP. Зачем бит
WEL пытаться перезаписать-то? - reZident(16.01.2024 13:49)
- Не нужно проверки бита WEL. Просто первой транзакцией командуем 06,
следующей - сразу пишем. Так оно работает в W25Q. Почему Z25Q
требует ожидания - вопрос! И я подозреваю, что идёт реальная запись
в SR, коей быть не должно и не должно требоваться задержки перед
командой записи страницы. - Nikolay_Po(16.01.2024 13:53)
- Бит есть, значит проверка не помешает. Подозреваю, что между командой разрешения записи и началом записи должны включиться генераторы повышенного напряжения, что занимает время вовсе не наносекунды. - reZident(16.01.2024 14:19)
- на fm25V и at25 код работал. А тут вот или ждать окончания записи
wel или надеяться что команда 50 исключает запись, не насилуя
флешку. - POV(16.01.2024 13:56)
- Если после команд 50h+06h нет бизи, а следующая команда на запись
принимается сразу, значит, лишней записи во флеш нет, можно быть
спокойным. - Nikolay_Po(16.01.2024 14:20)
- гуд - POV(16.01.2024 14:21)
- Возможно, я спас ваши флешки :) - Nikolay_Po(16.01.2024 13:57)
- Если после команд 50h+06h нет бизи, а следующая команда на запись
принимается сразу, значит, лишней записи во флеш нет, можно быть
спокойным. - Nikolay_Po(16.01.2024 14:20)
- Не нужно проверки бита WEL. Просто первой транзакцией командуем 06,
следующей - сразу пишем. Так оно работает в W25Q. Почему Z25Q
требует ожидания - вопрос! И я подозреваю, что идёт реальная запись
в SR, коей быть не должно и не должно требоваться задержки перед
командой записи страницы. - Nikolay_Po(16.01.2024 13:53)
- Это если в микросхеме баг или недоработка алгоритма. Похоже, что по
команде Write Enable, вместо того, чтобы просто временно взвести
бит WEL, происходит ещё и запись в регистр статуса SR, что
блокирует последующую запись. И, если так, то нельзя исключать, что
потом, после автоматического сброса WEL после записи, изменение
статуса опять записывается во флеш и нужно ещё ждать. Nikolay_Po(110 знак., 16.01.2024 13:42)
- Если команда 50 присутствует, то работает сразу, без паузы. Видать
где-то внутри микрухи этот бит в РАМе сидит вне зависимости от
запомненного в SR. - POV(16.01.2024 13:54)
- Для этого команда 50h и нужна, чтобы писать в ОЗУ, а не во флеш.
Чтобы не протереть флеш. Другое дело, что в нормальных чипах от
Winbond, снятие/установка WEL по командам происходит без теневой
записи SR и, поэтому, не требует спец. команды 50h для нормальной
работы. - Nikolay_Po(16.01.2024 13:57)
- "Энергонезависимые" (non-volatile) биты статуса (типа BPx) при
подаче питания автоматически копируются в "ОЗУ". Далее работа идет
с их (потенциально volatile) копией. Команда Write Enable for
Volatile Status Register (50h) позволяет изменить состояние
"энергонезависимых" бит статуса без их записи в энергонезависимую
память, то бишь изменить именно volatile-копию. Для бита WEL,
который мало того, что read-only, но еще и чисто "индикаторый" эта
команда разрешения записи (50h) reZident(196 знак., 16.01.2024 15:30)
- Угу. Так в теории и так у Winbond W25Q. А вот у конкретного
экземпляра Z25Q, попытка разблокировки возможности записи командой
06h, вызывает занятие чипа на время записи. А вот использование 50h
перед 06h, устраняет занятость чипа и, вероятно, устраняет лишнюю
запись в SR. Nikolay_Po(718 знак., 16.01.2024 15:37)
- Вы же не работали с ZD32 и судите о ситуации лишь со слов POV. Но
дело в том, что POV находится внутри этой ситуации. И пока из нее не вышел истина может ускользать в
виде программной ошибки, которую он пока не замечает. При
программировании такое случается сплошь и рядом - глаз "замылился".
Поэтому бывает полезен некий "аудит" программы от независимого
человека. - reZident(16.01.2024 15:48)
- Согласен. - Nikolay_Po(16.01.2024 15:55)
- Вы же не работали с ZD32 и судите о ситуации лишь со слов POV. Но
дело в том, что POV находится внутри этой ситуации. И пока из нее не вышел истина может ускользать в
виде программной ошибки, которую он пока не замечает. При
программировании такое случается сплошь и рядом - глаз "замылился".
Поэтому бывает полезен некий "аудит" программы от независимого
человека. - reZident(16.01.2024 15:48)
- Угу. Так в теории и так у Winbond W25Q. А вот у конкретного
экземпляра Z25Q, попытка разблокировки возможности записи командой
06h, вызывает занятие чипа на время записи. А вот использование 50h
перед 06h, устраняет занятость чипа и, вероятно, устраняет лишнюю
запись в SR. Nikolay_Po(718 знак., 16.01.2024 15:37)
- "Энергонезависимые" (non-volatile) биты статуса (типа BPx) при
подаче питания автоматически копируются в "ОЗУ". Далее работа идет
с их (потенциально volatile) копией. Команда Write Enable for
Volatile Status Register (50h) позволяет изменить состояние
"энергонезависимых" бит статуса без их записи в энергонезависимую
память, то бишь изменить именно volatile-копию. Для бита WEL,
который мало того, что read-only, но еще и чисто "индикаторый" эта
команда разрешения записи (50h) reZident(196 знак., 16.01.2024 15:30)
- Для этого команда 50h и нужна, чтобы писать в ОЗУ, а не во флеш.
Чтобы не протереть флеш. Другое дело, что в нормальных чипах от
Winbond, снятие/установка WEL по командам происходит без теневой
записи SR и, поэтому, не требует спец. команды 50h для нормальной
работы. - Nikolay_Po(16.01.2024 13:57)
- Если команда 50 присутствует, то работает сразу, без паузы. Видать
где-то внутри микрухи этот бит в РАМе сидит вне зависимости от
запомненного в SR. - POV(16.01.2024 13:54)
- По моему все логично. 1) Команда разрешения записи WREN -> 2)
проверка бита WEL, ожидаем его установку -> 3) запись данных
-> 4) ожидаем завершения записи, проверяя бит WIP. Зачем бит
WEL пытаться перезаписать-то? - reZident(16.01.2024 13:49)