реклама на сайте
подробности

 
 
> LPC22xx SPI, Пытаюсь настроить передачу через SPI. Реакция нулевая...
schaulin
сообщение Aug 24 2006, 13:50
Сообщение #1





Группа: Новичок
Сообщений: 11
Регистрация: 26-01-06
Из: Germany
Пользователь №: 13 649



Пытаюсь настроить передачу через SPI. Реакция нулевая...

void SPI_Init(void)
{
PINSEL1 |= 0x88; // configure SPI1 pins

SPCCR = 0x08; /* Clock Counter = 8 */
SPCR = 0x08A0; /* SPIE and MSTR enable, transfer with 8 bits */

}

int SPI_write (void)
{
unsigned char result;

SPDR = data; // send next SPI channel 0 data
while (!(SPSR & 0x80)) ; // wait for transfer completed

return (0);

}

Сообщение отредактировал schaulin - Aug 24 2006, 13:52


--------------------
spi
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
solidreg
сообщение Aug 24 2006, 14:03
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 24-10-05
Пользователь №: 10 056



From PDF:
"Note: LPC2119/2129/2194/2292/2294 configured to operate as SPI master MUST select
SSEL functionality on an apropriate pin and have HIGH level on this pin in order to act
as a master."

Kak tam y vas dela c SSEL?
Go to the top of the page
 
+Quote Post
schaulin
сообщение Aug 25 2006, 08:34
Сообщение #3





Группа: Новичок
Сообщений: 11
Регистрация: 26-01-06
Из: Germany
Пользователь №: 13 649



Unlike earlier Philips ARM devices, LPC2210/2220 configured as a SPI0/1
master does not need an external pull-up on the SSEL0/1 pin in order to perform.
LPC2210/2220 based SPI master can use the pin hosting SSEL0/1 function for a
non-SPI purpose, too. For example, pin providing the SSEL0 function can be
configured as an output digital GPIO pin and used to select one of the SPI0
slaves. This is usually the case with a SPI system is designed around a single
master device


--------------------
spi
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 25 2006, 16:53
Сообщение #4


Гуру
******

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



Цитата(schaulin @ Aug 25 2006, 11:34) *
Unlike earlier Philips ARM devices, LPC2210/2220 configured as a SPI0/1

1. Вы даже не потрудились указать свой контроллер указав 22XX, а они все разные
и указание solidreg было абсолютно уместным.
2. Пишите инициализацию более понятно, например, в таком стиле (это для 213x IAR)
Код
int init_SPI1( void )
{
    // Prescaler = 2 (Maximum Clock for Master)
    SSPCPSR_bit.CPSDVSR =  2;                    
          
    // Configure Pin Connect Block
    PINSEL1_bit.P0_17 = 0x2;    // SCK1
    PINSEL1_bit.P0_18 = 0x2;    // MISO1
    PINSEL1_bit.P0_19 = 0x2;    // MOSI1
    PINSEL1_bit.P0_20 = 0x2;    // SSEL1

    PINSEL0_bit.P0_12 = 0x0;    // SSEL_SOFT
    IO0SET =  BIT12;        // Set Hi (Disabled)
    IO0DIR |= BIT12;        // Set ports to output

    SSPCR0_bit.FRF    =   0;             // SPI Mode
    SSPCR0_bit.DSS    =  (8-1);         // 8bit Transfer
    SSPCR0_bit.CPOL =     1;             // Polarity
    SSPCR0_bit.CPHA =     1;            // Phase
    SSPCR0_bit.SCR     =  (2-1);        // Divider

    // Device selected as master
    SSPCR1_bit.MS      = 0;                // Master
    SSPCR1_bit.SSE  = 1;                // Global Enable

      for( int i = 0; i < 8; i++ )
      {    ulong dummy = SSPDR;         // Clear the RxFIFO
          dummy = dummy;    
    }

....

    return( 0 );
}


И самому будет понятнее и другим.

Ну а по существу у Вас 222x и Вы как минимум забыли про SSPCR1(0xE005C004) SSE бит

3. Что Вы называете "нулевой реакцией"? Или предполагается предварительная консультация отвечающего с экстрасенсом?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
schaulin
сообщение Aug 28 2006, 12:12
Сообщение #5





Группа: Новичок
Сообщений: 11
Регистрация: 26-01-06
Из: Germany
Пользователь №: 13 649



Я конечно извиняюсь за недоразумения и попытаюсь разъеснить мою проблему ещё раз.
мой микроконтроллер называется lpc2220 и я провожу следующие операции.
1. я ставлю P0.4, P0.6, P0.17, P0.19 (SCK0, MOSI0, SCK1, MOSI1) на 0
IO0CLR |= (P0.4 | P0.6 | P0.17 | P0.19);

2. я ставлю эти же пины как "output"
IO0DIR |= (P0.4 | P0.6 | P0.17 | P0.19);

3. PINSEL0/1
PINSEL0 |= 0x00001100 (P0.4 == SCK0, P0.6 == MOSI0);
PINSEL1 |= 0x00000088 (P0.17 == SCK1, P0.19 == MOSI1);


4. Clock Counter = 8
SPCCR0 |= 0x08;
SPCCR1 |= 0x08;

5 SPCR
S0SPCR |= 0x0824; (BitEnable = 1, CPHA = 0, CPOL = 0, MSTR = 1, LSBF/SPIE = 0, BITS = 8)
S1SPCR |= 0x0824; (BitEnable = 1, CPHA = 0, CPOL = 0, MSTR = 1, LSBF/SPIE = 0, BITS = 8)


6. потом я питаюсь отослать даты с помощу следующего кода
int SPI_write (void)
{
unsigned char result;
SPDR = data; // send next SPI channel 0 data
while (!(SPSR & 0x80)) ; // wait for transfer completed
return (0);
}

7. ПРОБЛЕМА
Если смотреть на регистры то всё идёт нормально но если подсоединить осцилоскоп то из чипа не одного сигнала невыходит

я переделал код для SPI1 и настроил SSP как SPI ... всё работает нормально как и надо а вот если без SSP то никаких сигналов снаружи микроконтроллера неувидиш


--------------------
spi
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 28 2006, 13:20
Сообщение #6


Гуру
******

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



Цитата(schaulin @ Aug 28 2006, 15:12) *
7. ПРОБЛЕМА

Повторяю:
Цитата
забыли про SSPCR1(0xE005C004) SSE бит


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
schaulin
сообщение Aug 28 2006, 13:37
Сообщение #7





Группа: Новичок
Сообщений: 11
Регистрация: 26-01-06
Из: Germany
Пользователь №: 13 649



пробывал ещё следующий код добавлять ... ефект тот-же
SSPCR0 |= 0x0007; // 8 bit
SSPCPSR |= 0x02; //
SSPCR1 |= 0x02; // SSE = 1, master

Только вот я никак непойму зачем вообще SSP настраивать если я хочу только SPI преминять


--------------------
spi
Go to the top of the page
 
+Quote Post
schaulin
сообщение Sep 14 2006, 11:14
Сообщение #8





Группа: Новичок
Сообщений: 11
Регистрация: 26-01-06
Из: Germany
Пользователь №: 13 649



Цитата(solidreg @ Aug 24 2006, 16:03) *
From PDF:
"Note: LPC2119/2129/2194/2292/2294 configured to operate as SPI master MUST select
SSEL functionality on an apropriate pin and have HIGH level on this pin in order to act
as a master."

Kak tam y vas dela c SSEL?

Цитата
Unlike earlier Philips ARM devices, LPC2210/2220 configured as a SPI0/1
master does not need an external pull-up on the SSEL0/1 pin in order to perform.
LPC2210/2220 based SPI master can use the pin hosting SSEL0/1 function for a
non-SPI purpose, too. For example, pin providing the SSEL0 function can be
configured as an output digital GPIO pin and used to select one of the SPI0
slaves. This is usually the case with a SPI system is designed around a single
master device


всем привет
я нашёл ошибку
всё дело было в SSEL сигнале несмотря на то что в датешите стоит что его можно непреминять

Сообщение отредактировал schaulin - Sep 14 2006, 11:15


--------------------
spi
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 15:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01433 секунд с 7
ELECTRONIX ©2004-2016