Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Связать LPC2214/01 и TMS320VC5509a
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Altemir
Всем доброго времени суток.

Стоит задача связать LPC2214/01 и TMS320VC5509a через SSP1 <-> McBSP0. Первая проблема возникла при программировании: использовался последовательный 8-битный режим с фреймовой синхронизацией в первом клоке. Если конфигурить SSP1 LPC в 8-битный режим TI SSI (мастер), то тмс-ка теряла первый и последний байт. С последним разобрался - как понял, внутренний автомат ТМСки защёлкивает данные по дополнительному клоку, т.е. получалось на следующем байте (проц то клоки снимает после передачи байта).

Решилась проблема переводом SSP1 в 9-битный режим. Осталась проблема первого байта, понять которую так и не удалось, пришлось выдавать перед заливкой холостой байт.

С программированием TMS-ки вроде удалось справиться, но проблемы вновь всплыли при работе с залитой программой - проблема первого байта в пакете. После старта проги в TMS-ке, если LPC (мастер) выдаёт холостой байт перед первым пакетом, то TMS и LPC данные принимают корректно, без сдвигов. Во втором же пакете LPC принимает всё корректно, а в начале принятого TMS-кой пакета присутствует нулевой дополнительный байт (LPC его не передавал, смотрел осциллом), за которым идут данные.

Кто сталкивался с таким стыком? Были ли проблемы? Как решали?

Интересует обмен на максимальной скорости. Стабильно поднял на 14,7456МГц (при тактовой LPC - 58,9824МГц и TMS - 192МГц), на 29,4912МГц данные идут враскоряку с обеих сторон, склонен винить длинные дорожки до 9см и отсутствие терминаторов (что подтвердили осциллограммы smile.gif ). Если переходить в режим SPI1 для решения проблемы первого байта, то придётся ещё снижать клок до 7,3728МГц, т.к. по даташиту на McBSP максимальный клок в этом режиме может быть 12МГц.

Спасибо.
zltigo
Цитата(Altemir @ Sep 5 2008, 20:56) *
..на 29,4912МГц данные идут враскоряку с обеих сторон

На такой частоте из-за бага-укорочения (смотрите Errata) длительности первых тактовых импульсов
LPC не способен принимать информацию по собственной тактировке sad.gif. Обычно можно играясь прескалером 1/2, если нет дуплекса, передавать не 30MHz, а принимать на 15MHz.
Цитата
Если переходить в режим SPI1 для решения проблемы первого байта, то придётся ещё снижать клок до 7,3728МГц

Ну так разделите на 3, а не на 4 (да, да, как ни странно работает, по крайней мере в последних ревизиях LPC211x). Все будет побыстрее.
P.S.
Насчет разделить не 3 - не прав sad.gif у поминаемого чипа SSP не имет основного делителя - только прескалер sad.gif, который четный...
P.P.S.
Вообще-то по нынешним временам использовать LPC22xx, даже /01 как-то уже странно. И функционал не очень и цена неадекватна LPC23/24xx
Altemir
Цитата(zltigo @ Sep 6 2008, 00:06) *
На такой частоте из-за бага-укорочения (смотрите Errata)...

Хм, про баг-укорочение знаю, но думал, что в ревизии LPC2214/01 его пофиксили. Доступная еррата на /01 датируется июлем 2007 и там ни слова про это, в отличие от того же 2132.

Цитата
Насчет разделить не 3 - не прав sad.gif у поминаемого чипа SSP не имет основного делителя - только прескалер sad.gif, который четный...


Из даташита:
Цитата
SCR. Serial Clock Rate. The number of prescaler-output clocks per
bit on the bus, minus one. Given that CPSDVSR is the prescale
divider, and the VPB clock PCLK clocks the prescaler, the bit
frequency is PCLK / (CPSDVSR * [SCR+1])...

CPSDVSR. This even value between 2 and 254, by which PCLK is divided
to yield the prescaler output clock. Bit 0 always reads as 0.

CPSDVSR минимум 2 и только чётный, посему, как вы написали.

Цитата
Вообще-то по нынешним временам использовать LPC22xx, даже /01 как-то уже странно. И функционал не очень и цена неадекватна LPC23/24xx

Есть очень много выпускаемых длительное время изделий с большой партией, потому в новые закладывается обновлённая ревизия, которая по всем параметрам сейчас устраивает. Один из козырей этого проца - внешняя память большого объёма (у нас 512МБ оперативы там висит).
zltigo
Цитата(Altemir @ Sep 5 2008, 22:51) *
Хм, про баг-укорочение знаю, но думал, что в ревизии LPC2214/01 его пофиксили. Доступная еррата на /01 датируется июлем 2007 и там ни слова про это, в отличие от того же 2132.

Странно, а в SSP более свежих чипов 213/4x, с errata 2008 года этот старый-старый баг с SSP присутствует во всей красе sad.gif
Цитата
CPSDVSR минимум 2 и только чётный, посему, как вы написали.

Я просто на абревиатуру SSP среагировал по началу - у всех SSP остальных чипов есть еще один делитель. Там можно реально на нечетные делить.
Цитата
Один из козырей этого проца - внешняя память большого объёма (у нас 512МБ оперативы там висит).

У 24xx вешается и SDRАМ и цена чипа в общем-то поменьше. Я с LPC229x ушел....
Хотя NXP клянется старых чипов с производства не снимать. И цены в отличие от многих не повышает, хотя в отличие от своих новых чипов и не понижает.
Altemir
Цитата(zltigo @ Sep 6 2008, 01:06) *
У 24xx вешается и SDRАМ и цена чипа в общем-то поменьше. Я с LPC229x ушел....

Не по теме, но...
Посмотрел я LPC2468 как потенциальную замену 2214/01. По цене сейчас для нас выигрыша нет, судя по ценам у МТ-Систем: LPC2214FBD144/01 - 184р., LPC2468FET208,551 ver B - 241.41р. Понимаю, что за функционал надо доплачивать, но когда 2214 пока удовлетворяет текущим задачам... И несколько поубавила блеска с проца его еррата sad.gif , хоть и особо смертельного (кроме CANа) там ничего нет.

По моему вопросу - в пн вернусь к железу, если не удастся решить вопрос на SSI (без коррекции протокола), то придётся на SPI перейти, может там стык не такой капризный получится. Кстати, а CS на SPI1 проц сам будет дёргать, как я понял?

Да, господа, обратите внимание, кто поднимал (или поднимает) SSP1 на 2214, в даташите Rev. 03 — 2 April 2008 (user.manual.lpc2109.lpc2114.lpc2119.lpc2124.lpc2129.lpc2194.lpc2210.lpc2212.lpc
2214.lpc2220.lpc2290.lpc2292.lpc2294.pdf) есть неточность, касаемо включения SSP (по умолчанию включен SPI на SSP1):
Цитата
Bit 10 (PSPI1) and bit 21 (PSSP) residing in the Section 6–10.3 control the activity of the SPI1 and SSP module respectively. The corresponding peripheral is enabled when its control bit is 1, and it is
disabled when the control bit is 0. After power-on reset, SPI1 is enabled, maintaining the
backward compatibility with other NXP LPC2000 microcontrollers.


А при переходе в Section 6–10.3 (описание PCONP) бит PSSP (PCSSP) уже указан как 23-ий:
Цитата
23 PCSSP The SSP interface power/clock control bit
Remark: Setting this bit to 1 and bit 10 (PSPI1) to 0, selects the SPI1
interface as SSP interface. At reset, SPI1 is enabled. See
Section 14–3 on page 219.


Правильно работать с 21-ым битом!!!
zltigo
Цитата(Altemir @ Sep 6 2008, 12:23) *
Посмотрел я LPC2468 как потенциальную замену 2214/01. По цене сейчас для нас выигрыша нет..

Как сказать. Судя по размеру 512К статики она у Вас предположительно на 8/16bit очень скромненьком EMC висит. А тут уже не только LPC2468(а на него SDRAM повесить вагон можно), но и 16bit LPC2458 и 8bit LPC2378.. Причем тот-же LPC2378 на борту имеет 58K (есть и LPC2388 c побольше)своей БЫСТРОЙ а не висящей на половинной частоте ядра RAM, FLASH 512 и попугаев побольше, и функционал, и при цене на рупь дешевле smile.gif. Добавьте еще LDO для ядра LPC22xx smile.gif
Цитата
И несколько поубавила блеска с проца его еррата , хоть и особо смертельного (кроме CANа) там ничего нет.

- При этом это практически единственный пункт Errata для B ревизии smile.gif - других кроме дежурной багофичи ядра присутствующих у всех (и которую не исправят никогда, ибо совместимость рухнет) и кривизны с батарейным питанием ПРОСТО НЕТ.
- САN у Вас нет, а если захотите использовать, то в LPC2294 он примитивнее и багов там......
Крепко думать надо, прежде, чем в новые разработки закладывать LPC22хх.




Цитата(Altemir @ Sep 6 2008, 12:23) *
Кстати, а CS на SPI1 проц сам будет дёргать, как я понял?

Вычитывать что пишут про LPC2214/01 надо, но на всех свежих чипах SPI (в отличие от SSP) в мастере SS не управляет, только баг с обязабельным подтягиванием убран и все. Можно использовать, как GPIO. C "автоматикой" тоже нюансы - нарезки на фреймы не будет, если между ними FIFO не освобождается.
Altemir
Хорошо, спасибо за наводку на проц. Буду пытаться продвинуть в новые разработки, если начальство идею на корню не зарубит. Хотелось бы ещё узнать, какова разница в быстродействии исполняемого кода из внутренней флэш и внешней SDRAMы 32-битной и 16-битной (PC100-PC133)?

По CS SPI из шита так и не понятно, аппаратно он управляется или нет. На временных диаграммах учавствует нога SSEL, при этом на ней корректно появляется импульс между словами при continous-передаче (Fig.52), только кто её дёргает проверить сейчас, к сожалению, не могу sad.gif Из того же шита:
Цитата
However, in the case of continuous back-to-back transmissions, the SSEL signal must be
pulsed HIGH between each data word transfer. This is because the slave select pin
freezes the data in its serial peripheral register and does not allow it to be altered if the
CPHA bit is logic zero. Therefore the master device must raise the SSEL pin of the slave
device between each data transfer to enable the serial peripheral data write. On
completion of the continuous transfer, the SSEL pin is returned to its idle state one SCK
period after the last bit has been captured.
zltigo
Цитата(Altemir @ Sep 6 2008, 14:08) *
Хотелось бы ещё узнать, какова разница в быстродействии исполняемого кода из внутренней флэш и внешней SDRAMы 32-битной и 16-битной (PC100-PC133)?

Из внутренней FLASH дело на самом деле темное с одной сторны она медленная, с другой стороны 128битная + разные режимы работы MAM. Но в общем эффективность достаточно высока. Я здесь когда-то постил результаты "cухих камешков" - можно поискать.
Из внешней однозначно много медленнее - сама шина на половинной частоте работает, ну а если еще и разрядность до 16 порезать. Тормоз по полной программе. В этом отношении 512K собственной Flash вне конкуренции. Но экспериментов вообще не производил. Внешнюю шину использую исколючительно под медленные буфера и связку с FPGA.
Цитата
По CS SPI из шита так и не понятно...

Да нет, c SPI вcе "как у всех" - только помянутый ранее баг подправили и все.
Код
Remark: Flashless LPC22xx and all legacy parts (/00 and no suffix) configured to operate as a
SPI master MUST select SSEL functionality on an appropriate pin and have HIGH level on this
pin in order to act as a master.
For all other LPC21xx and LPC22xx parts, the SSEL pin can be used for a different function when the
SPI interface is only used in Master mode. For example, the pin hosting the SSEL function can be
configured as an output digital GPIO pin and can be used to select one of the SPI slaves.

Софтово дергать придется.
Alex03
Цитата(Altemir @ Sep 6 2008, 02:51) *
этого проца - внешняя память большого объёма (у нас 512МБ оперативы там висит).

Эт как? Всё таки 512кБ, как и понял zltigo?

У меня CAN в LP2292 вполне нормально работает, естественно с учётом errata, и не используется некоторая функциональность типа FullCAN (изначально не планировалось использовать).
zltigo
Цитата(Alex03 @ Sep 8 2008, 11:38) *
Эт как? Всё таки 512кБ

Да какие там 512 мегабайт, даже если банками навешать на имеющиеся 4x16MB, то статикой набивать полгига это безумие и нужно с LPC22xx без оглядки бежать smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.