mirror of
https://github.com/eddyem/stm32samples.git
synced 2025-12-06 10:45:11 +03:00
145 lines
8.2 KiB
Plaintext
145 lines
8.2 KiB
Plaintext
****** Распиновка ******
|
||
|
||
=== Интерфейсы I/O ===
|
||
- PA11/12 - USB
|
||
- PA9(Tx), PA10(Rx) - USART1 - прокси RMC-сообщений GPS.
|
||
- PA2(Tx), PA3(Rx) - USART2 - подключение GPS-приемника.
|
||
- PB10(Tx), PB11(Rx) - USART3 - подключение лидара.
|
||
|
||
=== Остальные порты ===
|
||
- PA1 - PPS сигнал от GPS; сюда можно подключать любой дополнительный высокоомный вход напрямую.
|
||
- PA4 - TRIG2 - подключен к каналу 12В.
|
||
- PA13 - TRIG0 - кнопка или створ, замыкающий контакты.
|
||
- PA14 - TRIG1 - так же, как и вход TRIG0.
|
||
- PA15 - подтяжка USB.
|
||
- PB0 - TRIG4 - триггер по АЦП.
|
||
- PB8, PB9 - индикаторные светодиоды.
|
||
- PC13 - пищалка.
|
||
|
||
=== Светодиоды ===
|
||
- LED0 (зеленый) - при отсутствии сигнала PPS просто горит, если PPS появляется - мигает (затухает на 0.25с на каждый сигнал).
|
||
- LED1 (красный) - индикатор GPS: не горит, если приемник не обнаружен, горит, если неуверенный прием времени (буква "V" во второй позиции RMC-сообщения), мигает при уверенном приеме (буква "A" во второй позиции).
|
||
Судя по эксперименту, даже через час после пропадания сигнала точность определения события - не хуже 1мс. Сам GPS-приемник выдает
|
||
PPS даже при отсутствии спутников - лишь бы он успел "подхватить" точное время и начать генерировать pps. Начинать работу можно сразу,
|
||
как только замигает зеленый светодиод после мигающего красного.
|
||
|
||
|
||
****** Триггеры ******
|
||
На прототипе распаяно два входа на триггеры: TRIG0 и TRIG2. К TRIG2 нужно подключать 12-вольтный сигнал, ток не меньше 10мА.
|
||
Если створ имеет открытый коллектор, то выход створа подключается к минусу TRIG2, а к плюсу подключается 12В с источника питания.
|
||
TRIG0 предназначен для подключения кнопки или концевика, просто замыкающего контакты. Никакого внешнего напряжения там быть не должно!
|
||
|
||
TRIG4 - аналоговый вход. Если будут ложные срабатывания на девбордах, порт PB0 нужно напрямую или через резистор до 10кОм посадить на землю.
|
||
|
||
Иногда бывают ложные срабатывания триггеров TRIG0..TRIG2, связанные с мощными источниками искр (зажигание, искрящиеся обмотки и т.п.).
|
||
В случае таких ложных срабатываний рекомендуется заземлить катод источника питания хронометра.
|
||
|
||
При подключении внешней кнопки желательно, чтобы она имела нормально замкнутые контакты - это предотвратит ложные срабатывания из-за электромагнитных помех.
|
||
|
||
|
||
****** Подключение ******
|
||
Хронометр эмулирует "китайский" преобразователь PL2303. В линуксе нужно, чтобы был скомпилирован соответствующий модуль ядра.
|
||
В андроиде работает "из коробки". В мастдайке новые драйвера PL2303 имеют защиту от подделок (те просто не работают с этими дровами),
|
||
поэтому для нормальной работы необходимо найти и установить старые драйвера.
|
||
|
||
К выходам PA9/PA10 можно подключить преобразователь USART<>USB или накинуть их напрямую на ноги Rx/Tx "малинки" (не забыв соединить
|
||
земли хронометра и малинки): PA9(Tx) соединить с Rx, PA10(Rx) - с Tx. Этот USART проксирует RMC-сообщения GPS-приемника (уже после
|
||
обработки микроконтроллером, поэтому если МК выключен, а приемник включен, сигнала все равно не будет).
|
||
|
||
Для подключения PPS сигнала к "малинке" нужно напрямую соединить соответствующую ногу GPIO "малинки" с портом PA1 девборды.
|
||
На прототипе нужно подпаяться к дорожке, выходящей с ноги PPS (отмечено маркером).
|
||
|
||
Подтяжка USB есть лишь на прототипе, на девбордах ее нет. Поэтому в случае перезагрузки микроконтроллера девборды для возобновления
|
||
соединения необходимо переткнуть шнурок USB. В этом плане прототип надежней: сбросить МК можно независимо от питания GPS.
|
||
|
||
На прототипе и девбордах отсутствует подсоединение пищалки. На девбордах при желании можно накинуть на PC13 что-нибудь для индикации
|
||
срабатывания створа (активный выход - "1" в течение 0.3с).
|
||
|
||
На девбордах не распаяны светодиодные индикаторы. Особого смысла в них нет, но если понадобится подключить, нагрузка должна висеть на
|
||
PB8/PB9. Активный выход - низкий. Нога МК настроена в режиме open-drain, но внешняя подтяжка не должна быть выше +3.5В. И потребление
|
||
не больше 5мА на ногу.
|
||
|
||
|
||
****** Конфигурация ******
|
||
Хронометр конфигурируется через USB. Ввод команд не сопровождается эхом (чтобы удобней было работать из внешних программ), поэтому
|
||
для удобства можно тексты команд копировать из окна текстового редактора.
|
||
Чтобы увидеть подсказку, достаточно отправить любую строку, начинающуюся с вопросительного знака. Появится справка:
|
||
|
||
adcmax - max ADC value treshold for trigger
|
||
adcmin - min -//- (triggered when ADval>min & <max
|
||
adcval - get ADC value
|
||
buzzerS - turn buzzer ON/OFF
|
||
distmin - min distance threshold (cm)
|
||
distmax - max distance threshold (cm)
|
||
gpsrestart - send Full Cold Restart to GPS
|
||
gpsstring - current GPS data string
|
||
ledsS - turn leds on/off (1/0)
|
||
mcutemp - MCU temperature
|
||
pullupNS - triggers pullups state (N - trigger No, S - 0/1 for off/on)
|
||
showconf - show current configuration
|
||
time - print time
|
||
store - store new configuration in flash
|
||
triglevelNS - working trigger N level S
|
||
trigpauseNP - pause (P, ms) after trigger N shots
|
||
trigtimeN - show last trigger N time
|
||
vdd - Vdd value
|
||
|
||
Из нужного здесь:
|
||
- gpsrestart - перезапуск GPS (если вдруг начнет глючить - у меня такого не случалось), делает "холодный" рестарт. Команда
|
||
проверялась лишь на прототипе.
|
||
- gpsstring - вывод очередного сообщения от GPS. Если все нормально, то появится строка RMC вроде
|
||
$GPRMC,124001.000,A,4340.9369,N,04127.5034,E,0.00,33.26,150819,,,A*5C
|
||
- pullupNS - включить или выключить внутренние верхние подтяжки для триггеров 0..3 (особо не нужно, т.к. подтяжки слабые, и если
|
||
будет нужна подтяжка, лучше сделать сильную внешнюю).
|
||
- showconf - отображение текущей конфигурации, например:
|
||
CONFIG:
|
||
DISTMIN=50
|
||
DISTMAX=1000
|
||
ADCMIN=1024
|
||
ADCMAX=3072
|
||
PULLUPS=255
|
||
TRIGLVL=0
|
||
TRIGPAUSE={400, 400, 400, 300, 300}
|
||
ENDCONFIG
|
||
|
||
пункты конфигурации: DISTMIN/DISTMAX относятся к лидару, ADCMIN/ADCMAX ко входу АЦП, PULLUPS - состояние подтяжек
|
||
(каждый бит, начиная с младшего - состояние соответствующей подтяжки; 0 - не активна, 1 - активна).
|
||
TRIGLVL - конфигурация уровней срабатывания, каждый бит, начиная с младшего (всего три младших бита, как и в PULLUPS),
|
||
равен нулю, если для соответствующего триггера срабатывание при перепаде 1->0, равен единице, если при
|
||
перепаде 0->1.
|
||
TRIGPAUSE - пауза между срабатываниями триггера: если после срабатывания произойдет следующее событие за интервал, меньший
|
||
данного, это событие учитываться не будет.
|
||
- time - отображает текущее время так, как оно бы отобразилось при срабатывании триггера, например,
|
||
55725.961 (15:28:45)
|
||
ВРЕМЯ ИЗМЕРЯЕТСЯ В UTC!!! Первое число - количество секунд и миллисекунд с начала суток по UTC, в скобках
|
||
указывается человекочитаемое время.
|
||
- store - сохранить новую конфигурацию во флеш-памяти МК.
|
||
- triglevelNS - рабочий уровень триггера. Здесь N - номер триггера (0..2), S - уровень (0/1). Скажем, чтобы триггер 0 срабатывал
|
||
при перепаде 1->0, нужно написать команду
|
||
triglevel00
|
||
а чтобы триггер 2 срабатывал при перепаде 0->1,
|
||
triglevel21
|
||
- trigpauseNP - задать паузу для триггера N, пауза в миллисекундах. Если написать 0, паузы не будет и каждое срабатывание
|
||
будет вызывать соответствующее сообщение. Эта пауза нужнад для защиты от "звона" и нескольких срабатываний на "дырках"
|
||
в объекте. Меньше 50мс лучше не делать.
|
||
- trigtimeN - отображение последнего времени срабатывания триггера N, например, на запрос trigtime0, может быть выведено:
|
||
TRIG0=45212.930 (12:33:32)
|
||
Если срабатываний с момента включения не было, выведутся нули:
|
||
TRIG4=0.000 (00:00:00)
|
||
|
||
После изменения конфигурации и ее сохранения необходимо нажатием на reset или отключением/включением питания перезагрузить МК,
|
||
т.к. некоторые параметры активируются лишь при старте.
|
||
|
||
|
||
****** Девборды и плата-прототип ******
|
||
На платках из девборд два канала опторазвязок подключены к триггерам TRIG0 и TRIG1.
|
||
Синий провод - земля, красные - +12В для каждого канала. Т.е. схема рассчитана на срабатывание по появлению плюса на одном из каналов.
|
||
|
||
В случае необходимости срабатывания по подтяжке к земле, нужно разорвать землю на входах опторазвязок и, наоборот, объединить плюсы.
|
||
На плюсы подать +12В, минусы подключить к сигнальным выходам створов.
|
||
|
||
На прототипе распаяны развязки только на два канала: TRIG0 - для подключения чего-то, замыкающего контакты, и TRIG2 - для подключения
|
||
чего-то, выдающего 12В. Я оставил такую конфигурацию: к TRIG0 можно подключить нормально замкнутую кнопку (triglevel01), а TRIG2
|
||
сработает при поступлении туда 12В (triglevel21).
|
||
|