Новый подход к управлению OLED дисплеем через Terminal с USB — SPI переходником на основе STM32F103C8. Узнайте о возможностях устройства и загрузите исходники.
В свободное время решил сделать USB — SPI переходник для управление OLED дисплеем через Terminal.
Под руки попалась отладочная плата с STM32F103C8 и USB разъемом.
Для управления дисплеем кроме SPI нужны были дополнительные пины настроенные на выход.
При реализации были добавлены ещё некоторые возможности. В итоге получилось довольно интересное устройство.
Устройство использовалось с драйвером от ST VCP_V1.4.0_Setup.exe.
Для ускорения процесса написания софта под STM32 решил использовать программу STM32CubeMX.
В итоге устройство принимает следующие команды:
COM[LED_SET.X]n — Управление яркостью светодиода установленного на макетной плате (PC13). X = 0-255. 0 — минимальная яркость (светодиод выключен) 255 — максимальная яркость.
COM[LED_GET]n — Запрос текущей яркости. Ответ COM[LED_GET.X]n X — текущая яркость.
COM[PIN_SET.X.Y]n — Установка выходного пина. X = 0-3 — номер пина 0 — PB12, 1 — PB11, 2 — PB10, 3 — PB2. Y = 0-1, 0 — логический ноль, 1-логическая единица.
COM[PIN_GET.X]n — Запрос текущего состояния пина. X = 0-5 — номер пина 0 — PB12, 1 — PB11, 2 — PB10, 3 — PB2, входные пины (программно подтянуты к земле) 4 — PB1, 5 — PB0. Ответ COM[PIN_GET.X.Y]n — X- номер пина, Y — состояние пина.
COM[ADC_SET.X]n — Запуск измерения ADC. X = 0-1 — номер пина ADC. 0 — PA0, 1 — PA1.
COM[ADC_GET.X]n — Запрос последнего измерения ADC. X = 0-1 — номер пина ADC. Ответ COM[ADC_GET.X.A]n — A = 0-4095 — единицы ADC.
COM[SPI_CONF.P.B.L.F] n — Установка конфигурации SPI (SPI2 MOSI — PB15, MISO — PB14, SCK — PB12). P = 2,4,8,16,32,64 — предделитель 2 = 18 MBits/s, 4 = 9 MBits/s …. B = MSB, LSB — первый бит младший или старший. L = L,H — уровень SCK. F = 1,2 — захват по первому или второму фронту. Пример COM[SPI_CONF.4.MSB.L.1] n.
COM[SPI_WR.LEN.DATA] n — Передача данных по SPI. LEN = 1-32 — Количество байт для отправки. DATA — непосредственно данные для отправки по SPI.
COM[SPI_RD.LEN] n — Прием данных по SPI. LEN = 1-32 — Количество байт для приема.
COM[SPI_TR.LEN.DATA]n — Передача/прием данных по SPI. . LEN = 1-20 — Количество байт для передачи/приема. DATA — непосредственно данные для отправки по SPI.
COM[?]n — Справка команд.
Устройство может управлять 4 — пинами. Считывать состояние 2-х входов. Считывать измерение ADC c 2-х входов. И передавать/принимать данные по SPI.
Исходники можно подправить под свои хотелки.
Проект под IAR Embedded 7.20.
Прикрепленные файлы: