Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Проектирование на программируемых системах на кристалле PSoC Cypress. Часть 1

Необходимость данной публикации вызвана, по мнению автора, недостатком русскоязычных материалов, посвященных проектированию на микросхемах PSoC. Конечно, рассмотреть в рамках статьи все особенности микросхем PSoC не представляется возможным, так как одно только техническое руководство имеет объем свыше пятисот страниц. Наша цель — дать читателю представление о процессе проектирования с использованием этих весьма интересных микросхем и помочь в их освоении, приведя несложные примеры.

Все статьи цикла:

  • Проектирование на программируемых системах на кристалле PSoC Cypress. Часть 1
  • Проектирование на программируемых системах на кристалле PSoC Cypress. Часть 2. Цифровая конфигурируемая периферия
  • Проектирование на программируемых системах на кристалле PSoC Cypress. Часть 3. Аналоговая конфигурируемая периферия
  • Проектирование на программируемых системах на кристалле PSoC Cypress. Часть 4. Системные ресурсы PSoC
  • Проектирование на программируемых системах на кристалле PSoC Cypress. Часть 5. Управление энергопотреблением
  • Проектирование на программируемых системах на кристалле PSoC Cypress. Часть 6. Клавиатуры, выполненные по технологии CapSense

Данная статья открывает цикл, посвященный проектированию на микросхемах PSoC фирмы Cypress. В первой части рассмотрено пошаговое создание несложного проекта в среде проектирования PSoC Designer, затрагивающего только микропроцессорное ядро.

Микросхемы PSoC фирмы Cypress представляют собой 8-битный микроконтроллер, содержащий микропроцессорное ядро и массив цифровых и аналоговых блоков, позволяющий реализовывать необходимые пользователю периферийные функции, как вполне стандартные, например ШИМ, АЦП или UART, так и такие необычные для микроконтроллеров, как, например, аналоговые фильтры и инструментальные усилители. Благодаря тому, что PSoC позволяют сократить количество используемых внешних компонентов, это существенно упрощает процесс разработки, удешевляет устройство и одновременно повышает его гибкость за счет возможности перепрограммирования в системе или реконфигурирования внутренней структуры прямо в процессе работы.

Устройство микросхем PSoC было описано в статьях [5] и [6] в предыдущих номерах журнала, поэтому в данной статье останавливаться на ознакомлении с внутренней структурой этих микросхем мы не будем, а перейдем к рассмотрению процесса создания проекта на базе этих чипов. Будет рассмотрен пакет САПР PSoC Designer, являющийся основным средством разработки, и создан простой пример, демонстрирующий работу портов ввода-вывода микроконтроллерного ядра PSoC и работу контроллера прерываний.

Установка программного обеспечения и оборудования

Для работы потребуются пакет PSoC Designer (версия 4.2) и последняя версия пакета обновлений (версия 4.2 SP 3), установка которого производится поверх установленного PSoC Designer 4.2. САПР PSoC Designer представляет собой интегрированную среду разработки, содержащую редактор исходных текстов программ, редактор внутренней структуры программируемой системы и отладчик.

Помимо пакета PSoC Designer для разработки потребуется и не входящий в его состав программатор — PSoC Programmer (последняя версия 1. 22.0.9). Все программы доступны на официальном сайте
www.cypress.com.

Существует два основных аппаратных средства, применяемых при разработке, — CY3215-DK (ICE-Cube) и CY3210-MiniProg1 (рис. 1). ICE-Cube является внутрисхемным эмулятором и используется для отладки проекта, а также может осуществлять «прошивку» микросхем PSoC. MiniProg является исключительно программатором и не поддерживает никаких возможностей для отладки проекта, его достоинство — низкая цена.

Рис. 1. Отладочная плата и программатор из комплекта MiniProg

Как ICE-Cube, так и MiniProg подключаются к ПК через кабель mini-USB. При первом подключении необходимо установить соответствующий драйвер. Драйверы для ICE-Cube и MiniProg находятся в каталоге CypressMicroSystemsPSoC Programmerdrivers. Создание проекта в PSoC Designer При запуске PSoC Designer возникает окно, предлагающее открыть существующий проект либо создать новый. При создании нового проекта необходимо выбрать тип микросхемы, на базе которой будет реализовываться устройство.

В комплекте MiniProg есть два образца микросхем CY8C29466-24PXI, выберем эту микросхему для создания нашего проекта. Далее необходимо выбрать язык, на котором будет создан файл, содержащий функцию main — основную функцию проекта. На выбор предлагается язык С или Assembler (рис. 2), однако следует учесть, что компилятор языка С, входящий в состав PSoC Designer, требует лицензирования и без регистрационного кода работать не будет.

Рис. 2. Выбор типа микросхемы и языка программирования

В том случае, если для разработки приобретается набор ICE-Cube, то в его состав входит и лицензия для компилятора C, в противном же случае необходимо покупать лицензию отдельно или пользоваться языком ассемблера.

После выбора микросхемы открывается окно редактора структуры микросхемы (Device Editor

) в режиме выбора модулей пользователя (User Module Selection View

, рис. 3). В этом режиме можно выбрать из библиотеки те модули, которые будут использованы в проекте, а также отображается структура модуля, его описание и информация о занятых и доступных ресурсах микросхемы.

Рис. 3. Режим выбора модулей

Никаких модулей выбирать не будем, а перейдем в другой режим редактора структуры микросхемы — режим редактирования связей и расположения модулей (Interconnection View

, рис. 4).

Рис. 4. Режим редактирования расположения и связей

Так как в нашем проекте не используются никакие модули, то в данном окне нам будут интересны только настройки глобальных ресурсов микросхемы (Global Resources)— окно в левом верхнем углу (рис. 5), а также настройки портов микроконтроллера — окно в левом нижнем углу (рис. 6).

Рис. 5. Окно настройки глобальных ресурсов микросхемы (Global Resources)

Рис. 6. Окно настройки портов микроконтроллера

Рассмотрим подробнее настройки глобальных ресурсов микросхемы.

Параметр Power Setting [Vcc/SysClk freq] устанавливает используемое микросхемой напряжение питания и тактовую частоту системы. Возможные варианты выбора этого параметра немного отличаются в зависимости от используемой серии PSoC или от температурного исполнения микросхемы. Для чипа CY8C29466-24PXI на выбор предлагаются следующие комбинации: 3,3 В/24 МГц, 3,3 В/6 МГц, 5 В/24 МГц и 5 В/6 МГц.

Параметр CPU_Clock задает тактовую частоту микропроцессорного ядра M8C. Эта частота получается делением системной частоты на 2n, где n— от 1 до 8.

Параметр 32K_Select указывает источник частоты 32 К— внутренний (Internal) RC-генератор на 32 000 Гц (точность этого генератора невелика), либо тактирование от внешнего (External) часового кварца — в этом случае частота составляет 32 768 Гц, что позволяет реализовывать внутренние часы реального времени.

Параметр PLL_Mode отвечает за синхронизацию внутреннего генератора 24 МГц с внешним кварцем 32 768 Гц.

Параметр SleepTimer устанавливает период специального внутреннего таймера, который может использоваться для генерации прерывания для выхода из режима «сна», для реализации часов реального времени или прочих нужд. Период этого таймера выбирается из следующих вариантов: 512 Гц, 64 Гц, 8 Гц, 1 Гц (деление на 2
6, 2
9, 2
12 и 2

15 соответственно).

Параметры VC1 и VC2 устанавливают делители для получения частот, используемых для тактирования цифровых и аналоговых блоков. Частота VC1 формируется из системной делением на коэффициент от 1 до 16. Частота VC2 формируется из VC1 также делением на коэффициент от 1 до 16.

Параметр VC3 Source позволяет выбрать источник для формирования частоты VC3, которая может использоваться как для тактирования цифровых блоков, так и для генерации прерывания. Источниками для формирования VC3 могут быть частоты VC1 или VC2, системная частота, либо удвоенная системная частота (при системной частоте 24 МГц становится возможным работа цифровых блоков на частоте 48 МГц).

Параметр VC3 Divider — делитель для формирования частоты VC3, он лежит в диапазоне от 1 до 256.

Параметр SysClk Source указывает источник системной частоты — внутренний генератор или внешняя частота, подаваемая на контакт P1[4].

Параметр SysClk*2 Disable включает или отключает встроенный умножитель системной частоты.

Параметр Analog Power устанавливает мощность источников опорных напряжений и определяет, включены или выключены аналоговые блоки на переключаемых конденсаторах.

Мощность источников опорных напряжений должна быть выбрана равной либо большей, чем установки мощности используемых в проекте пользовательских модулей.

Параметр Ref Mux устанавливает напряжение «аналоговой земли» для аналоговых блоков и диапазон входных напряжений.

Параметр AGndBypass позволяет использовать 4-й контакт порта P2 для подключения конденсатора для дополнительной фильтрации «аналоговой земли».

Параметр Op-Amp Bias определяет уровень наклона переходной характеристики операционных усилителей. Рекомендуется устанавливать этот параметр как LOW в начале разработки проекта. Если требуются более высокие частоты работы, тогда этот параметр может быть установлен как HIGH.

Параметр A_Buff_Power определяет мощность аналоговых выходных буферов.

Параметр SwitchModePump включает или отключает встроенный регулятор напряжения.

Параметр TripVoltage [LVD (SMP)] устанавливает уровень напряжения для определения факта падения напряжения (прерывание Low Voltage Detect), а также уровень напряжения, при падении ниже которого начинает работать блок SMP.

Параметр LVD Throttle Back включает или выключает автоматическое уменьшение скорости CPU при обнаружении падения напряжения.

Параметр Watchdog Enable включает или отключает сторожевой таймер.

Список глобальных параметров или их названия могут изменяться в зависимости от выбранной серии микросхем, однако эти изменения незначительны. Выше были приведены глобальные параметры для микросхем 29-й серии, самой мощной по внутреннему ресурсу.

Настройки портов позволяют выбрать режим работы контакта: порт микроконтроллера, глобальный цифровой вход или выход, аналоговый вход или выход, а также один из режимов работы выходного буфера — strong (стандартный режим), strong slow (выход с медленным нарастанием фронтов), pull-up или pull-down (подтяжка к питанию или земле через резистор 5,6 кОм), open-drain low или open-drain high (открытый сток). Кроме того, возможно разрешение прерывания от порта и выбор условия генерации этого прерывания: по фронту сигнала (Rising Edge), по спаду (Falling Edge) или по смене состояния (ChangeFromRead).

Начнем наши эксперименты по освоению PSoC с простейшего проекта — сделаем управление светодиодами на отладочной плате CY3210-MiniEval1 (рис.1), которая входит в комплекты MiniProg и ICE-Cube. На этой плате установлены четыре SMD-светодиода, подключенных к младшим контактам порта P2. Заставим эти светодиоды мигать с различной частотой. Для этого проекта нам потребуется источник частоты, по сигналу от которого мы будем переключать светодиоды.

В качестве такого источника возьмем прерывание от SleepTimer, в процедуре обработки которого и будем производить переключение. Установим в параметре SleepTimer период таймера 8 Гц, чтобы частота переключения светодиодов была зрительно видна.

Так как отладочная плата получает питание от MiniProg или ICE-Cube, то установим параметр Power Setting [Vcc/SysClk freq] равным 5 В/6 МГц. Значения остальных параметров в данном случае можно оставить по умолчанию, но так как мы не используем аналоговые и цифровые блоки, то хорошим тоном будет настроить параметры на пониженное энергопотребление следующим образом:

SysClk*2 Disable = Yes
Analog Power = All Off
Op-Amp Bias = Low
A_Buff_Power = Low
SwitchModePump = Off
Watchdog Enable = Off

Для того чтобы микропроцессорное ядро получило возможность управлять портом, необходимо установить в настройках для нужного порта режим StdCPU и выбрать один из режимов работы выходного буфера. В нашем случае выберем режим strong.

После того как сделаны все настройки, необходимо сгенерировать шаблон для программы, а также файлы с процедурами конфигурации. Для этого необходимо нажать на клавишу «Генерация проекта» (Application Generation

), либо выбрать пункт меню Config — Generate Application.

После того как сделаны все настройки, переходим в режим редактора программы (Application Editor

, рис. 7).

Рис. 7. Редактор исходных текстов программы

Программная структура проекта

В левой части редактора программ находится окно (рис. 8), отображающее файлы с исходными текстами, входящими в нашу программу.

Рис. 8. Программная структура проекта

Рассмотрим подробнее структуру проекта.

Ветвь Source Files содержит файлы с программным кодом пользователя. По умолчанию в этой ветке создаются два файла — boot.asm и main.asm.

Файл boot.asm содержит программный код, исполняемый при включении питания микросхемы. Этот код осуществляет:

  • инициализацию векторов прерываний;
  • загрузку конфигурации из таблицы во Flash-памяти в конфигурационные регистры;
  • инициализацию необходимого окружения, если используется компилятор языка С;
  • переход на функцию main.

Файл boot.asm создается при генерации проекта из файла boot. tpl, находящегося в рабочем каталоге проекта. Файл boot.asm создается каждый раз заново при внесении изменений в конфигурацию микросхемы, поэтому если необходимо внести какие-либо изменения в этот файл, например для установки векторов прерываний на необходимые процедуры, то редактировать следует файл boot.tpl.

Файл main.asm — основной файл проекта. Этот файл создается на указанном при создании проекта языке и содержит функцию main, которая начинает исполняться сразу же после окончания предварительной инициализации, выполняемой кодом в boot.asm.

Ветвь Headers содержит пользовательские заголовочные файлы с необходимыми определениями символьных имен и макроопределений. По умолчанию для микросхем 29-й серии, имеющей страничную организацию ОЗУ, в этой ветви создается файл memory.inc с необходимыми макроопределениями для работы со страничной памятью.

Ветвь Library Source содержит автоматически создаваемые файлы с программным кодом для программного интерфейса (API) модулей пользователя, а также файлы с процедурами, осуществляющими загрузку конфигурации (файлы psocconfig. asm и psocconfigtbl.asm, создаваемые по умолчанию).

Ветвь Library Headers содержит заголовочные файлы для модулей пользователя. По умолчанию генерируются файл globalparams.inc с определениями глобальных параметров и файл psocapi.inc, который содержит включения заголовочных файлов модулей пользователя, если они присутствуют.

Ветвь External Headers содержит файл m8c.inc с определениями текстовых имен регистров, а также макроопределения для установки/снятия битов в некоторых управляющих регистрах.

Файл f lashsecurity.txt содержит информацию о том, какие блоки Flash-памяти должны быть защищены от записи и считывания.

По умолчанию все блоки Flash-памяти имеют защиту как от внешнего считывания (программатором), так и от внешней и внутренней (из программы) перезаписи. Если в проекте предполагается использовать Flash-память для эмуляции EEPROM, то необходимо внести соответствующие исправления в этот файл для того блока или блоков, в которых будет размещаться область, эмулирующая EEPROM.

Для обеспечения какой-либо функциональности мы должны доопределить автоматически сгенерированный шаблон программы.

Для реализации нашей задачи переключения светодиодов с разной частотой добавим в файл main.asm процедуру обработки прерывания от SleepTimer — процедуру led_blink (см. листинг), а также изменим файл boot.tpl, добавив в таблицу векторов прерываний переход на данную процедуру:

org 64h ;Sleep Timer Interrupt Vector
ljmp led_blink ; переход к обработчику прерывания
reti

После внесения изменений в файл boot.tpl, для того чтобы эти исправления вступили в силу и отразились в файле boot.asm, необходимо вновь сгенерировать проект нажатием на клавишу Application Generation. В противном же случае при компиляции программы будет использована текущая версия boot.asm, не содержащая перехода на процедуру обработчика прерывания!


Листинг main. asm:
;---------------------------------------------------------------------------
--
; Assembly main line
;---------------------------------------------------------------------------
--
include «m8c.inc» ; part specific constants and macros
include «memory.inc» ; Constants & macros for SMM/LMM and
Compiler
include «PSoCAPI.inc» ; PSoC API definitions for all User Modules
export _main
_main:
; Insert your main assembly code here.
or reg[INT_MSK0], 0b01000000 ; разрешаем прерывание от
SleepTimer
M8C_EnableGInt ; разрешаем прерывания
.terminate:
jmp .terminate ; вечный цикл
area bss (RAM,REL,CON) ;
call_cntr: blk 1; объявление переменной-счетчика
area text (ROM,REL)
export led_blink ;экспортируем метку, чтобы она была доступна
из других файлов
led_blink:
push A ;не забываем сохранить аккумулятор в стеке
inc [call_cntr]
;изменяем только младшие 4 бита порта P2
inc [call_cntr]
mov A, reg[PRT2DR]
and [call_cntr], 0x0F
and A, 0xF0
or A, [call_cntr]
mov reg[PRT2DR], A
pop A ;восстанавливаем аккумулятор
reti ;возвращаемся из прерывания

Переменная call_cntr является счетчиком вызовов прерывания — она и делит входную частоту 8 Гц, благодаря чему светодиоды загораются с частотами 4 Гц, 2 Гц, 1 Гц, 0,5 Гц.

Контроллер прерываний в PSoC управляется следующими регистрами: INT_CLRx, INT_MSKx, INT_VC, CPU_F.

Регистры INT_CLRx при чтении отображают текущее состояние запросов на прерывание от конкретных источников, а при записи позволяют сбросить какой-либо запрос, или наоборот — его программно установить.

Регистры INT_MSKx позволяют разрешить или запретить генерацию прерывания от какого-либо конкретного источника, в то время как младший бит регистра CPU_F отвечает за глобальное разрешение или запрещение прерываний. Регистр INT_VC при чтении возвращает вектор прерывания, которое будет обработано следующим, а при записи позволяет сбросить все запросы на прерывание.

Контроллер прерываний в PSoC подразделяет запросы на прерывание на отложенные и ожидающие обслуживания. Принципиальная разница заключается в том, что отложенный запрос является сигналом от источника прерывания, защелкнутым во входном триггере, но его дальнейшее распространение запрещено маскирующим регистром. В свою очередь, ожидающий обслуживания запрос — это сигнал, прошедший через схему маскирования и поступивший на схему приоритетного кодирования, которая выдает микропроцессорному ядру вектор прерывания, соответствующий запросу с наивысшим приоритетом. Таким образом, если имеет место запрос от источника прерывания, его обработка может начаться либо непосредственно после возникновения (если в данный момент нет более приоритетного запроса), либо при размаскировании отложенного запроса, либо при установке глобального бита разрешения прерываний.

В качестве источников прерываний могут выступать как системные ресурсы ядра (сторожевой таймер, SleepTimer, контроллер I2C, схема мониторинга напряжения питания, порты ввода-вывода), так и выходы всех цифровых блоков, а также выходы компараторов в аналоговых блоках.

Подробно работа контроллера прерываний рассмотрена в [1] в разделе 5 — Interrupt Controller секции B: PSoC Core.

В нашем примере мы разрешаем только прерывание от SleepTimer установкой 6-го бита в регистре INT_MSK0 и разрешаем прерывания установкой младшего бита регистра CPU_F с помощью библиотечного макроса M8C_EnableGInt.

Работу портов ввода-вывода контролируют следующие регистры: PRTxDR, PRTxIE, PRTxGS, PRTxDMx, PRTxICx.

Регистры PRTxDR при чтении отображают состояние контактов, а при записи изменяют их состояние в соответствии с записанным значением.

Регистры PRTxGS — регистры выбора режима работы контакта порта: работа как глобальный цифровой вход или выход, либо как порт микроконтроллера (отображает состояние регистра PRTxDR).

Регистры PRTxDMx — регистры выбора режима работы выходного буфера.

Регистры PRTxIE — регистры разрешения генерации прерывания GPIO для каждого конкретного контакта порта.

Регистры PRTxICx — регистры выбора типа прерывания.

Все эти регистры, за исключением PRTxDR, содержат настройки, задаваемые в редакторе структуры микросхемы. Для многих случаев достаточно такой начальной настройки, однако эти регистры доступны и при выполнении программы. Благодаря этому можно, например, перенастраивать режим работы буферов для реализации двунаправленной шины, контакт для работы с цифровыми или аналоговыми блоками и так далее.

При работе с портами следует учитывать две особенности. Первая заключается в том, что для общения с портом используется 8-битный регистр PRTxDR, каждый бит которого отвечает за состояние соответствующего контакта. Поэтому для изменения состояния контактов такими битовыми операциями, как AND, OR или XOR, следует пользоваться с осторожностью. Дело в том, что эти операции при изменении регистра данных сначала производят чтение из него, а затем изменение и запись. В том случае, например, если контакт порта сконфигурирован на работу в режиме с резистивной подтяжкой к «земле» и выходной триггер установлен в 0, но на контакте физически присутствует потенциал логической единицы, то выходной триггер будет установлен в 1 при выполнении битовой операции для изменения какого-либо другого контакта порта.

Вторая особенность заключается в том, что для всех контактов ввода-вывода, которые настроены как источники запроса на прерывание, используется один вход контроллера прерываний (все сигналы с портов объединяются через монтажное «ИЛИ») и, соответственно, один вектор, поэтому в процедуре обработки необходимо определять, какой из контактов вызвал прерывание. Кроме того, из-за использования схемы монтажного «ИЛИ» возможна ситуация, когда один запрос снимается в то время, когда устанавливается другой, поэтому на входе контроллера прерываний не происходит изменения и запрос может оказаться не обслуженным.

Во избежание появления такой ситуации следует перед выходом из процедуры обработки прерывания проверять изменение состояния контактов.

Подробно работа портов ввода-вывода рассмотрена [1] в разделе 6— General Purpose IO (GPIO) секции B: PSoC Core.

После внесения изменений в текст программы выполняем ассемблирование модулей программы и сборку hex-файла прошивки (клавиши Compile/Assemble

и Build

, либо соответствующие пункты меню Build).

Загрузка программы

Следующий шаг — загрузка программы во Flash-память микросхемы PSoC.

Подсоединяем MiniProg к разъему внутрисхемного программирования на отладочной плате и USB-кабелем соединяем с ПК.

Вызываем программатор PSoC Programmer (рис. 10) нажатием на клавишу Program Part

, либо через меню Start ОС Windows. В том случае, если PSoC Programmer вызывается из оболочки PSoC Designer, то hex-файл текущего проекта оказывается уже открытым, в противном случае его надо открыть самостоятельно. Далее необходимо выбрать порт, к которому подключен MiniProg, серию и тип программируемой микросхемы. Возможны два режима программирования — режим Reset и режим Power Cycle. В Reset для инициализации режима программирования используется контакт XRES, при этом микросхема должна быть запитана от какоголибо внешнего источника. В режиме Power Cycle инициализация программированияпроисходит при подаче питания на микросхему, при этом питание она получает от USB через MiniProg, либо от ICE-Cube.

Так как отладочную плату MiniEval проще всего запитать от USB, то выберем режим программирования Power Cycle. «Прошивка» микросхемы осуществляется нажатием на клавишу Program.

Время загрузки образа программы во Flash-память микросхемы и выполнения проверки зависит от объема Flash-памяти. Для микросхем 29-й серии загрузка программы и проверка занимают примерно одну минуту. После завершения загрузки программы устройство оказывается обесточенным, поэтому для запуска программы необходимо установить флажок Power Device для подачпитания на устройство.

Заключение

Рассмотренный в данной статье пример демонстрирует лишь небольшую часть всех возможностей микросхем PSoC. Далее будет подробно рассмотрена работа цифровых и аналоговых периферийных блоков программируемой системы на кристалле — ключевой особенности, отличающей PSoC от всех других микроконтроллеров.

Литература

  1. PSoC™ Mixed Signal Array Technical Reference Manual (TRM) Version 2.00
  2. PSoC Designer IDE User Guide
  3. Assembly Language User Guide
  4. Application Note AN2221 — Global Resources in PSoC™ Designer
  5. Кузминский А.
    Программируемые системы на кристалле компании Cypress Semiconductor. // Компоненты и технологии.
    2003. № 2.
  6. Емец С. Микроконтроллеры с реконфигурируемой периферией PSoC производства Cypress MicroSystems — восьмиразрядники нового тысячелетия. Компоненты и технологии. // 2004. № 4.

PSoC – первое знакомство

PSoC – первое знакомство

Идея

Аббревиатура «PSoC» расшифровывается как «Programmable-System-on-Chip» – «Программируемая Система на Кристалле». Под этой торговой маркой фирма Cypress Semiconductor Corporation выпустила особый класс микросхем, содержащих на кристалле (см. рисунок), помимо процессорного ядра, матрицу из аналоговых и цифровых блоков.

Эти блоки являются функционально законченными узлами (причем каждый из них способен выполнять одну из нескольких возможных функций) и могут соединяться между собой, а также с внешним миром согласно желанию разработчика, т.е. для выполнения требуемой задачи. Получается, что большая часть обвязки, неизбежно возникающая при проектировании устройств на микроконтроллерах, переносится внутрь кристалла.

Во-вторых – более рационально используются внутренние ресурсы. Если в обычных микроконтроллерах неиспользуемые функциональные модули (ШИМ генераторы, таймеры, АЦП, UART, SPI и т.д.) являются просто балластом, то блоки PSoC (из которых строятся модули) могут быть «перепрофилированы» для решения дополнительных задач.

В довершение ко всему, межсоединения и индивидуальные настройки блоков не задаются раз и навсегда, а могут меняться в процессе функционирования устройства. В итоге «легким движением руки брюки превращаются… брюки превращаются…» ну, например, в гитарную приставку, а затем – в устройство для сжатия и шифрования речи (если, конечно, вам нужна именно такая экзотическая функциональность).

Начало изучения технической документации повергает новичка в глубокий ужас – на голову обрушивается огромный поток описания структуры блоков, их регистров и тонкостей конфигурирования. Но этот этап до поры, до времени, лучше пропустить – фирма предлагает готовые решения, выполненные на основе блоков. Это так называемые «Модули Пользователя» («User Modules») – счетчики, усилители, фильтры, АЦП и проч. узлы, впечатляющий перечень которых можно посмотреть здесь. А среда разработки «PSoC Designer» позволяет не только выбирать модули из библиотеки, но и наглядно осуществлять их размещение на кристалле, а также выполнять межсоединения.

Здесь же всегда под рукой и удобная справка по модулям. Изменение параметров модулей (в процессе функционирования устройства) программисту легче производить не прямым изменением битов в регистрах управления (в которых сам черт ногу сломит), а посредством API, т.е. с помощью вызовов процедур. Примеры вызовов этих процедур есть в описаниях модулей. Сами эти процедуры добавляются в проект автоматически, при выборе модулей из библиотеки.

На рисунке показан только один представитель семейства PSoC – микросхема серии CY8C27xxx (где сочетание «xxx» кодирует количество портов ввода-вывода, а окончание вида –24xxx определяет тактовую частоту 24 МГц и тип корпуса). На самом деле серий несколько, и различаются они своими возможностями – объемом памяти, количеством аналоговых и цифровых блоков, наличием интерфейса USB, возможностью прямого подключения емкостных датчиков и т.д. – для того, чтобы пользователь мог выбрать подходящий для его конфигурации вариант.

Характеристики CY8C27xxx и CY8C29xxx

■ Процессор:
– ядро M8C (гарвардская архитектура) с максимальной тактовой частотой 24 МГц
– аппаратный умножитель 8×8 с 32-битным суммирующим регистром (у CY8C29xxx таких умножителя два)
– напряжение питания от +3,0 до +5,25 В
– возможность питания от +1,0 В при использовании встроенного преобразователя (“Switch Mode Pump”)
– диапазон температур от -40C до + 85C (индустриальный )
■ PSoC-блоки:
– 12 аналоговых блоков (с рабочими напряжениями сигналов от 0 до + питания)
– 8 цифровых блоков ( у  CY8C29xxx — 16)
Модули Пользователя составляются из одного из нескольких блоков
■ Тактирование:
– часовой кварц 32 768 Гц с умножением частоты до 24 МГц (петля ФАПЧ)
– внутренний генератор 24 МГц (погрешность +/- 2,5%)
– внешнее тактирование частотой до 24 МГц
– независимый внутренний генератор для сторожевого таймера и таймера “спящего” режима
– внутренний удвоитель на 48 МГц
– три источника частот с программируемыми делителями
■ Память на борту:
– 16 кб FLASH (32 кб у CY8C29xxx, 50 000 циклов перезаписи)
– 256 байт SRAM (2 кб у CY8C29xxx)
– программирование FLASH по последовательному каналу (ISSP)
– возможность частичного обновления блоками по 64 байт
– несколько уровней защиты памяти
– эмуляция EEPROM во FLASH
■ Программируемые входы-выходы:
– до 12 аналоговых входов, 4 аналоговых выхода (нагрузка до 40 мА)
– нагрузка до 25 мА на выходах, сконфигурированных как цифровые
– индивидуальные режимы для выходов: быстрый/медленный выход, “открытый исток/сток”, подключение подтягивающих резисторов сверху/снизу, Z-состояние
– различные условия возникновения прерываний
■ Дополнительная периферия:
– приемопередатчик I2C (Master /Slave, Multi-Master до 400 кГц)
– сторожевой таймер и таймер выхода из “спящего” режима
– обнаружитель снижения напряжения питания и встроенная схема супервизора
– источник опорных напряжений
– дециматор

Процессорное ядро M8C имеет довольно удобную систему команд (см. таблицу). Самая короткая команда (длиной в 1 байт) выполняется за 4 такта (при максимальной тактовой частоте ядра 24 МГц это составит 6 млн. операций в секунду). Ядро хотя и имеет столь нелюбимую мною «аккумуляторную» структуру, есть много команд в обход аккумулятора, делающих программирование на машинном языке довольно приятным.

Естественно, память программ выполнена по FLASH технологии, микросхема допускает внутрисхемное программирование (по двум линиям, к которым обычно подключается кварцевый резонатор, плюс линия сброса). Вся память программ разбита на блоки по 64 байта, с групповым стиранием внутри каждого блока. Есть команды чтения и записи в эту область из самой программы, что делает ненужным существование отдельной энергонезависимой памяти данных (EEPROM).

Для подключения к низковольтным источникам питания (например, к аккумулятору 1,2 В) на кристалле предусмотрен узел преобразователя напряжения, требующий подключения только двух внешних компонентов – индуктивности и выпрямительного диода.

Генератор тактовой частоты может быть как внутренним (точность 2,5%), так и внешним. К двум ногам может цепляться часовой кварц (32768 кГц), который с помощью системы ФАПЧ стабилизирует внутренние тактовые частоты. Внутренних источников тактовых частот несколько – они используются для тактирования процессорного ядра и цифровых/аналоговых блоков. Максимальная тактовая частота цифровых блоков может достигать 48 МГц, но на ножки микросхемы можно подавать импульсы частотой только до 12 МГц.

Выводы выдерживают токи до 25 мА, некоторые (аналоговые) – до 50 мА, к выводам напрямую (т.е. без мощных драйверов) я подключал светодиодное табло в динамическом режиме индикации. Возможно и прямое управление дешевыми (не содержащими встроенного контроллера) жидкокристаллическими индикаторами – подробно о создании многоуровневых сигналов рассказано в документе AN2228 – «LCD Driving Methods using PSoC».

Среди периферийных устройств есть такой интересный узел, как «Умножитель-Аккумулятор» (Multiply Accumulate, сокращенно MAC). Помимо заурядного аппаратного умножения, он может накапливать сумму результатов в 32-разрядном регистре. Такой алгоритм требуется при выполнении операций свертки, корреляционных вычислениях, преобразованиях Фурье и алгоритмах цифровой фильтрации. Понимая актуальность этого узла, фирма Cypress запихнула ДВА таких суммирующих умножителя в кристаллы серии CY8C29xxx.

А вообще, для людей, начавших осваивать PSoC, архитектура кристалла таит в себе много приятных сюрпризов. Номенклатура PSoC микросхем весьма широка, она включает в себя 8-, 20-, 28-, 32-, 44-, 48- и даже 100-выводные модификации в корпусах различных типов.

Более подробно про PSoC на русском языке можно почитать в серии статей из журнала «Компоненты и технологии», ссылки на которые приводятся здесь на сайте, либо скачав весь цикл единым архивом:
«Проектирование PSOC» (архив 2,7 МБ).


Завоюют ли PSoC-и мир?

На сайте компании постоянно растет библиотека описаний (Application Notes) особенностей разработки тех или иных узлов, а также удачных готовых разработок. Это – датчики присутствия для охранных систем, измерительные приборы, бытовая электроника и еще многое другое. С ультразвуковым измерителем дальности можно познакомиться здесь (477 кБ).

Стоимость чипов постоянно снижается, цена CY8C27443-24PVI на начало 2004 года у производителя составляла $3,85 (в Чип-и-Дипе – 185 р).

Техническая документация очень подробна и выполнена на высоком уровне. Среда разработки «PSoC Designer» хотя и тяжеловесна (а скорость ее работы оставляет желать лучшего), но зато с ней можно работать, практически не читая предварительно никакой документации – все и так интуитивно понятно.


А может нет?

Начав разрабатывать устройство, не всегда удается сразу сказать, реализуется ли оно полностью средствами PSoC. В моем опыте было несколько «обломов», когда казалось, что устройство вот-вот получится, но в результате мелкой «каверзы» Cypress (как правило – из-за невнимательного чтения технической документации) приходилось долго искать альтернативные варианты реализации.

Развитие прямых конкурентов – PIC и AVR – также не стоит на месте, а у людей есть большой опыт и наработки в программировании этих микросхем. Вдобавок, появился многоядерный Propeller – чем его «Cog» не есть аналог «Модуля Пользователя»?!

Cypress, во всяком случае, надеется…


Послесловие

Развитие PSoC продолжается дальше. В ногу со временем на кристалл привносятся новые возможности – поддержка емкостных сенсоров, беспроводного интерфейса, USB, и т.п. Имейте ввиду, что содержимое этого сайта обновляется эпизодически. Поэтому прочитанное здесь не отражает последних событий с фронта Cypress.

Например, уже появились новые поколения – «PSoC-3» и «PSoC-5» (серии CY8C3xxxx и CY8C5xxxx соответственно). У них не только другие процессорные ядра, но и иная концепция аналоговой и цифровой части.

Цифровая матрица здесь расширена до 24 блоков с гораздо большей свободой межсоединений, а сам цифровой блок представляет собой программируемый автомат со своим собственным АЛУ. Такая архитектура, по заявлению разработчиков, «создает балланс между степенью гранулярности системы и простотой реалицации блока». Такие традиционные блоки, как Timer, Counter и PWM «перекочевали» в разряд фиксированных ресурсов (как это свойственно традиционным микроконтроллерам). Рабочая частота блоков может достигать 80 МГц.

В новой концепции ряд аналоговых модулей упростился и потерял свою гибкость. Фиксированными ресурсами стали быстродействующие АЦП на 12 бит (1 Msps у «PSoC-5» и 192 ksps у «PSoC-3»), дельта-сигма АЦП с изменяемой разрядностью (до 20 бит), 8-битные ЦАП по току/напряжению (8 Msps и 1 Msps), быстродействующие компараторы, температурный сенсор с собственным АЦП, подсистема опроса емкостных датчиков и подсистема прямой работы с ЖК-индикаторами (до 48×16 сегментов). Привычные мультифункциональные CT/SC-блоки на основе ОУ есть не на всех кристаллах.

У «PSoC-3» на кристалле имеется 8-разрядное процессорное ядро 8051 («single cycle» на частоте до 48 МГц), а у «PSoC-5» – 32-разрядное ARM Cortex-M3 (рабочая частота до 80 МГц).

И еще несомненное преимущество новых PSoC-ов – появился стандартный отладочный интерфейс JTAG, плюс альтернативный 2-х проводный SWD (в первых поколениях PSoC такой интерфейс имели только специальные, «отладочные» версии кристаллов). Под новые чипы выпущена и новая среда разработки – «PSoC Creator».


Взгляд из 2022 г.

Конечно, теперь, в эпоху гигагерц и гигабайтов, когда микроконтроллеры нафаршированы десятками единиц разнообразной периферии, упоминание про «Умножитель-Аккумулятор» может вызвать только снисходительную улыбку. Понятно, что ниша PSoC – это не DSP (цифровая обработка сигналов) и не «разруливание» сигналов в сколько-нибудь сложной системе. И даже не серьезная аналоговая обработка – качество сигнала и функциональные возможности оставляют желать лучшего. Для мелкой автоматизации – сгодится. Но не более того.


antiradio.narod.ru/psoc
Дата создания документа: 14.08.2004. Последнее обновление: 15.09.2022.

32-разрядный микроконтроллер PSoC™ Arm® Cortex®

Обзор

Подкатегории 32-разрядных микроконтроллеров PSoC™ Arm® Cortex®

Свернуть все подкатегории Развернуть все подкатегории

Микроконтроллеры

PSoC™ — это единственные в мире программируемые встроенные решения System-on-Chip, основанные на процессоре ARM ®  Cortex ® -M, высокопроизводительных программируемых аналоговых блоках, программируемых цифровых блоках на основе PLD, программируемом межсоединении и маршрутизации, и CapSense™.

Быстрое создание прототипа: Используйте гибкое программное обеспечение PSoC для проектирования, чтобы создавать собственные чипы за считанные минуты, а не часы. Создайте набор периферийных устройств, который вы хотите на своем чипе, выберите любой контакт, который вы хотите, и все готово.

Нет синих проводов:  Учитывать изменения функций в последнюю минуту и ​​устранять аппаратные ошибки путем перенастройки программируемых аппаратных блоков PSoC с использованием компонентов PSoC для устранения задержек, вызванных вращением печатной платы.

Интерфейс для новых датчиков:  Разрабатывайте собственные аналоговые внешние интерфейсы (AFE) с использованием компонентов PSoC и программируемых аналоговых блоков, чтобы добавлять новые функции в ваш продукт без увеличения размера печатной платы и стоимости спецификации.

Программное обеспечение Infineon PSoC™ предоставляет простые в использовании инструменты для быстрого и легкого продвижения ваших идей на рынок. ModusToolbox включает новейшие инструменты разработки Infineon, включая IDE. PSoC Creator предлагает революционную методологию проектирования входных схем и интегрированную среду разработки.

PSoC™ 6 PSoC 6: специально создан для Интернета вещей

  • PSoC™ 6 — это новейший микроконтроллер Cypress PSoC™, построенный на двухъядерной архитектуре ARM ® Cortex ® -M, обеспечивающий лучшее в отрасли сверхнизкое энергопотребление, гибкость и безопасность для IoT
  • .
  • Включает в себя высокопроизводительный процессор ARM ® Cortex ® -M4 и маломощный процессор ARM ® Cortex ® -M0+, лучший в отрасли CapSense™, программно-определяемые аналоговые и цифровые периферийные устройства и несколько вариантов подключения. такие как BLE и USB
  • Интегрированная аппаратная доверенная среда выполнения с безопасным хранилищем данных

PSoC™ 4: самая гибкая и масштабируемая архитектура смешанных сигналов с низким энергопотреблением в отрасли. с уникальным программируемым аппаратным IP для смешанных сигналов PSoC и CapSense ™, в результате чего получается самая гибкая и масштабируемая маломощная архитектура смешанных сигналов в отрасли.

Программное обеспечение PSoC™

Программное обеспечение Infineon PSoC™ предоставляет простые в использовании инструменты для быстрого и легкого продвижения ваших идей на рынок. ModusToolbox включает новейшие инструменты разработки Infineon, включая IDE. PSoC Creator предлагает революционную методологию проектирования входных схем и интегрированную среду разработки.

ModusToolbox™

ModusToolbox™ был создан, чтобы облегчить жизнь разработчикам. Это набор простого в использовании программного обеспечения и инструментов, позволяющих быстро разрабатывать микроконтроллеры Infineon, охватывающие приложения от встроенных датчиков и систем управления до беспроводных и облачных систем с использованием PSoC™ 6, PSoC™ 4, XMC™, AIROC™ Wi- Fi, AIROC™ Bluetooth® и AIROC™ Wi-Fi и комбинированные устройства.

PSoC™ Creator

PSoC Creator — это интегрированная среда проектирования (IDE), которая позволяет одновременно редактировать аппаратное и микропрограммное обеспечение, компилировать и отлаживать системы PSoC и FM0+. Приложения создаются с использованием схемы и более 150 предварительно проверенных, готовых к производству периферийных компонентов.

Продукты

Детали

Документы и загрузки

Поддержка дизайна

Видео

Партнеры

Изучите экосистему партнеров для PSoC™

  • Экосистема предпочтительных дизайнерских домов PSoC™

Обучение

Automotive PSoC™ 4: Представляем интеллектуальные датчики для HMI, BMS и других устройств

  • Ознакомьтесь с портфелем продуктов Automotive PSoC™ 4.
  • Определите основные характеристики каждого семейства и поколения и выберите наиболее подходящее решение для ваших различных задач.

Ручное обнаружение рулевого колеса с помощью технологии CAPSENSE™ от Infineon

  • Описание основ технологии CAPSENSE™ от Infineon, а также некоторых виджетов приложений и вариантов использования
  • Опишите реализацию ручного обнаружения на рулевом колесе с использованием PSoC™ 4 и технологии CAPSENSE™

Приложения

Поддержка

Контакт

32-бит PSoC™ 6 Arm® Cortex®-M4 / M0+ | Микроконтроллеры, специально созданные для Интернета вещей

Обзор

32-битный PSoC™ 6 Arm® Cortex®-M4 / M0+ подкатегории

Семейство PSoC™ 6 основано на архитектуре со сверхнизким энергопотреблением, а в микроконтроллерах используются методы проектирования с низким энергопотреблением, которые идеально подходят для приложений с питанием от батареи. Двухъядерная архитектура Arm® Cortex®-M4 и Cortex-M0+ позволяет разработчикам одновременно оптимизировать мощность и производительность. Используя два ядра в сочетании с настраиваемой памятью и блоками защиты периферийных устройств, микроконтроллер PSoC™ 6 обеспечивает высочайший уровень защиты, определяемый архитектурой безопасности платформы (PSA) от Arm.
Разработчики могут использовать богатые аналоговые и цифровые периферийные устройства MCU для создания пользовательских аналоговых интерфейсов (AFE) или цифровых интерфейсов для инновационных системных компонентов, таких как датчики MEMS, дисплеи с электронными чернилами. Микроконтроллер PSoC™ 6 оснащен ведущей в отрасли технологией емкостных датчиков CAPSENSE™ последнего поколения, обеспечивающей надежные и надежные современные интерфейсы на основе касаний и жестов. Микроконтроллер PSoC™ 6 в сочетании с комбинированными радиомодулями AIROC™ Wi-Fi, AIROC™ Bluetooth® или AIROC™ от Infineon является идеальным решением для безопасных, маломощных и многофункциональных продуктов IoT.

Сравнение семейств

Общий набор функций Семейство продуктов Флэш-память (КБ) SRAM (КБ) GPIO Аудио (I2S, PDM-PCM) CAN-FD ЦАП Операционный усилитель Встроенная радиосвязь BLE
  • Двухъядерная архитектура ЦП (ARM Cortex-M4, 150 МГц, Arm Cortex M0-p, 100 МГц)
  • Контроллеры прямого доступа к памяти
  • Интерфейс внешней памяти QSPI
  • CapSense
  • I2C
  • УАПП
  • СПИ
  • USB-ФС
  • 12-разрядный АЦП последовательного приближения
  • Компаратор малой мощности
  • РТК
  • Таймер, счетчик, ШИМ
  • Сегмент ЖК-дисплея
  • Криптоускоритель (DES/TDES, AES, SHA, CRC, TRNG, RSA/ECC)
  • Программа SWD/JTAG и отладка
  • Память OTP
  • от -40 ºC до 85 ºC

PSoC 61 (программируемая линия) — одноядерный ЦП (Arm Cortex M-4)

Выбор продукта PSoC 61

CY8C61xA, CY8C61x8 1024 до 2048 512 до 1024 102        
CY8C61x7, CY8C61x6 512 до 1024 от 128 до 288 100    
CY8C61x5 512 256 64        
CY8C61x4 256 128 62    

PSoC 62 (Performance Line) — двухъядерный ЦП (ARM Cortex M-4, Arm Cortex-M0p)

Выбор продукта PSoC 62

CY8C62xA, CY8C62x8 1024 до 2048 512 до 1024 102        
CY8C62x7, CY8C62x6 512 до 1024 от 128 до 288 100    
CY8C62x5 512 256 64        
CY8C62x4 256 128 62    

PSoC 63 (линия подключения) — двухъядерный процессор (ARM Cortex M-4, Arm Cortex-M0p), BLE

PSoC 63 Выбор продукта

CY8C63x7, CY8C63x6 512 до 1024 от 128 до 288 84  

PSoC 64 (Security Line) — двухъядерный ЦП (Arm Cortex M-4, Arm Cortex-M0p)

Безопасная среда обработки, защитное встроенное ПО, безопасная загрузка

Выбор продукта PSoC 64

CYS0644A 1856 944 100        
CYB0644A 1856 944 100        
CYB06447 832 176 100    
CYB06447-BL 832 176 84  
CYB06445 384 176 53        

Программное обеспечение PSoC™

Программное обеспечение Infineon PSoC™ предоставляет простые в использовании инструменты для быстрого и легкого продвижения ваших идей на рынок. ModusToolbox включает новейшие инструменты разработки Infineon, включая IDE. PSoC Creator предлагает революционную методологию проектирования входных схем и интегрированную среду разработки.

ModusToolbox™

ModusToolbox™ был создан, чтобы облегчить жизнь разработчикам. Это набор простого в использовании программного обеспечения и инструментов, позволяющих быстро разрабатывать микроконтроллеры Infineon, охватывающие приложения от встроенных датчиков и систем управления до беспроводных и облачных систем с использованием AIROC™ Wi-Fi, AIROC™ Bluetooth® и AIROC™ Wi. -Fi и Combo устройства.

 

Задайте вопрос сообществу PSoC™ 6

Сообщество разработчиков Infineon доступно круглосуточно и без выходных, чтобы вы могли общаться и общаться с инженерами по всему миру. Получите помощь от инженеров службы поддержки Infineon и экспертов, чтобы решить свои проблемы проектирования в любое время, в любом месте, по любой теме и на предпочитаемом вами языке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *