Переходим к тестам "Одуванчика" - аналога Arduino Uno на базе STM32F103C8T6.
Сегодня пробежимся по вводу/выводу. Попробуем заставить работать дисплей от mp3 плеера и проверим на стойкость к замыканию/перенапряжению пины. А также проверим работу от внешних источников питания.
Распиновка платы Одуванчика
- ResPin - резервный пин. Есть на BP (Blue Pill), но здесь он по количеству был лишний. Чтобы не терять в количестве доступных от МК пинов была расширена гребенка контактов.
- По аналогичной причине был добавлен на свободное место еще один контакт GND. А когда собираешь без макетной платы, то этого самого пина земли может не хватить. Потому пусть лучше будет. Бонусом теперь на одну сторону можно установить вместо двух одну колодку в 15 пинов.
- IOREF - LogPow. Задает напряжение высокого уровня портов. В обычное время может использоваться для снятия с платы 3.3В или 5В, в зависимости от положения нижней перемычки. Если ее снять, то можно будет устанавливать уровень от 3.3 до 50В (теоретическое) подачей соответствующего напряжения на IOREF.
- Сразу же сделаю заметку о выборе источника питания. Перемычкой выше предыдущей выбирается то, откуда мы будем брать питание (5В). Через понижающий DC-DC преобразователь от разъема 5.5 мм/с контакта Vin или с USB линии. Важная заметка. Vin вход не защищен от подачи через него на плату неверной полярности. Но на нем всегда будет верная при запитывании от разъема 5.5 мм.
- J1 - SPI разъем, доставшийся в наследство от Uno. Но из-за нехватки места его расположение имеет смещение относительно оригинального.
- J2 - присущий STM32 пара перемычек BOOT0 и BOOT1
- AREF - выведено напряжение 3.3В
- UART находится на своем штатном месте и является базовым для STM32. Т.е. через него тоже можно загружать прошивку, как и с Uno, если ПО это поддерживает.
В остальном без особенностей. Подсмотреть назначение оставшихся пинов можно в описании Blue Pill.
Пишем код для проверки портов на ввод/вывод
Пока только это. Ну нужно же убедиться, что порты в принципе работают как нужно, а не как им вздумается :).
На код смотреть не интересно, потому вот видео:
Тестируем АЦП
Для начала подключаем ИОН на 2.5В:
Прогоняем по диапазону, чтобы получить табличку со значениями того, что читается и что есть на самом деле:
Считаем и строим график погрешностей:
Показания снимал с дисплея в вольтах. Показалось, что погрешность слишком большая. Решил повторить замеры, но уже без видео. И снимать данные через UART. Получил следующий график:
Суть осталась та же. В среднем +-1% отклонение. А максимальное фиксируемое напряжение оказалось равным 2.9В. Все, что выше - воспринимается как 2,9В.
Выходит, мы потеряли около 12% диапазона измерения. Вроде бы не много. Разрядность ADC осталось той же, но только не на промежутке от 0 до 3.3В, а от 0 до 2.9В. Из-за этого ADC 12-bit по точности будет работать как 10-bit. Если для кого-то это критично, то можно решить костылем в виде подключения не к колодке, а к пину для установки внешней платы с STM32F103. Лишимся защиты на этом пине, но сможем использовать весь диапазон и точность. Не знаю нужно ли тут что-нибудь придумывать, вроде отключаемой защиты. Например, перепаиванием перемычки на плате.
Тестируем GPIO на защиту по току
А что, если закоротить соседние контакты, работающие на выход? Иногда контроллеры могут выдержать такое. Но не без нагрева. Хотя иногда даже просто замыкание на землю, вылетевшего из макетки пина, бывает достаточно, чтобы вывести из строя МК.
Будет греться?
Хм. Попробуем кое-что пожестче.
Тестируем GPIO на перенапряжение
Попробуем подключить к контакту 9В крону. Для Uno или практически любой другой отладочной платы, такое заканчивается либо выгоранием пина (в наилучшем случае), чаще порта (ряда, например, в 8 пинов) или в тяжелом случае - выходом из строя МК.
Проверяем!
Ну, в общем-то, ожидаемо.
Тестируем питание от различных источников питания
Разъем распространенный, 5.5 мм. Нашел у себя ИП и на 5, и на 9, и на 12, и на 24В. Попробуем по возрастанию их все!
Ну и глупо будет глупо не проверить питание от USB, ведь в дальнейшем большая часть работы должна будет происходить именно через этот порт.
Выводы
На данном этапе я всем доволен. Пока все выглядит очень перспективно.
Есть, конечно, косячки. Можно что-то доработать. Но считаю пока еще не полностью понятно какие правки необходимы. Нужно проверить работу с cnc shield, погонять в реальных задачах.
Хотел показать на примере светодиодной матрицы, что иногда без конверторов уровней ну никак. Либо ноль поднимать, либо переходную плату собирать, т.к. логика рассчитана на 5В, а МК на 3.3В. Но матрицы такой на руках сейчас нет, продемонстрировать не могу. Могу только сослаться на свой проект, в котором пришлось решать проблему согласования уровней: Проект таймера до события на STM32.
Ну а пока на этом все.
Если у вас есть желание, силы и время на сборку и изучение платы, то можете написать мне запрос на плату/плату и компоненты к ней. Осталось 3 шт. Но учитывая сколько в ней косяков я даже не буду указывать стоимость. Не думаю, что кто-то захочет заниматься ювелирной пайкой, как я. Будь я на месте кого-то другого я бы подождал релиза второй версии платы :).
—————————————————————————
Спасибо, что дочитали статью!
Подпишитесь пожалуйста на мой канал "Заметки Электроника | Alexander.Chad", этим Вы очень сильно поможете мне. Канал существует только за счет наличия и участия подписчиков.
Если Вам понравился материал - поддержите его лайком или даже донатом (ЮMoney). Есть что сказать? Оставьте комментарий! Это тоже будет помощью.
Сейчас канал нуждается в Вас как никогда прежде!