Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC2194 SSP
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
prgjz
Уважаемые коллеги!
Заклинился я на имлементации кода для LPC1294/01 помогите пожалуста.
void ssp_init(void)
{
volatile unsigned int pconv = PCONP;
pconv &= ~(1 << 10); // SPI1 power off
pconv |= (1 << 23); // SSP power on
PCONP = pconv; // здесь не происходит включение питания для SSP

PINSEL1_bit.P0_17 = 2; // CLK
PINSEL1_bit.P0_18 = 2; // MISO
PINSEL1_bit.P0_19 = 2; // MOSI
PINSEL1_bit.P0_20 = 2; // CS

SSPCR0_bit.DSS = 7; // 8 bit transfer
SSPCR0_bit.FRF = 0; // SPI Mode
SSPCR0_bit.CPOL= 0;
SSPCR0_bit.CPHA= 0;
SSPCR1_bit.SSE = 1; // SSP Enable
}
Почему не происходит включение питания для SSP, или что я не правильно делаю?


Ошибочка, LPC2194/01 он называется.
Уж думал что с кристаллом но на другой платине такое же плачевное состояние дел...
DpInRock
А зачем было умничать с PCONP?
DpInRock
А самое любопытное, что в этом процессоре нету SSP.
rezident
Цитата(DpInRock @ Oct 21 2010, 01:40) *
А самое любопытное, что в этом процессоре нету SSP.
Откуда дровишки? В даташите в примечании на Fig 1.Block diagram указано
Цитата
SSP interface and high-speed GPIO are available on LPC2194/01 only.

У топикстартера
Цитата
Ошибочка, LPC2194/01 он называется.
DpInRock
А я посмотрел юзер мануал. На всю серию. Там в PCONP SSP не значится.
За что я и люблю мануалы NXP. Если SSP там есть, то мануал надо пристегивать наручниками к батарее и не давать воды пока не скажет...
rezident
Цитата(DpInRock @ Oct 21 2010, 03:42) *
За что я и люблю мануалы NXP. Если SSP там есть, то мануал надо пристегивать наручниками к батарее и не давать воды пока не скажет...
Угу. Есть такое дело. Недавно только обсуждали количество входов АЦП в LPC213x и выяснили, что в современной редакции и даташита и мануала имеется опечатка, внесенная туда копипастерами из мануала LPC214x. Причем мануал и даташит с опечатками числятся аж двухлетеней давности и никто их не правит. sad.gif
zltigo
QUOTE (DpInRock @ Oct 20 2010, 23:42) *
то мануал надо пристегивать наручниками к батарее и не давать воды пока не скажет...

А может лучше себя,пока не скачаете свежий в котором PCONP, как и SSP описан???
segment
PCONP надо включать с '|=' чтобы остальные биты не затереть!
prgjz
Во первых очень благодарен за отзывы!
У меня мануал Rev. 03 — 2 April 2008 в нём явно стоит что
новые серии кристала /01 имеют SSP и он подключен параллкльно к SPI1.
Что бы переключть на SSP нужнл сначала питание SPI1 в PCONP бит 10 отключить,
затем PCSSP бит 23 в PCONP включить. Описывается на странице 219 и 220 мануала.
Кстати на странице 219 пишется что это бит 21 а на странице 77 как бит 23:(

Пробовал и то и другое - результат тот же: SPI1 выключается а бит PCSSP остаётся нулевым.

pconv &= ~(1 << 10); // SPI1 power off
pconv |= (1 << 23); // PСSSP power on

Hi-Speed GPIO работает значит кристал не подделка настоящяя /01 версия.
DpInRock
Цитата
The PINMODE registers control the on-chip pull-up/pull-down resistor feature for all GPIO
ports.


Есть вот такая фраза в даташите на LPC2478. Типа, вот мол все порты регулируются.


Цитата
Remark: Pins P0.27 and P0.28 are dedicated I2C open drain pins without pull-up/down.
Pins P0.29, P0.30, P0.31 are USB specific pins without configurable pull-up or pull-down
resistors.


А это - спустя 10 страниц убористого текста.


Т.е. в единственном месте даташита тебе говорят, что ты зря не поставил резюки на порты.
rezident
Цитата(DpInRock @ Oct 22 2010, 23:38) *
Т.е. в единственном месте даташита тебе говорят, что ты зря не поставил резюки на порты.
Ничего подобного. В таблице Pin description расписаны все отличия для каждого пина, Нужно только не лениться кликать на циферки примечаний. В частности для пинов P0.27 и P0.28 примечание гласит
Цитата
[4] Open-drain 5V tolerant digital I/O pad, compatible with I2C-bus 400 kHz specification. It requires an external pull-up to provide output functionality. When power is switched off, this pin connected to the I2C-bus is floating and does not disturb the I2C lines. Open-drain configuration applies to all functions on this pin.
DpInRock
Цитата
Pad provides digital I/O and USB functions. It is designed in accordance with the USB specification, revision 2.0 (Full-speed and
Low-speed mode only).

Это в сноске для 30-го пина. И что, теперь заглянуть в спецификацию USB2.0? Чтобы узнать что там нет резюка? Далековато. Тем более, USB меня в данном случае вообще не интересовал.
rezident
Цитата(DpInRock @ Oct 23 2010, 00:26) *
Это в сноске для 30-го пина. И что, теперь заглянуть в спецификацию USB2.0? Чтобы узнать что там нет резюка? Далековато.
А вы хотите полноценно работать с кристаллом, прочитав только один раздел General description? rolleyes.gif
prgjz
Проблема конкретно в том что питание для SSP не включается. Есть примеры исползования SSP но не для этого криставлла.
Вообщим написал письмо в NXP Support, надеюсь они поймут мой плохой английский и ответят.
rezident
Можно было попробовать по-русски написать в МТ-Систем. Не быстро, но ответили бы. Или позвонить.
igorsk
Может дело вот в этом?
Цитата
To switch on the fly from SPI1 to SSP and back, first disable the active peripheral’s
interrupt(s), both in the peripheral’s and VIC’s registers. Next, clear all pending interrupt
flags (if any set). Only then, the currently enabled peripheral can be turned off in the
PCONP register. After this, the other serial interface can be enabled.
prgjz
Спасибо всем за помощь! NXP Support ответил:
Try to use the follow line for the last instruction:
PCONP |=(1<<21); // PCSSP is on bit 21
В даташите ошибка на котороую и IAR прпался: PCONP_bit.PCSSP дефинирован как бит 23 а должен быть 21.
И в дибаггере EWARM при виде регистров не правильно показывает бит PCSSP поэтому я наверно и решил что
бит 21 тоже не идёт.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.