|
SSP на LPC2220:кто-нибудь смог запустить? |
|
|
|
May 7 2009, 05:41
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 20-11-07
Из: Израиль
Пользователь №: 32 499

|
Цитата(zltigo @ May 6 2009, 18:29)  Питание SSP в PCONP не включили, либо не выбрали режим SSP в SSPCR1, либо то и другое. Четвертого не дано  . В User Manual все подробно описано. Сделал, как рекомендует мануал: PCONP &= ~0x00000400; //clear PSPI bit (PCONP.10) PCONP |= 0x00800000; //set PSSP bit (PCONP.23) Режим SSP выбран: SSPCR0 = 0x090F; //16 bit. SPI frame format, CPOL=CPHA=0 как-то подозрительно, что не нашел в сети кусков кода SSP для данного процессора
Сообщение отредактировал Sasha75 - May 7 2009, 05:43
|
|
|
|
|
May 7 2009, 06:33
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(zltigo @ May 7 2009, 11:15)  И совет - никогда не используйте всякие мутные 0x........... Цитата SSPCR0 = 0x090F; //16 bit. SPI frame format, CPOL=CPHA=0 Здесь что ли не использовать? А что, лучше устанавливать поля регистра по отдельности с пустой тратой времени?
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 7 2009, 06:49
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(GetSmart @ May 7 2009, 09:33)  Здесь что ли не использовать? Нигде не использовать. Код SSPCR0 = SSPCR0_DSS(8)|SSPCR0_SCR(1)|SSPCR0_FRF(0);
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 7 2009, 07:09
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(GetSmart @ May 7 2009, 09:58)  А это из какой оперы? Из какого файла? Сам написал  Код // SSP Control Register 0 #define SSPCR0_DSS_POS (0) #define SSPCR0_FRF_POS (4) #define SSPCR0_SCR_POS (8) #define SSPCR0_DSS(nbit) (((nbit)-1)<<SSPCR0_DSS_POS) #define SSPCR0_FRF(mode) ((mode)<<SSPCR0_FRF_POS) #define SSPCR0_CPOL BIT6 #define SSPCR0_CPHA BIT7 #define SSPCR0_SCR(divx) (((divx)-1)<<SSPCR0_SCR_POS) один раз потратил несколько минут и все
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 7 2009, 14:45
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 20-11-07
Из: Израиль
Пользователь №: 32 499

|
Цитата(zltigo @ May 7 2009, 09:15)  Если трудно прочитать мануал, то прочитайте до полного понимания ОДНУ сторочку из предыдущего поста и выполните ВТОРОЕ условие. И совет - никогда не используйте всякие мутные 0x........... Работа с продуктами от NXP, конечно, изрядно подточила мои умственные способности, но не настолько: SSPCR1 = 0x00; //Normal mode, master <прочая инициализация> SSPCR1 = 0x02; //SSP Enable Начиная с этого места каждая запись в SSPDR должна приводить к посылке 16 бит, но этого не происходит
|
|
|
|
|
May 7 2009, 15:30
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(Sasha75 @ May 7 2009, 17:45)  Работа с продуктами от NXP, конечно, изрядно подточила мои умственные способности, но не настолько: Телепатически оценить трудно, как и отвечать на вопросы уровня "Я все сделал правильно, но не работает. Что делать". Вы полагаете, что вытягивать по строчке из Вас инициализацию и вычитывать с мануалом в руках значения разных магических чисел кому-то очень интересно? Лично мне расхотелось
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 7 2009, 15:33
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Вот мой код инициализации для LPC213x Код void LPC213xInitSPI1Master() { PINSEL1 = (PINSEL1 & ~0x3fc) | 0x0a8; // for SCK+, MISO+, MOSI+, SSEL- SSPCR1 = 0x00; // turn off SSP SSPCR0 = 0x07; // SPI, 8 bit, mode 0, 1 - active level SCK SSPCPSR = 6; // even only SSPIMSC = 0; // interupt disabled SSPCR1 = 0x02; // SSP enable in master SSPSR; } Может PINSEL не установили?
Сообщение отредактировал GetSmart - May 7 2009, 15:36
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
May 14 2009, 13:47
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 20-11-07
Из: Израиль
Пользователь №: 32 499

|
Цитата(GetSmart @ May 7 2009, 18:33)  Вот мой код инициализации для LPC213x Код void LPC213xInitSPI1Master() { PINSEL1 = (PINSEL1 & ~0x3fc) | 0x0a8; // for SCK+, MISO+, MOSI+, SSEL- SSPCR1 = 0x00; // turn off SSP SSPCR0 = 0x07; // SPI, 8 bit, mode 0, 1 - active level SCK SSPCPSR = 6; // even only SSPIMSC = 0; // interupt disabled SSPCR1 = 0x02; // SSP enable in master SSPSR; } Может PINSEL не установили? Спасибо за код. Я попробовал, но не помогло. Придется опять вступать в переписку с NXP.  Из предыдущего опыта с LPC2210 я знаю, что даташит у них не обязательно совпадает с реальностью
|
|
|
|
|
May 14 2009, 14:53
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 20-11-07
Из: Израиль
Пользователь №: 32 499

|
Цитата(GetSmart @ May 14 2009, 18:01)  Это вроде новый проц. В новых появилось ещё управление клоком индивидуально для каждой перифирии. Ещё могли появиться какие-нибудь навороты. В начале описания SSP обычно есть блок схема, на которой всё важное нарисовано. А что не так с LPC2210 ? Рассказывайте, не стесьняйтесь. Народ хочет знать  Я вот только один косяк припоминаю, который у них в последнем мануале на LPC213х не соответствует действительности - это в RTC в регистре тиков кварца младший бит не используется, а используются следующие 15 бит. В LPC2210 был заявлен 16-битный SPI, я безуспешно пытался его запустить, после 3х недельной переписки из NXP пришел ответ, что при составлении даташита были перепутаны абзацы, никакого 16-битного SPI в этом проце нет, зато он есть в LPC213x, приносим извинения и пр. До этого они присылали отписки в духе "читайте даташит внимательно" или "обратитесь к местному дистрибьютору"
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|