Динамическая индикация на PSoC 4 и 74HC595

Блог им. Nemo
В последние время очень много разных разработок на 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 функций для работы с дисплеем:
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 комментариев

avatar
Мне казалось STM32 – альтернатива. :3
Про PSoC давно слышал, но материалу на них реально понты, отладки тоже не попадались.
Те же AVR кстати вроде уже и треш, но под них написано столько софту и туторов, что не удивлюсь, если они просуществуют дольше STM'ок, будут продаваться на равне с 555-ми таймерами в будущем.

Еще штука – универсальность конфигурации съедает дофигище ресурсов, от чего контроллер M0 в TQFP-44 начинает стоить как что-то из серии STM32F4. Намного выгодней применить в дизайне контроллер за $1, чем городить на PSoC, а если таки нужна ПЛИС – добавить еще $4 за EPM240, она кстати и жирней будет. Девайсы из серии PSoC же в регионе $10 у нас в ритейле.

P.S. Но за глобальную идею нельзя не похвалить.
Чуваки реально придумали что-то новое – возможно слишком новое для нашего времени.
avatar
Про PSoC давно слышал, но материалу на них реально понты
исправляю: embedded.co.ua/category/psoc/
если искать на английском, то материала много:
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


Еще штука – универсальность конфигурации съедает дофигище ресурсов, от чего контроллер M0 в TQFP-44 начинает стоить как что-то из серии STM32F4.

У Cypress есть разные семейства PSoC: 3, 4, 5, и двух-ядерная — 6 серия (Cortex M4 и M0).
И подобрать можна под каждую задачу.

Намного выгодней применить в дизайне контроллер за $1, чем городить на PSoC, Девайсы из серии PSoC же в регионе $10 у нас в ритейле.
Для каждой схемы нужна обвязка — дополнительние деньги, а если использовать PSoC можно большенство внешних компонентов перенести внуть чипа + виводы независимы от переферии и можно упростить розводку платы.

а если таки нужна ПЛИС – добавить еще $4 за EPM240, она кстати и жирней будет.
Для ПЛИС нужно будеть писать свой код и тратить время на отладку, а в PSoC все компоненты тестированые и рабочие.
И ПЛИС не даст Вам алалоговою переферию, которая есть в PSoC: операционные усилители, компараторы, фильтры, аланоговые мультиплексоры и много другого.

В итоге: меньше наружных компонентов, проще схема и плата.
Я инженер Cypress, и если у вас будут вопросы пишите.
avatar
Я инженер Cypress, и если у вас будут вопросы пишите.
Сурово. :)
Не знал, что у нас есть их представительство – а чем занимаются в Украине?

Насчет PSoC — думаю Cypress'у нужно взять пример с ST, как те STM32 продвигали:
В начале раздавали отладку всем желающим, через год начали продавать по себестоимости, после с наваром.
Но даже по нынешний момент entry-серия Discovery имеет лайтовые цены.
Лично моя история – еще в 2012-м, плотно сидя на AVR и не собираясь слезать купил себе VLDiscovery – чисто из внутреннего еврейства, мол 32-битный камень с программатором и за 120 UAH, вот это жир!
Пролежала у меня эта платка целых 3 года, что-то пытался тыкать, но было пипец сложно. И только в 2015-м я полностью перешел на STM'ки, когда AVR уже перестало хватать, а под рукой оказалась отладка STM32.
Кстати, её до сих пор в качестве программатора юзаю. :P
avatar
Сурово. :)
Не знал, что у нас есть их представительство
Украинский офис Cypress находиться в городе Львов.

Сурово. :)а чем занимаются в Украине?
Разработка и верификация компонентов (Timers, UART, I2C, USB, SPI и очень много других), разработка и верификация USB type C, Finger Print, устройства для Automotive.

Если интересно, есть открытые вакансии :)

Насчет PSoC — думаю Cypress'у нужно взять пример с ST, как те STM32 продвигали:
В начале раздавали отладку всем желающим, через год начали продавать по себестоимости, после с наваром
У 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/
avatar
У вас же на PSoC1 можно было динамическую индикацию реализовать без внешних микросхем?
Вы на собеседование приглашаете?))
avatar
У вас же на PSoC1 можно было динамическую индикацию реализовать без внешних микросхем?
1. Направление PSoC 1 больше не развиваеться, находиться в стадии сапорта.
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
Комментарий отредактирован 2017-07-23 10:55:01 пользователем Nemo
avatar
Спасибо за ссылки на статьи.
avatar
Уже пару лет работаю с psoc4. После AVR, PIC, STM8/32, MSP430 остановился на psoc. Забыл про настройки регистров и даже порой забываю про тактовую, сразу работаю над задачей. Достоинства: быстрое вхождение, бесплатная современная ide, бесплатная доставка fedex от одной мк, широкая линейка мк, и многое другое. Недостатки тоже есть конечно, но не глобальные. Всем советую
avatar
Уважаемый NEMO, как специалист компании Cypress, не могли бы вы мне помочь разобраться как устроена эмуляция EEPROM в PSOC4. Я понимаю что в 5LP она аппаратная, и использовать ее не составляет больших проблем. Но к сожалению мой проект сделан на PSOC4 и переделывать на 5LP довольно проблематично.
avatar
Добрый день! Опишите подробние, пожалуйста, Вашу проблему (тут или в приватном сообщении), я постараюсь Вам помочь. Я лично не работал с EEPROM в PSoC, но могу спросить колег. Как замену EEPROM советую FRAM, но микросхема будет внешняя, если Вам такое подходить.

Полезние ссылки:
www.cypress.com/documentation/component-datasheets/emulated-eeprom
www.cypress.com/documentation/code-examples/ce95313-emulated-eeprom-memory-psoc-345lp
Комментарий отредактирован 2018-02-25 18:43:00 пользователем Nemo
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.