В свободное время решил сделать 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.
Прикрепленные файлы: