Sasha75 0 6 мая, 2009 Опубликовано 6 мая, 2009 · Жалоба Бьюсь второй день, никак не могу запустить сабж. Поиск по сайтам NXP и Keil ничего не дал. SPI1 на тех же выводах работает превосходно, но для проекта жизненно важно использовать именно 16 битный SSP с FIFO. Кто-нибудь сталкивался? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 6 мая, 2009 Опубликовано 6 мая, 2009 · Жалоба Бьюсь второй день, никак не могу запустить сабж. Питание SSP в PCONP не включили, либо не выбрали режим SSP в SSPCR1, либо то и другое. Четвертого не дано :). В User Manual все подробно описано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sasha75 0 7 мая, 2009 Опубликовано 7 мая, 2009 (изменено) · Жалоба Питание 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 для данного процессора Изменено 7 мая, 2009 пользователем Sasha75 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба Сделал, как рекомендует мануал: Если трудно прочитать мануал, то прочитайте до полного понимания ОДНУ сторочку из предыдущего поста и выполните ВТОРОЕ условие. И совет - никогда не используйте всякие мутные 0x........... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба И совет - никогда не используйте всякие мутные 0x........... SSPCR0 = 0x090F; //16 bit. SPI frame format, CPOL=CPHA=0 Здесь что ли не использовать? А что, лучше устанавливать поля регистра по отдельности с пустой тратой времени? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба Здесь что ли не использовать? Нигде не использовать. SSPCR0 = SSPCR0_DSS(8)|SSPCR0_SCR(1)|SSPCR0_FRF(0); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба SSPCR0_DSS А это из какой оперы? Из какого файла? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба А это из какой оперы? Из какого файла? Сам написал :) // 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) один раз потратил несколько минут и все Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sasha75 0 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба Если трудно прочитать мануал, то прочитайте до полного понимания ОДНУ сторочку из предыдущего поста и выполните ВТОРОЕ условие. И совет - никогда не используйте всякие мутные 0x........... Работа с продуктами от NXP, конечно, изрядно подточила мои умственные способности, но не настолько: SSPCR1 = 0x00; //Normal mode, master <прочая инициализация> SSPCR1 = 0x02; //SSP Enable Начиная с этого места каждая запись в SSPDR должна приводить к посылке 16 бит, но этого не происходит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 7 мая, 2009 Опубликовано 7 мая, 2009 · Жалоба Работа с продуктами от NXP, конечно, изрядно подточила мои умственные способности, но не настолько: Телепатически оценить трудно, как и отвечать на вопросы уровня "Я все сделал правильно, но не работает. Что делать". Вы полагаете, что вытягивать по строчке из Вас инициализацию и вычитывать с мануалом в руках значения разных магических чисел кому-то очень интересно? Лично мне расхотелось :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 7 мая, 2009 Опубликовано 7 мая, 2009 (изменено) · Жалоба Вот мой код инициализации для 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 не установили? Изменено 7 мая, 2009 пользователем GetSmart Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sasha75 0 14 мая, 2009 Опубликовано 14 мая, 2009 · Жалоба Вот мой код инициализации для 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 я знаю, что даташит у них не обязательно совпадает с реальностью Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GetSmart 0 14 мая, 2009 Опубликовано 14 мая, 2009 · Жалоба Это вроде новый проц. В новых появилось ещё управление клоком индивидуально для каждой перифирии. Ещё могли появиться какие-нибудь навороты. В начале описания SSP обычно есть блок схема, на которой всё важное нарисовано. А что не так с LPC2210 ? Рассказывайте, не стесьняйтесь. Народ хочет знать :) Я вот только один косяк припоминаю, который у них в последнем мануале на LPC213х не соответствует действительности - это в RTC в регистре тиков кварца младший бит не используется, а используются следующие 15 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Sasha75 0 14 мая, 2009 Опубликовано 14 мая, 2009 · Жалоба Это вроде новый проц. В новых появилось ещё управление клоком индивидуально для каждой перифирии. Ещё могли появиться какие-нибудь навороты. В начале описания SSP обычно есть блок схема, на которой всё важное нарисовано. А что не так с LPC2210 ? Рассказывайте, не стесьняйтесь. Народ хочет знать :) Я вот только один косяк припоминаю, который у них в последнем мануале на LPC213х не соответствует действительности - это в RTC в регистре тиков кварца младший бит не используется, а используются следующие 15 бит. В LPC2210 был заявлен 16-битный SPI, я безуспешно пытался его запустить, после 3х недельной переписки из NXP пришел ответ, что при составлении даташита были перепутаны абзацы, никакого 16-битного SPI в этом проце нет, зато он есть в LPC213x, приносим извинения и пр. До этого они присылали отписки в духе "читайте даташит внимательно" или "обратитесь к местному дистрибьютору" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KRS 0 14 мая, 2009 Опубликовано 14 мая, 2009 · Жалоба В LPC2210 был заявлен 16-битный SPI так у них в даташите написано что 2210 его и нет, есть только в 2210/01 у LPC часто даташиты меняются, я первым делом, если что то не работает проверяю, а не вышел ли новый даташит! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться