Управление объективами Canon при помощи STM32

Sep 10, 2022 12:59

Допилил дергалку объективов Canon. К сожалению, их SPI совершенно убог: после каждого байта нужна задержка примерно в 100мкс, иначе получается полная хренотень. Выкинул DMA, сделал тупую блокирующую отсылку с задержками, теперь все четко по протоколу.
Команды простые:

0 - переместить фокусер на минимум (скажем, 2.5м)
1 - переместить фокусер на максимум (например, ∞)
d - если после нее + или -, то открыть или закрыть диафрагму на 1 шаг, если o или c - полностью открыть или полностью закрыть; узнать текущее положение, к сожалению, невозможно
f - получить текущие отсчеты положения фокуса (в шагах) или переместить его на относительное количество шагов (нет возможности сделать абсолютное перемещение)
h - включить ручное управление фокусером
i - получить базовую информацию об объективе (ХЗ, какие-то 6 байт)
l - получить модель объектива (скажем, 200 - LX200)
r - получить значения регуляторов (кнопочки AF/MF и активности лимба ручного фокуса)

Еще "по наследству" остались старые команды для всяких отладочных целей:

F - change SPI flags (F f val), f== l-LSBFIRST, b-BR [18MHz/2^(b+1)], p-CPOL, h-CPHA
G - get SPI status
I - reinit SPI
R - software reset
S - send data over SPI
T - show Tms value

Для LX200 больше ничего и не нужно, так что, пока на этом остановимся.

железяки, stm32

Previous post Next post
Up