Динамическая индикация на PSoC 4 и 74HC595
В последние время очень много разных разработок на Arduino и STM32. Задача поста показать альтернативные решения.
Публикую пример работы с PSoC 4 от Cypress. В качестве примера покажу как подключить PSoC 4 к дисплею с управлением на 74HC595 микросхеме регистре.
Кит для разработки: CY8CKIT-042 PSoC 4 Pioneer Kit:

PSoC (Programmable System on Chip) — программированная система на кристалле от компании Cypress. Другими словами чип, где есть процессорное ядро, а периферия конфигурируется в зависимости от задач разработчика. В качестве периферии используют готовые компоненты, которые разработчик добавляет на схему и настраивает (через GUI) в зависимости от задачи. Компоненты могут соединяться с другими компонентами. Дальше задается на какие выводы микросхемы должен выводиться сигнал. После сборки проекта, для каждого компонента будут сгенерированы API для работы с программы.
Дисплей изят из старого прибора КИПиА. Он состоит из 74HC595, 4-х транзисторов для управления и светодиодных 7-х индикаторов.
В основе проекта состоит схема которая содержит следующие компоненты:
Clock – компонент источник тактового сигнала, нужная частота задается в его настройках.
Toggle Flip Flop – T- триггер, значение на выходе которого меняется при каждом фронте тактового сигнала.
SPI Master – предназначен для работы с интерфейсом SPI
Interrupt – предназначен для генерации прерываний
Pin_Anodes — выводы GPIO

Источником тактового сигнала есть Clock который для удобства переименован в clk. Частота тактового сигнала 500 Hz подается на вход Т – тригера и на выходе будет 250 Hz (так как соеденить Clock с Interrupt напрямую нельзя, использован T- триггер. Триггер делит входную частоту на 2, потому входная должна быть 500 Hz. Можно также использовать компонент Frequency Divider ). У дисплея 4 индикатора, частота обновления каждого идикатора будет 250 Hz / 4 = 62.5 Hz. Для получения прерывания с такой частотой Interrupt подключен к T- триггеру(для удобства он переименован в ClkISR))
С частотой 62.5 Hz срабатывает прерывание, в котором отсылаються данные по SPI в микросхему 74HC595 с помощью API функции SPIM_WriteTxData() SPI Master компонента. После окончания передачи по SPI срабатывает прерывания, в обработчике которого на Pin_Enable формируется импульс для записи данных в микросхему регистр ссува:

Основная работа делаеться в обработчиках преривания, для пользователя достаточно 2 функций для работы с дисплеем:
программа для демонстрации обратного отсчета, полный текст программы на GitHub.
Видео как все работает:
Публикую пример работы с PSoC 4 от Cypress. В качестве примера покажу как подключить PSoC 4 к дисплею с управлением на 74HC595 микросхеме регистре.
Кит для разработки: CY8CKIT-042 PSoC 4 Pioneer Kit:

PSoC (Programmable System on Chip) — программированная система на кристалле от компании Cypress. Другими словами чип, где есть процессорное ядро, а периферия конфигурируется в зависимости от задач разработчика. В качестве периферии используют готовые компоненты, которые разработчик добавляет на схему и настраивает (через GUI) в зависимости от задачи. Компоненты могут соединяться с другими компонентами. Дальше задается на какие выводы микросхемы должен выводиться сигнал. После сборки проекта, для каждого компонента будут сгенерированы API для работы с программы.
Дисплей изят из старого прибора КИПиА. Он состоит из 74HC595, 4-х транзисторов для управления и светодиодных 7-х индикаторов.
В основе проекта состоит схема которая содержит следующие компоненты:
Clock – компонент источник тактового сигнала, нужная частота задается в его настройках.
Toggle Flip Flop – T- триггер, значение на выходе которого меняется при каждом фронте тактового сигнала.
SPI Master – предназначен для работы с интерфейсом SPI
Interrupt – предназначен для генерации прерываний
Pin_Anodes — выводы GPIO

Источником тактового сигнала есть Clock который для удобства переименован в clk. Частота тактового сигнала 500 Hz подается на вход Т – тригера и на выходе будет 250 Hz (так как соеденить Clock с Interrupt напрямую нельзя, использован T- триггер. Триггер делит входную частоту на 2, потому входная должна быть 500 Hz. Можно также использовать компонент Frequency Divider ). У дисплея 4 индикатора, частота обновления каждого идикатора будет 250 Hz / 4 = 62.5 Hz. Для получения прерывания с такой частотой Interrupt подключен к T- триггеру(для удобства он переименован в ClkISR))
С частотой 62.5 Hz срабатывает прерывание, в котором отсылаються данные по SPI в микросхему 74HC595 с помощью API функции SPIM_WriteTxData() SPI Master компонента. После окончания передачи по SPI срабатывает прерывания, в обработчике которого на Pin_Enable формируется импульс для записи данных в микросхему регистр ссува:

Основная работа делаеться в обработчиках преривания, для пользователя достаточно 2 функций для работы с дисплеем:
void Display_Init(void);
void Display_Update(uint16 bcdValue);
программа для демонстрации обратного отсчета, полный текст программы на GitHub.
static uint16 cnt = 9999u;
int main(void)
{
CyGlobalIntEnable; /* Enable global interrupts. */
Display_Init();
for(;;)
{
Display_Update(cnt);
if (--cnt == 0u) cnt = 9999u;
CyDelay(100);
}
}
Видео как все работает:


10 комментариев
Про PSoC давно слышал, но материалу на них реально понты, отладки тоже не попадались.
Те же AVR кстати вроде уже и треш, но под них написано столько софту и туторов, что не удивлюсь, если они просуществуют дольше STM'ок, будут продаваться на равне с 555-ми таймерами в будущем.
Еще штука – универсальность конфигурации съедает дофигище ресурсов, от чего контроллер M0 в TQFP-44 начинает стоить как что-то из серии STM32F4. Намного выгодней применить в дизайне контроллер за $1, чем городить на PSoC, а если таки нужна ПЛИС – добавить еще $4 за EPM240, она кстати и жирней будет. Девайсы из серии PSoC же в регионе $10 у нас в ритейле.
P.S. Но за глобальную идею нельзя не похвалить.
Чуваки реально придумали что-то новое – возможно слишком новое для нашего времени.
если искать на английском, то материала много:
iotexpert.com/
www.cypress.com/video-library
www.cypress.com/training/free-online-video-training-and-tutorials-cypress
www.hackster.io/search?i=projects&q=psoc
www.cypress.com/blog/100-projects-100-days
на каждом PSoC ките есть программатор/дебагер для отладки в железе. Тоесть, можно купитиь кит за 5$ и использовать его как отладчик, или купить
www.cypress.com/documentation/development-kitsboards/cy8ckit-002-psoc-miniprog3-program-and-debug-kit
У Cypress есть разные семейства PSoC: 3, 4, 5, и двух-ядерная — 6 серия (Cortex M4 и M0).
И подобрать можна под каждую задачу.
Для каждой схемы нужна обвязка — дополнительние деньги, а если использовать PSoC можно большенство внешних компонентов перенести внуть чипа + виводы независимы от переферии и можно упростить розводку платы.
Для ПЛИС нужно будеть писать свой код и тратить время на отладку, а в PSoC все компоненты тестированые и рабочие.
И ПЛИС не даст Вам алалоговою переферию, которая есть в PSoC: операционные усилители, компараторы, фильтры, аланоговые мультиплексоры и много другого.
В итоге: меньше наружных компонентов, проще схема и плата.
Я инженер Cypress, и если у вас будут вопросы пишите.
Не знал, что у нас есть их представительство – а чем занимаются в Украине?
Насчет PSoC — думаю Cypress'у нужно взять пример с ST, как те STM32 продвигали:
В начале раздавали отладку всем желающим, через год начали продавать по себестоимости, после с наваром.
Но даже по нынешний момент entry-серия Discovery имеет лайтовые цены.
Лично моя история – еще в 2012-м, плотно сидя на AVR и не собираясь слезать купил себе VLDiscovery – чисто из внутреннего еврейства, мол 32-битный камень с программатором и за 120 UAH, вот это жир!
Пролежала у меня эта платка целых 3 года, что-то пытался тыкать, но было пипец сложно. И только в 2015-м я полностью перешел на STM'ки, когда AVR уже перестало хватать, а под рукой оказалась отладка STM32.
Кстати, её до сих пор в качестве программатора юзаю. :P
Разработка и верификация компонентов (Timers, UART, I2C, USB, SPI и очень много других), разработка и верификация USB type C, Finger Print, устройства для Automotive.
Если интересно, есть открытые вакансии :)
У Cypress другая политика, в первую очередь ориентирована на больших кастомеров — Tesla, Samsung, Apple и потом на меньших
В Львовской Политехнике есть лаборатория созданая Cypress, там студенти работають с нашими микроконтроллерами (у них есть несколько предметов с лабораторними)
цена на киты начинаеться с 4$ что не очень большие деньги:
www.cypress.com/documentation/development-kitsboards/psoc-4-cy8ckit-049-4xxx-prototyping-kits
www.cypress.com/documentation/development-kitsboards/psoc-4-development-kits
www.cypress.com/cypress-store
Много вопросов и ответов по PSoC тут: dou.ua/forums/topic/17973/
Вы на собеседование приглашаете?))
2. У меня готовий модуль с микросхемой, решил использовать.
3. Если интересно больше статей (и других) по PSoC у меня в блоге: embedded.co.ua/category/psoc/
почему нет :) Время от времени появляються новые вакансии.
Сейчас самый новый продукт — PSoC 6, с 2-ма ядрами CPU:
www.cypress.com/event/psoc-6-purpose-built-iots
www.cypress.com/blog/psoc-creator-news-and-information/introducing-psoc-6-purpose-built-mcu-architecture-iot
Полезние ссылки:
www.cypress.com/documentation/component-datasheets/emulated-eeprom
www.cypress.com/documentation/code-examples/ce95313-emulated-eeprom-memory-psoc-345lp