Начнем с самого простого. Эта статья является первой из цикла, посвященного минимальному варианту платформы Wizardino - Wizardino Starter. Сразу оговорюсь, что все решения разработаны с расчетом на то, чтобы собрать, и даже изготовить плату мог человек, не отличающийся большой прямотой рук (тут я ориентировался на себя :))
Несмотря на то, что Starter является самым простым вариантом из всех, его возможности нельзя назвать излишне скромными. За основу разработки взят микроконтроллер STM32L151CBT6. Выбор был сделан по соотношению цена/возможности. Надо отметить, что даже в условиях текущего дикого повышения цен на электронику, этот чип вполне доступен по цене в пределах 400 рублей. Итак, что мы имеем за эти деньги?
Микроконтроллер
Корпус: LQFP 48 выводов. С учетом выводов, задействованных для подключения отладчика и USB нам остается 25 выводов. ИМХО - весьма и весьма неплохо.
Ядро: 32 бит ARM Cortex L1. Тактовая частота - 32 МГц. Напряжение питания - 1.8...3.6В. Рекомендуемое - 3.3В
Память: 128К Flash (используется для хранения программ) с функцией контроля ошибок, 16К оперативной памяти, 4К EEPROM с поддержкой ECC
Интерфейсы:
- USB 2.0 FS device с полной аппаратной поддержкой (никаких дополнительных компонентов не требуется)
- 3x USARTs (ISO 7816, IrDA)
- 2x SPIs 16 Mbit/s
- 2x I2Cs (SMBus/PMBus)
Периферия:
- Многоканальный 12-bit ADC с производительностью до 1 миллиона семплов в секунду
- 2 12-bit DAC
- 2 компаратора
Таймеры:
10 16-бит таймеров, из которых 6 с поддержкой до 4-х PWM каналов каждый, 2 - 16-бит базовых таймеров и 2 - watchdog таймеры
Плата
Для того, чтобы добраться до всех этих богатств, была разработана весьма компактная плата (57.4 мм в длину, 30 мм в ширину). Что на этой плате есть, и что она умеет?
- Собственно микроконтроллер, с необходимой обвязкой - конденсаторы на цепях питания и два кварца (8 МГц и 32 788 Гц) с необходимой обвязкой.
- 5 контактный разъем MiniUSB для подключения к компьютеру
- 8 контактный разъем для подключения внешнего отладчика. Поддерживается как JTAG, так и SWD режим. Для подключения стандартного отладчика ST-Link потребуется вспомогательная плата - переходник (схема будет дана здесь)
- Светодиод - индикатор включения. Включается микроконтроллером, таким образом является индикатором успешного старта, а не просто наличия питания
- Кнопка сброса
- 3-х контактный джампер для выбора режима загрузки
- Джампер для соединения шины 5В c контактом VBUS USB. При питании платы от USB джампер должен быть замкнут, при питании от внешнего источника - разомкнут
- Два стабилизатора напряжения (на 5В и на 3.3В), соединенные каскадно. Это позволяет при питании от внешнего источника 6-24В получить оба востребованных напряжения - 5В и 3.3В
- 28 выводов (по 14 выводов с каждой стороны платы) к которым подключено 25 GPIO выводов микроконтроллера, земля, питание 3.3В и 5В
Схема поддерживает питание как от USB, так и от внешнего источника постоянного тока 6-24В
Выводы, обозначенные как PAx и PBx соединены с соответствующими выводами микроконтроллера и могут использоваться как обычные GPIO. Кроме того, они могут быть сконфигурированы для выполнения следующих альтернативных функций (против часовой стрелки на рисунке):
PA0(*):
- Внешний тактирующий сигнал для таймера 2 (TIM2_CH1_ETR)
- Первый выходной канал таймера 5 (TIM5_CH1)
- USART2_CTS
- Wakeup сигнал 1 (WKUP1)
- Входной сигнал детектора взлома (RTC_TAMP). По этому сигналу происходит стирание критических данных из памяти для защиты от хакеров
- Первый входной канал ADC (ADC_IN0) - аналоговый режим
- Вход первого компаратора (COMP1_INP) - аналоговый режим
PA1(*):
- Выходной канал 2 таймеров 2 и 5 (TIM2_CH2/TIM5_CH2)
- USART2_RTS
- Второй входной канал ADC (ADC_IN1) - аналоговый режим
- Вход первого компаратора (COMP1_INP) - аналоговый режим
- Высокий уровень напряжения для операционного усилителя (OPAMP1_VINP) - аналоговый режим
PA2(*):
- Третий выходной канал таймеров 2 и 5 (TIM3_CH3/TIM5_CH3)
- Первый канал 9-го таймера (TIM9_CH1)
- USART2_TX
- Третий входной канал ADC (ADC_IN2)
- Вход первого компаратора (COMP1_INP)
- Низкий уровень напряжения для операционного усилителя (OPAMP1_VINM)
PA3:
- Четвертый выходной канал таймеров 2 и 5 (TIM3_CH4/TIM5_CH4)
- Второй канал 9-го таймера (TIM9_CH2)
- USART2_RX
- 4-й входной канал ADC (ADC_IN3)
- Вход первого компаратора (COMP1_INP)
- Выход операционного усилителя (OPAMP1_VOUT)
PA4:
- Сигнал NSS для SPI 1 и 3 (SPI1_NSS/SPI3_NSS)
- Сигнал WS для третьей шины I2S(I2S3_WS)
- USART2_CK
- 5-й входной канал ADC (ADC_IN4)
- Выход первого DAC (DAC_OUT1)
- Вход первого компаратора (COMP1_INP)
PA5:
- Внешний тактирующий сигнал для таймера 2 (TIM2_CH1_ETR)
- SPI1_SCK
- 6-й входной канал ADC (ADC_IN5)
- Выход второго DAC (DAC_OUT2)
- Вход первого компаратора (COMP1_INP)
PA6(*):
- Первый канал таймеров 3 и 10 (TIM3_CH1/TIM10_CH1)
- SPI1_MISO
- 7-й входной канал ADC (ADC_IN6)
- Вход первого компаратора (COMP1_INP)
- Высокий уровень напряжения для второго операционного усилителя (OPAMP2_VINP)
PA7(*):
- Второй канал таймера 3 (TIM3_CH2)
- Первый канал таймера 11 (TIM11_CH1)
- SPI1_MISO
- 8-й входной канал ADC (ADC_IN7)
- Вход первого компаратора (COMP1_INP)
- Низкий уровень напряжения для второго операционного усилителя (OPAMP2_VINM)
PB0:
- Третий канал третьего таймера (TIM3_CH3)
- 9-й входной канал ADC (ADC_IN8)
- Вход первого компаратора (COMP1_INP)
- Выход второго операционного усилителя (OPAMP2_VOUT)
- Выход "опорное напряжение" (VREF_OUT)
PB1(*):
- Четвертый канал третьего таймера (TIM3_CH4)
- 10-й входной канал ADC (ADC_IN9)
- Выход "опорное напряжение" (VREF_OUT)
PB2(*):
- BOOT1 Участвует в выборе источника запуска ПО
PB10(*):
- Третий канал второго таймера (TIM2_CH3)
- I2C2_SCL
- USART3_TX
PB11(*):
- Четвертый канал второго таймера (TIM2_CH4)
- I2C2_SDA
- USART3_RX
PB12(*):
- Первый канал десятого таймера (TIM10_CH1)
- I2C2_SMBA
- SPI2_NSS
- I2S2_WS
- USART3_CK
- 19-й вход ADC (ADC_IN18)
- Вход первого компаратора (COMP1_INP)
PB13(*):
- Первый канал 9-го таймера (TIM9_CH1)
- SPI2_SCK
- I2S2_CK
- USART3_CTS
- 20-й вход ADC (ADC_IN19)
- Вход первого компаратора (COMP1_INP)
PB14(*):
- Второй канал 9-го таймера (TIM9_CH2)
- SPI2_MISO
- USART3_RTS
- 21-й вход ADC (ADC_IN20)
- Вход первого компаратора (COMP1_INP)
PB15(*):
- Первый канал 11-го таймера (TIM11_CH1)
- SPI2_MOSI
- I2S2_SD
- 22-й вход ADC (ADC_IN21)
- Вход первого компаратора (COMP1_INP)
- Вход опорной частоты для точной работы календаря (RTC_REFIN)
PA8(*):
- USART1_CK
- Вывод внутренней тактовой частоты процессора (MCO)
PA9(*):
- USART1_TX
PA10(*):
- USART1_RX
PB5(*):
- Второй канал 3-го таймера (TIM3_CH2)
- I2C1_SMBA
- SPI1_MOSI
- SPI3_MOSI
- I2S3_SD
- Вход второго компаратора (COMP2_INP)
PB6(*):
- Первый канал 4-го таймера (TIM4_CH1)
- I2C1_SCL
- USART1_TX
- Вход второго компаратора (COMP2_INP)
PB7(*):
- Второй канал 4-го таймера (TIM4_CH2)
- I2C1_SDA
- USART1_RX
- Вход второго компаратора (COMP2_INP)
- Вход детектора падения напряжения питания (PVD_IN)
PB8(*):
- Третий канал четвертого таймера (TIM4_CH3)
- Первый канал 10-го таймера (TIM10_CH1)
- I2C1_SCL
PB9(*):
- Четвертый канал 4-го таймера (TIM4_CH4)
- Первый канал 11-го таймера (TIM11_CH1)
- I2C1_SDA
Выводы, помеченные (*) в описании, являются устойчивыми к входному напряжению 5В. Для выводов без такой отметки подача входного напряжения, превышающего напряжение питания микроконтроллера недопустима.
Таймеры TIM2, TIM3, TIM4, TIM5 поддерживают несколько каналов каждый. Эти каналы могут настраиваться независимо и служить как счетчиками внешних событий, так и для генерации ШИМ. Возможность настройки нескольких каналов на вход позволяет использовать данные таймеры в том числе для считывания сигналов энкодера, или для работы с 1-3 датчиками Холла.
Таймеры TIM9, TIM10, TIM11 устроены несколько проще. Однако, они тоже способны генерировать ШИМ.
Электрическая и монтажная схемы Wizardino Starter будут описаны с следующей статье