Tрансивер Волк (Wolf) — Проблема с EEPROM

трансивер волк

Трансивер долго загружается и в итоге проскакивают ошибки:

  • loaded default settings,
  • loaded default
  • calibration, eeprom error.

Стало понятно, что проблема с флешкой, которая подключена по шине SPI к STM-ке. Почитал тематические тг-каналы по трансиверу Волк, но там либо люди так и не нашли решение, либо непропай, либо где-то «сопля» т.е. замыкание на шине SPI.

Прозвонка от STM-ки к флешке показывала, что везде есть нормальный контакт, выводы шины между собой на коротко не звонились. Под микроскопом были осмотрены разъёмы шлейфов и все ноги МК, всё выглядело хорошо, но при этом не работало. В тг-каналах, все в один голос твердили, что ищи непропай или «соплю», в общем пришлось искать проблему самостоятельно да и врятли проблема была в плохом контакте или замыкании на шине SPI, т.к. работали кнопки и SD-карта.

В ход пошёл логический анализатор на выводы флешки

Стало понятно, что STM-ка пишет данные на флешку, все байты доходят нормально до флешки и chip select работает чётко, а проблема в том, что после записи, контроллер проверяет записанное и вот тут бЭд, флешка возвращает все FF, т.е. она чистая.

Предположил, что флешка из Али и это брак. Из этой же посылки пробовал паять другие флешки (штук 5), всегда одно и тоже. Хотя флешки отлично писались, очищались на программаторе. Остановился с мыслью, что надо найти нормальною фирменную флешку и нашёл, но результат тот же.

Были попытки понижения скорости шины SPI,

hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;

Тоже не помогло. 🙁

Тут вспомнил, что на старой прошивке проблемы не было и флешка работала, а настройки на ней сохранялись, надо искать, что изменилось. Большая благодарность автору (UA3REO) трансивера WOLF, что на github выложены исходники прошивки данного трансивера.

В общем поставил keil, клонировал себе репозиторий и стал собирать прошивки, начиная от той, что работает и выше, пока не сломается, подледеней версии, в которой ошибка с eeprom не проявлялась, была 3.5.1.

Я про это написал ТГ-канал, но там, мне сказали, что после этой прошивки многие функции были перенесены в ПЛИС с STM, что проблема может быть с ПЛИС, но я сразу эту версию исключил, т.к. проблемная флешка сидит на SPI именно у STM и плис там точно не причём.

Ещё вот, что было, тест оборудования проходил успешно, хотя по факту флешка не работала.

Продолжая сравнивать части кода отвечающие за SPI и работу с флешкой между версией и 3.5.1 и следующей, заметил, что автор стал использовать dma для взаимодействия с периферией на SPI. Я для эксперимента отключил этот режим и вуалия, флешка заработала!!!

Вернул везде DMA, где был кроме флешки и всё остальное продолжало работать, в общем это было моё решение.

файл hardware.c функция HRDW_EEPROM_SPI -> SPI_Transmit(…., false для dma).

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

Теперь для обновления трансивера более свежей прошивкой, мне необходимо будет вносить эту правку в код и самостоятельно собирать прошивку для себя. Поэтому это и написал, чтоб в будущем не искать и не вспоминать, где и что менял.

Другие статьи по трансивер Волк (Wolf): https://antowka.ru/tag/wolf/

1 Comment

  1. Добрый день!
    Столкнулся с такой же проблемой. Не могли бы вы сгенерить одну из последних прошивок STM32 с отключенным DMA?
    Wolf 7″

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *