Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: По поводу таймеров в LPC2106
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Slonic
Создаю плату ну очень маленького размера. Требованию к контроллеру: достаточное быстродействие для ввода 16-разрядных данных с АЦП на частоте в 1Мгц и минимум 16кБ памяти для буферов, все это должно быть в небольшом корпусе максимум QFP/QFN48.

Из того, что выпускается сегодня (AVR32 и STM32 пока не рассматриваем), насколько я понял, подходит только LPC2106. Сейчас прикидываю подойдет ли он по всем параметрам. И вот вопрос. Нужно создать тактовые сигналы такого вида см. рисунок. Что-то не очень соображу, можно ли сделать это одним таймером? Похоже, что нет, но вдруг я чего недосмотрел? Просто второй таймер нужен для других целей...

И еще вопрос: пробовал ли кто-нибудь заставить загрузчик работать по RS-485 (полудуплекс)?
etoja
АЦП у него 10-битный, быстродействие 420 тысяч выборок в секунду. Два канала АЦП можно квантовать синхронно.
Можешь взять процессор LPC2103 - четыре таймера, правда ОЗУ 8Кбайт.

Загрузчик по RS485 работать не сможет, так как кроме двух сигналов данных нужны ещё два сигнала сопровождения.
aaarrr
Цитата(Slonic @ Nov 23 2007, 11:57) *
Создаю плату ну очень маленького размера. Требованию к контроллеру: достаточное быстродействие для ввода 16-разрядных данных с АЦП на частоте в 1Мгц и минимум 16кБ памяти для буферов, все это должно быть в небольшом корпусе максимум QFP/QFN48.

LPC2106 здесь, по-моему, не лучший вариант - у него очень медленная работа с GPIO.
alexander55
Цитата(Slonic @ Nov 23 2007, 11:57) *

Судя по осцилограмме, частоту 4 мГц (выход 1) делайте на таймере с выходом наружу.
По прерыванию от таймера считайте их и уже на выходах (как GPIO) формируйте выходы 2 и 3.
По другому с одним таймером не сделать.

Цитата(Slonic @ Nov 23 2007, 11:57) *
И еще вопрос: пробовал ли кто-нибудь заставить загрузчик работать по RS-485 (полудуплекс)?

Этот вопрос меня тоже интересует. smile.gif
На первый взгляд, если сделать конверторы без внешнего управления направлением передачи можно (если в программа загрузки не использует дуплекс). А использует, скажем, Flash Magic дуплекс не в курсе (как написана на предмет разнесения передачи и приема). sad.gif
Slonic
Цитата(alexander55 @ Nov 23 2007, 12:19) *
Судя по осцилограмме, частоту 4 мГц (выход 1) делайте на таймере с выходом наружу.
По прерыванию от таймера считайте их и уже на выходах (как GPIO) формируйте выходы 2 и 3.


Клоки нужны для внешнего АЦП, поэтому джиттер весьма существенен, а на ГПИО, похоже, все будет не слишком стабильно.

Цитата
LPC2106 здесь, по-моему, не лучший вариант - у него очень медленная работа с GPIO


А какой вариант будет лучше? Может, я просмотрел какой-нибудь контроллер с описанными выше параметрами? Память 8К никак не подойдет, минимум 16 нужно.
aaarrr
Цитата(alexander55 @ Nov 23 2007, 12:19) *
Судя по осцилограмме, частоту 4 мГц (выход 1) делайте на таймере с выходом наружу.
По прерыванию от таймера считайте их и уже на выходах (как GPIO) формируйте выходы 2 и 3.
По другому с одним таймером не сделать.

Если там действительно 4МГц, то по прерыванию работать не получится. Такие вещи железом нужно делать.

Цитата(Slonic @ Nov 23 2007, 12:28) *
А какой вариант будет лучше? Может, я просмотрел какой-нибудь контроллер с описанными выше параметрами? Память 8К никак не подойдет, минимум 16 нужно.

Какой у Вас АЦП, какие частоты у тактовых сигналов?
alexander55
Цитата(aaarrr @ Nov 23 2007, 12:50) *
Если там действительно 4МГц, то по прерыванию работать не получится. Такие вещи железом нужно делать.

Железом (ПЛИС или на россыпи), конечно, лучше. Да с и джиттером проблем не будет.
ValeraK
Цитата(Slonic @ Nov 23 2007, 13:57) *
Создаю плату ну очень маленького размера. Требованию к контроллеру: достаточное быстродействие для ввода 16-разрядных данных с АЦП на частоте в 1Мгц и минимум 16кБ памяти для буферов, все это должно быть в небольшом корпусе максимум QFP/QFN48.


На контроллеры с ARM ядром от Texas Instruments смотрели? у них с таймерами и корпусом проблем нет.
Slonic
Цитата(ValeraK @ Nov 23 2007, 13:12) *
На контроллеры с ARM ядром от Texas Instruments смотрели? у них с таймерами и корпусом проблем нет.


Самый маленький корпус у TMS470 - 80 ног, если я конечно ничего не пропустил.

А вообще, если пошла речь о самой задаче, то могу сказать, что все это реализовано на ПЛИС и отлично работает безо всяких контроллеров. Появилась мысль сделать распределенную систему с интеллектом вблизи самого датчика, а места там рядом совсем мало. Вот и пошел полет фантазии ) Да, у тактовых сигналов такие частоты: первый до 4Мгц, второй и третий в 4 раза медленнее первого, сдвинуты на полпериода относительно друг друга.
Сергей Борщ
Цитата(Slonic @ Nov 23 2007, 10:57) *
(AVR32 и STM32 пока не рассматриваем)
Возможно зря вы так про STM32. В серии 103 есть и с 20К ОЗУ в QFN36, и таймеров достаточно, и вашу времянку (как я понял, бегло просмотрев документацию) он может легко реализовать на одном таймере, и само ядро как бы является развитием, т.е. улучшением ARM7.
Slonic
Цитата(Сергей Борщ @ Nov 23 2007, 13:36) *
Возможно зря вы так про STM32. Они есть и с 16К памяти, и таймеров достаточно, и вашу времянку (как я понял, бегло просмотрев документацию) он может легко реализовать на одном таймере, и само ядро как бы является развитием, т.е. улучшением ARM7.


Сергей,

я ни в коем случае не хотел обидеть сам кристалл (также как и AVR32). Проблема в том, что в нужном корпусе он будет доступен неизвестно когда, а хочется в ближайшие пару месяцев уже смастерить что-нибудь работающее. У Атмела тоже готовится подходящий мне по всем параметрам контроллер, но доступен он будет в виде образцов начиная с лета следующего года...
Сергей Борщ
Цитата(Slonic @ Nov 23 2007, 12:39) *
я ни в коем случае не хотел обидеть сам кристалл
Какие обиды, о чем вы biggrin.gif ? Просто у некоторых людей психологическая боязнь новых кристаллов. Рад, что это не ваш случай.
Цитата(Slonic @ Nov 23 2007, 12:39) *
Проблема в том, что в нужном корпусе он будет доступен неизвестно когда, а хочется в ближайшие пару месяцев уже смастерить что-нибудь работающее.
Образцы STM32 уже доступны через дистрибуторов, на последнем семинаре раздавали STM32circle, в нем стоит STM32F103RBT6 в QFP64. Т.е. для макета живой кристалл найти можно. Насчет недоступности (пока) QFN48 я не подумал, каюсь. Хотя... В первом посте вы озвучивали корпус QFP48, они уже есть:
STM32F103C8T6, 48-LQFP, RAM Size 20K x 8 Quantity Available 263
И других в QFP48 в Digikey уже много
GetSmart
Такие синхросигналы в принципе можно сделать на LPC2106. Причём аппаратно. Сигналы 2 и 3 можно сделать на выходах PWMx. Они имеют один период, но сдвинуты по фазе. Сигнал 1 можно сделать на выводе MATx.x. Небольшая сложность будет в том, что бы запустить таймер с правильным сдвигом относительно шима. Это можно написать на асме с временным запретом прерываний, или даже ещё до первого разрешения прерываний.

ЗЫ. Может быть всё можно сделать ещё проще. Это я ещё не начинал детально проробатывать варианты.

Цитата(Slonic)
И еще вопрос: пробовал ли кто-нибудь заставить загрузчик работать по RS-485 (полудуплекс)?
Думаю, тоже без проблем. Если передающая сторона сама будет управлять направлением передачи в нужные моменты времени. ISP (BootLoader) работает с полудуплексе.
Slonic
Цитата(GetSmart @ Nov 23 2007, 15:27) *
Такие синхросигналы в принципе можно сделать на LPC2106. Причём аппаратно. Сигналы 2 и 3 можно сделать на выходах PWMx. Они имеют один период, но сдвинуты по фазе. Сигнал 1 можно сделать на выводе MATx.x. Небольшая сложность будет в том, что бы запустить таймер с правильным сдвигом относительно шима. Это можно написать на асме с временным запретом прерываний, или даже ещё до первого разрешения прерываний.

ЗЫ. Может быть всё можно сделать ещё проще. Это я ещё не начинал детально проробатывать варианты.

Думаю, тоже без проблем. Если передающая сторона сама будет управлять направлением передачи в нужные моменты времени. ISP (BootLoader) работает с полудуплексе.

Getsmart, спасибо. Правильно ли я понимаю, что ШИМ и таймер это разные вещи или же это одно и то же? т.е. может ли на входе ШИМа устанавливаться другое значение предделителя по сравнению с таймером? Если да, то тогда все действительно получится, с синхронизацией можно что-нибудь придумать.

Сергей Борщ: я сам немного в этих корпусах запутался wink.gif У них есть совсем волшебный вариант - QFN36, вот он как раз еще не готов. А вот QFP48 действительно уже доступен и ко мне на плату в принципе должен поместиться. Я заказал образцы через сайт, вдруг получится?!
GetSmart
В серии LPC2106 два независимых таймера и независимый шим. Все с независимыми предделителями. Для этой задачи, кажется, они все похожи и можно то же сделать на двух таймерах, а шим оставить для других целей.
Slonic
Цитата(GetSmart @ Nov 23 2007, 15:49) *
В серии LPC2106 два независимых таймера и независимый шим.


Вот спасибо, прояснил. У меня видимо какие-то воспоминания от ПИКа в голове засели, я и не заметил, что ШИМ никак не завязан на таймер. Таким образом, получается, что все можно сделать аппаратно, оставив второй таймер в покое.

Теперь вот думаю, и на LPC можно, и на ST32 ) Кого хочешь выбирай... ST насколько я понимаю будет побыстрей, но вопрос отладки пока несколько мутно описан в документации. Или все работает через стандартный JTAG как для всех АРМов?
defunct
Цитата(etoja @ Nov 23 2007, 12:06) *
АЦП у него 10-битный, быстродействие 420 тысяч выборок в секунду. Два канала АЦП можно квантовать синхронно.

У 2106 нет АЦП.
alexander55
To Slonic.
Если хочется иметь на борту uC.
Для таких временных дел хорошо работает связка uC-ПЛИС (Вы снимите все тормоза). Посмотрите в сторону FPSLIC (AT94). biggrin.gif
PS. Придется использовать внешний АЦП.
Slonic
Всем спасибо, остановился между LPC2106 и STM32 в соответствующем корпусе. Образцы ST с сайта мне прислать отказались, попробую поискать у дилеров.
GetSmart
Я бы сразу выбрал LPC2106. По нему уже известно всё, до мелочей. По скорости ST32 не думаю что будет даже в 1.5 раз быстрее, а возможно и такая же будет. Хотя про него вообще ничего не могу сказать. LPC и достать проще и на любые вопросы есть кому ответить. С ST32 могут и подводные камни всплыть.
Slonic
Цитата(GetSmart @ Nov 26 2007, 14:22) *
Я бы сразу выбрал LPC2106. По нему уже известно всё, до мелочей.


Тогда так и поступлю. Уже начал рисовать схему...

Сразу вопрос: сколько минимально проводов нужно для JTAGa? Просто на плате места крайне мало, а очень хочется предусмотреть именно на этой плате сразу и возможность отладки. Как я понял, кроме стандартных проводов JTAG (4шт) и питания (2) нужно еще как минимум 3 провода?
GetSmart
Для JTAGа вроде бы 8 или 9 проводов нужно, вместе с питанием и ресетом. Хотя я его ни разу в свои платы не ставил. Вообще, виглеру нужно 8 проводов. Линию RTCK виглер не использует, а для чего она нужна я не знаю.

Чем оцифровывать аналог будете?
zltigo
Цитата(GetSmart @ Nov 27 2007, 21:08) *
Линию RTCK виглер не использует, а для чего она нужна я не знаю.

ReturnClock - Тормозному Wiggler не поможет smile.gif У нормальных JTAG адаптеров использование, как минимум, настраеваемо.
Slonic
Цитата(GetSmart @ Nov 27 2007, 22:08) *
Для JTAGа вроде бы 8 или 9 проводов нужно, вместе с питанием и ресетом. Хотя я его ни разу в свои платы не ставил. Вообще, виглеру нужно 8 проводов. Линию RTCK виглер не использует, а для чего она нужна я не знаю.

Чем оцифровывать аналог будете?


А что ставили? Загрузка через УАРТ? Виглер или не виглер - пока неважно, не вопрос купить какой-нибудь более продвинутый отладчик, если это реально будет нужно. Ну и сразу вопрос про среду разработки, я так понимаю, что основных вариантов два: GCC и IAR. Какое отладочное железо для них используется в реальной жизни?

Оцифровывать будет AD9826, практически безальтернативный вариант в моей задаче.
alexander55
Цитата(Slonic @ Nov 28 2007, 11:39) *
GCC и IAR. Какое отладочное железо для них используется в реальной жизни?

А кейл забыли.
MT-Link.
defunct
Цитата(Slonic @ Nov 27 2007, 20:53) *
Сразу вопрос: сколько минимально проводов нужно для JTAGa?

5
TDI/TDO/TMS/TCK/GND.
+ для полноценного сброса TRST
получится 6-ти пиновый разъем.

Цитата
Просто на плате места крайне мало, а очень хочется предусмотреть именно на этой плате сразу и возможность отладки

Примите также во внимание, что у 2106 Primary JTAG порт отжирает 5 + 10 GPIO пинов, т.к. включает помимо JTAG еще и ETM. Разводите плату сразу под Secondary JTAG port, но он включается программно.
Slonic
Цитата(defunct @ Nov 28 2007, 14:27) *
5
TDI/TDO/TMS/TCK/GND.
Примите также во внимание, что у 2106 Primary JTAG порт отжирает 4 + 10 GPIO пинов, т.к. включает помимо JTAG еще и ETM. Разводите плату сразу под Secondary JTAG port, но он включается программно.


10 пинов? Это я, конечно, тоже пропустил при чтении документа... А программно, это значит, что сначала мне нужно залить туда программу через UART?
zltigo
Цитата(defunct @ Nov 28 2007, 13:27) *
5
TDI/TDO/TMS/TCK/GND.

Нет 6(+VTarget), даже если собираетесь только BoundaryScan пользоватся, то питать преобразователь уровней Jtag адаптера напряжением питания target.
И 8 (+RST/NRST). Если собираетесь еще и отлаживаться...
defunct
Цитата(Slonic @ Nov 28 2007, 14:41) *
10 пинов? Это я, конечно, тоже пропустил при чтении документа... А программно, это значит, что сначала мне нужно залить туда программу через UART?

10 пинов ETM, +5 JTAG'овых..
Для 2-го JTAG порта - придется залить программу через UART.
И потом в каждой программе где требуется отладка в startup вставлять нечто такое:
Код
Reset_Handler:  

PINSEL1         EQU     0xE002C004    ; PINSEL1 Address
PINSEL1_Val     EQU     0x55400000    ; Secondary JTAG

                LDR     R0, =PINSEL1
                LDR     R1, =PINSEL1_Val
                STR     R1, [R0]
GetSmart
Цитата(Slonic)
А что ставили? Загрузка через УАРТ?
Настоящие мужчины отладчиками не пользуются smile.gif

Везде гружу через UART. Так что все вопросы по отладке уже не ко мне.
defunct
Цитата(zltigo @ Nov 28 2007, 14:41) *
Нет 6(+VTarget), даже если собираетесь только BoundaryScan пользоватся, то питать преобразователь уровней Jtag адаптера напряжением питания target.

VTarget не обязательно. Его можно закоротить прямо внутри JTAG адаптера на Vcc JTAG адаптера через резистор 270-510. На практике что адаптер, что таргет питаются от 3.3V смысл в лишнем пине?
zltigo
Цитата(defunct @ Nov 28 2007, 13:46) *
VTarget не обязательно. Его можно закоротить прямо внутри JTAG адаптера на Vcc JTAG адаптера через резистор 270-510.

Адаптеры бываю разные. Возьмите, напимер, бессмертный Wiggler и закоротите smile.gif, если найдете там питание Vcc тем более 3.3V
defunct
Цитата(zltigo @ Nov 28 2007, 15:10) *
Адаптеры бываю разные.

Что верно - то верно, разные.
Но тут неординарный случай - программно включаемый порт, поэтому не все адаптеры подойдут.

Цитата
Возьмите, напимер, бессмертный Wiggler и закоротите smile.gif, если найдете там питание Vcc тем более 3.3V

Пасиба smile.gif Wiggler и U-Link очень трудно (если вообще реально) подружить с secondary JTAG портом.

А J-Link и его клоны работают с ним стабильно, и Vcc у них как раз 3.3V.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.