-
- И цитата всё же должна быть иная т.к. команда 06 POV(69 знак., 16.01.2024 13:36, картинка)
- По моему все логично. 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)
- И всё же этот бит имеет отображение в SR. А тому для записи нужно
время. Я всего лишь ввёл проверку занятости после команды 50 и всё
взлетело. POV(1 знак., 16.01.2024 13:26, картинка)
- Не путайте изменение значения бита статуса по команде от изменения с записью регистра во флеш. Nikolay_Po(625 знак., 16.01.2024 13:37)
- Так! А зачем вы вообще использовали команду 50? Вам, по-хорошему,
частая запись в статус вообще не нужна. Туда пишут разок, чтобы
залочить, например, бутлоадер. Для обычных записи-стирания, к
регистру статуса обращаются только для чтения. А для разрешения
записи, используют команду 06h. - Nikolay_Po(16.01.2024 13:36)
- Я выше поправил. Я использую команду 6. - POV(16.01.2024 13:37)
- ОК. Тогда что будет, если перед командой 06h дать команду 50h? Я
ожидаю, что бизи не будет, а последующая запись или стирание -
заработают. Nikolay_Po(89 знак., 16.01.2024 13:39)
- Да, так пишет без бузи. Спасибо. Цитируемый абзац не весь прочитал,
всё в последней строчке раскрыто )) - POV(16.01.2024 13:52)
- Ура! Мои старания не пропали даром! Донёс! Nikolay_Po(228 знак., 16.01.2024 13:55)
- Да, так пишет без бузи. Спасибо. Цитируемый абзац не весь прочитал,
всё в последней строчке раскрыто )) - POV(16.01.2024 13:52)
- ОК. Тогда что будет, если перед командой 06h дать команду 50h? Я
ожидаю, что бизи не будет, а последующая запись или стирание -
заработают. Nikolay_Po(89 знак., 16.01.2024 13:39)
- Я выше поправил. Я использую команду 6. - POV(16.01.2024 13:37)
- И цитата всё же должна быть иная т.к. команда 06 POV(69 знак., 16.01.2024 13:36, картинка)