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

 
 
> 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
Ответов
schaulin
сообщение Aug 25 2006, 08:34
Сообщение #2





Группа: Новичок
Сообщений: 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
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:08
Рейтинг@Mail.ru


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