Здравствуйте, электронные коллеги!
В моем техническом образовании имеется масса досадных пробелов, которые в очередной раз поставили меня в неприятную ситуацию "не работает, хотя вроде должно" )
И я очень надеюсь, что вы поможете мне этот пробел заполнить.
Я собираю устройство на базе МК STM 32 Nucleo F401RE.
Частью устройства является SPI шина, на которой сидит SD карта и каскад из 4 сдвиговых регистров M74HC595B1R, к которым подключаются диоды, несколько линий управления нагрузкой и часть линий "в резерве" на будущее развитие проекта.
Питание устройства организовано от 12В свинцового аккумулятора через преобразователь напряжения LM2576S-5.0 (5В х 3А).
Т.е. часть схемы работает на 5В, а сам МК работает на 3.3В, которые сам и преобразовывает из 5В.
При проектировании SPI шины я решил питать регистры от 5В, но выяснилось, что коварные регистры считают "высоким" напряжение примерно равное 70% от напряжения питания, т.е. для 5В "высоким" будет напряжение около 3.5В. Высокий же уровень на ноге МК - это 3.3-3.4, т.е. ничего не получилось. Поэтому на макетке я запитал регистры с выхода МК 3.3В, все прекрасно работало.
Но потом меня начали мучить сомнения - с каскада регистров 32 выхода. Если к каждому подключить нагрузку через резистор в 300Ом, то суммарный ток будет 350мА. А забирать 350мА с МК только для диодов, оставляя на все остальное жалкие 150мА (согласно документации на МК с его преобразователя не рекомендуется брать более 500мА) - это моветон.
Поэтому я решил все-таки питать регистры от 5В, а для согласования напряжения использовать на линиях MOSI, CLK и SS транзисторы BC337-16/RA, схема прилагается:
Когда я рассматривал вопрос о возможности использования транзисторов для усиления высокочастного сигнала, я для себя понял, что транзистор должен нормально работать на частоте, указанной в его характеристиках как "Граничная частота коэффициента передачи тока", которая для указанного транзистора составляет 100МГц. SPI у меня работает на 1МГц, т.е. все должно быть хорошо.
Но нет. Сделал плату, спаял, включил и... работает, но нестабильно. Через некоторое время работы регистры "залипают": команды с МК идут, а выходы на ногах регистров не меняются. Иногда регистры "отлипают" и опять работают. Перезапуск МК почти не помогает. Но всегда помогает обесточивание всей схемы и включение назад.
В ходе экспериментов выяснилось, что стабильность работы тем выше, чем ниже частота SPI. Стабильной работы удалось добиться на частоте до 100Гц. Но эта частота меня не устраивает, ибо очень медленно...
Вопрос, собственно, предсказуемый: где ошибка: в ДНК? в схеме? или в схеме все ок и нужно искать проблему в реализации?