Для выполнения минимальных действий нужно не так-то и много команд. Но сначала — как подключить объектив.
Подключение объектива
Схем подключения в интернете полным-полно, возьму, например, эту:

Контакт AGND на фотоаппарате двойной, а на объективе одинарный (при подсоединении объектив замыкает эти два, и фотоаппарат узнает, что объектив есть, т.е. можно "общаться").
Подключать к микроконтроллеру надо следующим образом:
- AGND и DGND соединить с землей МК и землей блока питания;
- VBAT соединить с VDD и подать на оба +5В от блока питания; ВНИМАНИЕ! Блок питания должен быть достаточно мощный и подключен нормальными проводами (я пробовал тоненьким USB-шнурком, при активации моторов напряжение проседало и логика отключалась), для надежности можно между DGND и VDD воткнуть конденсатор эдак на тысячу микрофарад;
- DCLK == SPI CLK; DOUT == MISO; DIN == MOSI.
О дурацком протоколе я говорил в прошлой заметке. Чтобы не было проблем, нужно после передачи каждого байта делать паузу. Я на всякий случай делаю паузу в 2мс. Из-за такой дурости в протоколе, использовать DMA при общении с объективом не получится. Разве что найдете микроконтроллер с 9-битным SPI и DMA.
Часть команд 85-го объектива из сводной таблички у EF200 имеет другое действие. Скажем, положение F в метрах EF200 не выдает, а отдает на команду 194 какую-то белиберду, разделяющую диапазон фокусировки на группы.
Управление с STM32
В управлялке с STM32 реализованы:
- перемещение фокуса до упора влево/вправо;
- перемещение фокуса на 127 шагов;
- полное открытие/закрытие (но закрывается не до конца, маленькая дырочка остается) диафрагмы;
- изменение положения диафрагмы на 10 шагов;
- вывод значения отсчетов мотора привода фокуса;
- ввод вручную последовательности команд (строка, формат цифр — десятичный, восьмеричный или шестнадцатеричный), разделенных любыми не-цифрами;
- повтор последовательности при нажатии Enter или ввода команды r (ввод однобуквенных команд завершается enter'ом; список команд можно узнать, набрав h, enter).
Я долго ковырялся с командными последовательностями, но так и не нашел команды, позволяющей выяснить текущее положение диафрагмы.
Но! Управление работает, реализовано на относительно современном микроконтроллере и не составит труда воспроизвести все вышеуказанные действия любому желающему.
Journal information