PSoC 1. Быстрый старт.

Дня начала работы нам нужно:
- Микроконтроллер, у меня cy8c27443
- Программатор Cypress ICE-Cube, Cypress MiniProg или самодельный (видел в интернете, но точных ссылок дать не могу).
- Среда разработки PSoC Designer, скачиваем на официальном сайте.
Хорошо если есть борд, но можно и без него, просто распаять на макетке или при большом желании сделать свой. У меня CY3210-MiniEval1, и все примеры сделаны на ней.
По старинной традиции, первая программа будет мигать светодиодом :)Чтобы не было совсем скучно, используем для мигания светодиода модуль — даже об этом позаботились:) (конечно можно мигать светодиодом классическим способом — настроили порт, и кидаем туда 0 и 1 через задержки) и поработаем с DAC.
Запускаем среду PSoC Disigner 5.3 заходим в File -> New Project:

Задаем имя проекта, папку в которой будем сохранять, выбираем микроконтроллер из списка и язык С.
Кратко опишу среду разработки:

- Настройка глобальных параметров, таких как тактовая частота,3 разних частоты полученных с тактовой,PLL(умножение тактовой частоты на 2), опорное напряжение для АЦП, и другие. Подробно о каждом параметре можно почитать тут.
- Цифровые блоки и порты I/O. В каждой цифровой блок можно вставлять модуль переферии, и подключать к выводам портов.
- Настройка параметров модуля.
- Настройка выводов I/O.
- Аналоговые блоки и порты I/O.
- Структура проекта и сгенерированные библиотечные файлы.
- Модули переферии, которые вставляються в цифровые или аналоговые блоки.
*Не все модули занимают цифровой или аналоговой блок. Есть ограничение — не каждый модуль можно подключить к выводу порта который нужный.
Очень интересной и удобной особенностью среды, есть то что при установке также загружены даташиты. И посмотреть как работать с каждым модулем можно очень просто. Покажу на примере. Мы будем использовать модуль LED, но как с ним работать еще не знаем:

Открываем даташит, смотрим в самом верху страницы:

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

С модулем познакомились, теперь добавим его к проекту, кликаем по нему два раза и он добавляеться:

Переходим в окно просмотра и редактирования параметра модуля:


тут все просто: для удобства редактируем имя модуля, выбираем порт, вывод к которому подключен светодиод, и схему включение с ОА или ОК.
Аналогическим образом добавляем модуль DAC. Модуль установился в ячейки ASC10, ASC20, но при желании можно переместить в другие ячейки. Чтобы посмотреть до которого вывода можно подключить выход DAC — нажимаем «Shift» и кнопкой мыши нажымаем на вывод модуля «AnalogBus», линия показывает нам что в этих ячейках, мы можем подключиться только до вывода Port_0_3 (порт 0, вывод 3):

чтобы соединить выход модуля с выводом порта, удерживаем «Shift» и кликаем на выходе модуля, и на выводе:

настраиваем параметры модуля:

Когда все модули будут настроены и соединены с выводами портов(если нужно). Заходим в Build — > Generate/Build project или нажимаем иконку:

Начнеться генерирование проекта и API функций.
Как настроены выводы, или их настроить можно здесь:

Когда проект сгенерируется заходим в структуру проекта, и выбираем сгенерированный файл для работы со светодиодом:

открываем файл, видим список функций, и копируем нужные в main.c:

напишем небольшую программу для мигания светодиодом, и выводом значений на DAC:
//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
unsigned char DAC_Counter = 0;
void Delay(unsigned int value)
{
unsigned int i = 0;
for (i = 0; i < value; i++);
}
void main(void)
{
LED_TEST_Start();
DAC8_1_Start(DAC8_1_HIGHPOWER);
//M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
// Insert your main routine code here.
while(1)
{
LED_TEST_Invert();
DAC8_1_WriteStall(DAC_Counter);
DAC_Counter += 10;
if (DAC_Counter == 250) DAC_Counter = 0;
Delay(50000);
}
}
Прошиваем проект — заходим в Program -> Program Part. Идет процесс прошивки:

Осцилограмма сигнала на выходе DAC:

А теперь можно посмотреть сколько ресурсов занимает конфигурация и код. Заходим в View -> Resource Meter:

Всем спасибо за внимание!
- +7
- 12 декабря 2012, 23:40
- Nemo
На блоге увидел статью PSoC 5.Введение. Создание проекта. очень понравилась, решил написать свою но о PSoC 1, самом младшем семействе микроконтроллеров Cypress. Микроконтроллеры PSoC 1 восьмибитные. Их отличие от других производителей мк есть то что переферийные модули (таймеры,UART, и другие) можно добавлять в зависимости от потребности. Можно сказать что cypress микроконтроллеры смесь FPGA і uC.
ничего не изминилось
ничего не изминилось
Так а какие ограничения по количеству таймеров, UART-ов и т д?
- BarsMonster
- 13 декабря 2012, 18:13
- ↑
- ↓
Если взять например CY8C29466 то в ней 16 цифровых 8-битных блоков. Каждый из этих блоков может работать как 8-бит таймер/счетчик/PWM/много_еще_чего. 8 из 16 блоков — коммуникационные, каждый из них может работать как SPI или UART приемник/передатчик. Для полнодуплексного UART необходимы два блока. Итого аппаратных UART-ов — макс 4шт, SPI-макс 8шт. 8-разрадных PWM — макс 16шт. Цифровые блоки могут обьеденятся и формировать блоки с бОльшей разрядностью, например на 3х блоках можно сделать 24-бит таймер, ну и т.д.
Программатор Cypress ICE-Cube, Cypress MiniProg или самодельный (видел в интернете, но точных ссылок дать не могу).Программатор микросхем PSoC, подключаемый к LPT порту компьютера
PSoC – Как начать работать
Так, раз такая петрушка выделю ка я для PSOC отдельный блог. Очень уж специфичные камни. Следующие посты, если будут, пишите туда.
Интересные камешки. Вопрос по поводу средств разработки: есть ли плагины для «взрослых» IDE вроде Eclipse? Есть ли мозможность работать на Ubuntu/Linux? Какие фичи есть у встроенного редактора (подсветка скобок, автодополнение, форматирование С-кода согласно заданному стилю и т.д.)? Или в итоге получим блокнотоподобный редактор с невозможностью перехода на что-то другое (пусть и бесплатно)?
Интересные камешки. Вопрос по поводу средств разработки: есть ли плагины для «взрослых» IDE вроде Eclipse? Есть ли мозможность работать на Ubuntu/Linux?к сожалению работал только под Windows, и про плагины ничего не знаю( Основным отличем от других IDE есть конфигурация цифровых блоков и модулей, я думаю они работают только с родной IDE.
Какие фичи есть у встроенного редактора (подсветка скобок, автодополнение, форматирование С-кода согласно заданному стилю и т.д.)? Или в итоге получим блокнотоподобный редактор с невозможностью перехода на что-то другое (пусть и бесплатно)?
форматирование настраиваеться:

есть нумерация строк программы, выдно линии открытой и закрытой скобок.
Спасибо. Про форматирование я несколько другое имел в виду. Например, Eclipse умеет такой код:
приводить к виду
или
автоматически в зависимости от настроек.
Сам использую Keil на работе с SiLabs'ами. Для общего развития поковырял немного Eclipse, там много такого вроде не особо (редко) нужного, но, тем не менее, приятного. Вот и подумал, может среда построена на базе какой-нибудь взрослой IDE.
Еще раз спасибо.
for (i=0;i<100;i++)
{
a[i] = i;
}
приводить к виду
for (i = 0; i < 100; i++)
{
a[i] = i;
}
или
for (i = 0; i < 100; i ++){
a[i] = i;
}
автоматически в зависимости от настроек.
Сам использую Keil на работе с SiLabs'ами. Для общего развития поковырял немного Eclipse, там много такого вроде не особо (редко) нужного, но, тем не менее, приятного. Вот и подумал, может среда построена на базе какой-нибудь взрослой IDE.
Еще раз спасибо.
А как насчет средств кодонавигации? Автодополнение, подсказка с параметрами функций, переход к объявлению/реализации символа, браузер символов?
А как насчет средств кодонавигации? Автодополнение, подсказка с параметрами функций, переход к объявлению/реализации символа, браузер символов?все API функции для каждого модуля автоматически генерируються, просто копируем в мейн и используем как захочеться. Подсказок в коде нет. Поиск по коду, автозамена есть. Есть режим проверки — Design Rule Checker, но пока точно не знаю зачем он.
У Keil'а есть свой компилятор для 51-го ядра, на базе которого (судя по статье PSoC 5.Введение. Создание проекта.) построено 3-е семейство. Видимо, этот самый компилятор и можно подключить к оригинальной IDE.
с помощью прекомпилятора который идет с иде.
на деле имеется встроенный компилятор от кейл (есть бесплатная лицензия, условиями не интересовался) и имеется возможность использования внешнего компилятора от кейл.
на деле имеется встроенный компилятор от кейл (есть бесплатная лицензия, условиями не интересовался) и имеется возможность использования внешнего компилятора от кейл.
Сейчас для PSoC 1 поддерживаются два компилятора — ImageCraft (бесплатный) и ImageCraft PRO (платный). Раньше поддерживался еще HiTech, но потом его выкупила Microchip. Для PSoC 5 есть gcc, ARM MDK и ARM RVDS. Последние два платные.
Я работаю в Cypress Ukraine Solution Center в городе Львов, правда в TrueTouch команде но раньше работал с PSoC 1.
Не сочтите за рекламу, но после знакомства с PSoC я просто забыл о существовании Microchip и ATMEL, коими занимался ранее.
Могу помочь с возникшими вопросами.
Я работаю в Cypress Ukraine Solution Center в городе Львов, правда в TrueTouch команде но раньше работал с PSoC 1.
Не сочтите за рекламу, но после знакомства с PSoC я просто забыл о существовании Microchip и ATMEL, коими занимался ранее.
Могу помочь с возникшими вопросами.
Могу помочь с возникшими вопросами.интерисует дебаг. в железе (ICE- Cube только прошивал) и симуляторе если можно.
В плане отладки существует два вида PSoC1 контроллеров:
1) Для применения в отладочных платах (DVK) которые можно приобрести у Cypress. Их можно отличить по наличию нулей в последних трех цифрах маркировки (например CY8C21001). Они поддерживают отладку с помощью ICE-Cube, для этого у них есть дополнительные пины.
2) Для применения в конечных продуктах. Как правило в маркировке нулей нет (CY8C21534). Не поддерживают внутрисхемную отладку.
PSoC3/5 этой проблеме не подвержены, все отлаживаются с помощью MiniProg3.
1) Для применения в отладочных платах (DVK) которые можно приобрести у Cypress. Их можно отличить по наличию нулей в последних трех цифрах маркировки (например CY8C21001). Они поддерживают отладку с помощью ICE-Cube, для этого у них есть дополнительные пины.
2) Для применения в конечных продуктах. Как правило в маркировке нулей нет (CY8C21534). Не поддерживают внутрисхемную отладку.
PSoC3/5 этой проблеме не подвержены, все отлаживаются с помощью MiniProg3.
Комментарии (48)
RSS свернуть / развернуть