Итак, я решил изготовить самодельный блок управления на STM32F1 этим китайским трансивером, вместо его родного на PIC
Быстро набросал простую схемку
Вообще ничего примечательного. Отладочная плата BluePill, модуль на Si5351, микросхема 74HC00 в качестве выходного буфера для раскачии тройки полевых транзисторов BS170, и два полевика в роли конвертера логических уровней для I2C.
Заказал плату, и вышла вот такая штучка:
Дополнительной соплей с резистором тут болтается платка с 74HC00. При разработке я зевнул, и забыл ее развести на схеме. Пришлось так приделать.
Второй, и самый муторный шаг — это было написание прошивки. Но я это добил. В результате её разработки, я столкнулся со следующими нюансами
- Повортный энкодер не желал работать. Ну вообще никак. Совсем. Побившись головой неделю, я прицепил к отладочной плате ардуиновский модуль с энкодером. И… ОН РАБОТАЛ! Начал внимательно изучать плату дисплея, на которой смонтирован энкодер трансивера. И что же я увидел? А вот что:
Тот кто паял, перепутал положение резистора и конденсатора фильтрующей RC цепочки кнопки. Пересадил их, и все начало работать.
- Для микросхем драйвера дисплея, и аудиокоммутатора, я закладывался что они будут управляться по I2C и SPI соответсвенно. Но! Все пошло к черту когда я стал внимательно изучать даташит. Обе микросхемы использовали какой-то свой протокол, выглядищий как странный ублюдок от любви SPI и I2C. В итоге я взаимодействие с этими микросхемами я реализовал прямым дерганием GPIO ножек.
В итоге все заработало отлично. Трансивер получил новую плату контроллера. В другом посте я опишу, как оно теперь работает.
А в конце, я дам ссылку на GitHub репозиторий где имеется текущая версия моей opensource прошивки для этого трансивера. Вдруг кто его приобретет, и тоже будет страдать от косячного китайского блока…
STM32 Planet Control board: https://github.com/bsdmry/stm32_prog/tree/master/f1/stm32-maple/planet_ctl_board