Перейти к содержанию
    

SSP на LPC2220:кто-нибудь смог запустить?

Бьюсь второй день, никак не могу запустить сабж. Поиск по сайтам NXP и Keil ничего не дал. SPI1 на тех же выводах работает превосходно, но для проекта жизненно важно использовать именно 16 битный SSP с FIFO. Кто-нибудь сталкивался?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Бьюсь второй день, никак не могу запустить сабж.

Питание SSP в PCONP не включили, либо не выбрали режим SSP в SSPCR1, либо то и другое. Четвертого не дано :). В User Manual все подробно описано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Питание 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделал, как рекомендует мануал:

Если трудно прочитать мануал, то прочитайте до полного понимания ОДНУ сторочку из предыдущего поста и выполните ВТОРОЕ условие. И совет - никогда не используйте всякие мутные 0x...........

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И совет - никогда не используйте всякие мутные 0x...........

SSPCR0 = 0x090F; //16 bit. SPI frame format, CPOL=CPHA=0

Здесь что ли не использовать? А что, лучше устанавливать поля регистра по отдельности с пустой тратой времени?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здесь что ли не использовать?

Нигде не использовать.

    SSPCR0 = SSPCR0_DSS(8)|SSPCR0_SCR(1)|SSPCR0_FRF(0);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А это из какой оперы? Из какого файла?

Сам написал :)

// 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)

один раз потратил несколько минут и все

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если трудно прочитать мануал, то прочитайте до полного понимания ОДНУ сторочку из предыдущего поста и выполните ВТОРОЕ условие. И совет - никогда не используйте всякие мутные 0x...........

 

Работа с продуктами от NXP, конечно, изрядно подточила мои умственные способности, но не настолько:

 

SSPCR1 = 0x00; //Normal mode, master

<прочая инициализация>

SSPCR1 = 0x02; //SSP Enable

Начиная с этого места каждая запись в SSPDR должна приводить к посылке 16 бит, но этого не происходит

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Работа с продуктами от NXP, конечно, изрядно подточила мои умственные способности, но не настолько:

Телепатически оценить трудно, как и отвечать на вопросы уровня "Я все сделал правильно, но не работает. Что делать". Вы полагаете, что вытягивать по строчке из Вас инициализацию и вычитывать с мануалом в руках значения разных магических чисел кому-то очень интересно? Лично мне расхотелось :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мой код инициализации для 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот мой код инициализации для 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 я знаю, что даташит у них не обязательно совпадает с реальностью

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это вроде новый проц. В новых появилось ещё управление клоком индивидуально для каждой перифирии. Ещё могли появиться какие-нибудь навороты. В начале описания SSP обычно есть блок схема, на которой всё важное нарисовано.

 

А что не так с LPC2210 ? Рассказывайте, не стесьняйтесь. Народ хочет знать :)

Я вот только один косяк припоминаю, который у них в последнем мануале на LPC213х не соответствует действительности - это в RTC в регистре тиков кварца младший бит не используется, а используются следующие 15 бит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это вроде новый проц. В новых появилось ещё управление клоком индивидуально для каждой перифирии. Ещё могли появиться какие-нибудь навороты. В начале описания SSP обычно есть блок схема, на которой всё важное нарисовано.

 

А что не так с LPC2210 ? Рассказывайте, не стесьняйтесь. Народ хочет знать :)

Я вот только один косяк припоминаю, который у них в последнем мануале на LPC213х не соответствует действительности - это в RTC в регистре тиков кварца младший бит не используется, а используются следующие 15 бит.

В LPC2210 был заявлен 16-битный SPI, я безуспешно пытался его запустить, после 3х недельной переписки из NXP пришел ответ, что при составлении даташита были перепутаны абзацы, никакого 16-битного SPI в этом проце нет, зато он есть в LPC213x, приносим извинения и пр. До этого они присылали отписки в духе "читайте даташит внимательно" или "обратитесь к местному дистрибьютору"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В LPC2210 был заявлен 16-битный SPI

так у них в даташите написано что 2210 его и нет, есть только в 2210/01

у LPC часто даташиты меняются, я первым делом, если что то не работает проверяю, а не вышел ли новый даташит!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...