AltemirX 0 5 сентября, 2008 Опубликовано 5 сентября, 2008 · Жалоба Всем доброго времени суток. Стоит задача связать 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см и отсутствие терминаторов (что подтвердили осциллограммы :) ). Если переходить в режим SPI1 для решения проблемы первого байта, то придётся ещё снижать клок до 7,3728МГц, т.к. по даташиту на McBSP максимальный клок в этом режиме может быть 12МГц. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 5 сентября, 2008 Опубликовано 5 сентября, 2008 · Жалоба ..на 29,4912МГц данные идут враскоряку с обеих сторон На такой частоте из-за бага-укорочения (смотрите Errata) длительности первых тактовых импульсов LPC не способен принимать информацию по собственной тактировке :(. Обычно можно играясь прескалером 1/2, если нет дуплекса, передавать не 30MHz, а принимать на 15MHz. Если переходить в режим SPI1 для решения проблемы первого байта, то придётся ещё снижать клок до 7,3728МГц Ну так разделите на 3, а не на 4 (да, да, как ни странно работает, по крайней мере в последних ревизиях LPC211x). Все будет побыстрее. P.S. Насчет разделить не 3 - не прав :( у поминаемого чипа SSP не имет основного делителя - только прескалер :(, который четный... P.P.S. Вообще-то по нынешним временам использовать LPC22xx, даже /01 как-то уже странно. И функционал не очень и цена неадекватна LPC23/24xx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AltemirX 0 5 сентября, 2008 Опубликовано 5 сентября, 2008 · Жалоба На такой частоте из-за бага-укорочения (смотрите Errata)... Хм, про баг-укорочение знаю, но думал, что в ревизии LPC2214/01 его пофиксили. Доступная еррата на /01 датируется июлем 2007 и там ни слова про это, в отличие от того же 2132. Насчет разделить не 3 - не прав :( у поминаемого чипа SSP не имет основного делителя - только прескалер :(, который четный... Из даташита: 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 0 5 сентября, 2008 Опубликовано 5 сентября, 2008 · Жалоба Хм, про баг-укорочение знаю, но думал, что в ревизии LPC2214/01 его пофиксили. Доступная еррата на /01 датируется июлем 2007 и там ни слова про это, в отличие от того же 2132. Странно, а в SSP более свежих чипов 213/4x, с errata 2008 года этот старый-старый баг с SSP присутствует во всей красе :( CPSDVSR минимум 2 и только чётный, посему, как вы написали. Я просто на абревиатуру SSP среагировал по началу - у всех SSP остальных чипов есть еще один делитель. Там можно реально на нечетные делить. Один из козырей этого проца - внешняя память большого объёма (у нас 512МБ оперативы там висит). У 24xx вешается и SDRАМ и цена чипа в общем-то поменьше. Я с LPC229x ушел.... Хотя NXP клянется старых чипов с производства не снимать. И цены в отличие от многих не повышает, хотя в отличие от своих новых чипов и не понижает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AltemirX 0 6 сентября, 2008 Опубликовано 6 сентября, 2008 (изменено) · Жалоба У 24xx вешается и SDRАМ и цена чипа в общем-то поменьше. Я с LPC229x ушел.... Не по теме, но... Посмотрел я LPC2468 как потенциальную замену 2214/01. По цене сейчас для нас выигрыша нет, судя по ценам у МТ-Систем: LPC2214FBD144/01 - 184р., LPC2468FET208,551 ver B - 241.41р. Понимаю, что за функционал надо доплачивать, но когда 2214 пока удовлетворяет текущим задачам... И несколько поубавила блеска с проца его еррата :( , хоть и особо смертельного (кроме 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-ым битом!!! Изменено 6 сентября, 2008 пользователем Altemir Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 6 сентября, 2008 Опубликовано 6 сентября, 2008 · Жалоба Посмотрел я LPC2468 как потенциальную замену 2214/01. По цене сейчас для нас выигрыша нет.. Как сказать. Судя по размеру 512К статики она у Вас предположительно на 8/16bit очень скромненьком EMC висит. А тут уже не только LPC2468(а на него SDRAM повесить вагон можно), но и 16bit LPC2458 и 8bit LPC2378.. Причем тот-же LPC2378 на борту имеет 58K (есть и LPC2388 c побольше)своей БЫСТРОЙ а не висящей на половинной частоте ядра RAM, FLASH 512 и попугаев побольше, и функционал, и при цене на рупь дешевле :). Добавьте еще LDO для ядра LPC22xx :) И несколько поубавила блеска с проца его еррата , хоть и особо смертельного (кроме CANа) там ничего нет. - При этом это практически единственный пункт Errata для B ревизии :) - других кроме дежурной багофичи ядра присутствующих у всех (и которую не исправят никогда, ибо совместимость рухнет) и кривизны с батарейным питанием ПРОСТО НЕТ. - САN у Вас нет, а если захотите использовать, то в LPC2294 он примитивнее и багов там...... Крепко думать надо, прежде, чем в новые разработки закладывать LPC22хх. Кстати, а CS на SPI1 проц сам будет дёргать, как я понял? Вычитывать что пишут про LPC2214/01 надо, но на всех свежих чипах SPI (в отличие от SSP) в мастере SS не управляет, только баг с обязабельным подтягиванием убран и все. Можно использовать, как GPIO. C "автоматикой" тоже нюансы - нарезки на фреймы не будет, если между ними FIFO не освобождается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AltemirX 0 6 сентября, 2008 Опубликовано 6 сентября, 2008 · Жалоба Хорошо, спасибо за наводку на проц. Буду пытаться продвинуть в новые разработки, если начальство идею на корню не зарубит. Хотелось бы ещё узнать, какова разница в быстродействии исполняемого кода из внутренней флэш и внешней SDRAMы 32-битной и 16-битной (PC100-PC133)? По CS SPI из шита так и не понятно, аппаратно он управляется или нет. На временных диаграммах учавствует нога SSEL, при этом на ней корректно появляется импульс между словами при continous-передаче (Fig.52), только кто её дёргает проверить сейчас, к сожалению, не могу :( Из того же шита: 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 0 6 сентября, 2008 Опубликовано 6 сентября, 2008 · Жалоба Хотелось бы ещё узнать, какова разница в быстродействии исполняемого кода из внутренней флэш и внешней 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 0 8 сентября, 2008 Опубликовано 8 сентября, 2008 · Жалоба этого проца - внешняя память большого объёма (у нас 512МБ оперативы там висит). Эт как? Всё таки 512кБ, как и понял zltigo? У меня CAN в LP2292 вполне нормально работает, естественно с учётом errata, и не используется некоторая функциональность типа FullCAN (изначально не планировалось использовать). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 8 сентября, 2008 Опубликовано 8 сентября, 2008 · Жалоба Эт как? Всё таки 512кБ Да какие там 512 мегабайт, даже если банками навешать на имеющиеся 4x16MB, то статикой набивать полгига это безумие и нужно с LPC22xx без оглядки бежать :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться