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

 
 
> AT91SAM7S64 и SPI, Где проблема?
marcinio
сообщение Aug 15 2008, 18:27
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 42
Регистрация: 3-07-07
Пользователь №: 28 861



Решил я заняться изучением АРМа – AT91SAM7S64. Написал в Кейле SPI инициализацию:
Код
AT91C_BASE_PMC->PMC_PCER     = 1<<2 | 1<<5;                            //PIOA, SPI Peripheral Clock Enable    
    
AT91C_BASE_PIOA->PIO_PDR     = 1<<11 | 1<<12 | 1<<13 | 1<<14;        //Disables PIOA Control,enables peripheral control
AT91C_BASE_PIOA->PIO_ASR     = 1<<11 | 1<<12 | 1<<13 | 1<<14;        //Peripheral A select    
    
T91C_BASE_SPI->SPI_MR        = AT91C_SPI_MSTR | 14<<16;        //Master mode | Fixed Peripheral Select - NPCS0, PCS = xxx0 NPCS[3:0] = 1110
AT91C_BASE_SPI->SPI_CSR[0]   = 48<<8;                                //SPCK Baudrate
AT91C_BASE_SPI->SPI_CR       = 1;                                    //SPI Enable

AT91C_BASE_SPI->SPI_TDR      = 100;                                    //Data

Но ничего не сработало: SPI просто решил не запускаться (в SPI Status Register SPIENS = 0), в Logic Analyzer уровни линий NPCS0, MISO, MOSI, PSCK не разу не поменялись. Уже весь день пробую понять, в чём проблема? А она именно в этих строчках... 05.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
marcinio
сообщение Aug 16 2008, 08:49
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 42
Регистрация: 3-07-07
Пользователь №: 28 861



Цитата
И старайтесь все же использовать символьные наименования битов

буду стараться smile.gif

но MODFDIS не помогло.
Я никак не могу понять, что в конце концов надо, чтобы запустить SPI и появилась галочка SPIENS в статус регистре?

Код
AT91C_BASE_PMC->PMC_PCER     = AT91C_ID_PIOA | AT91C_ID_SPI;                            //PIOA, SPI Peripheral Clock Enable    
    
AT91C_BASE_PIOA->PIO_PDR     = AT91C_PIO_PA11 | AT91C_PIO_PA12 | AT91C_PIO_PA13 | AT91C_PIO_PA14;        //Disables PIOA Control,enables peripheral control
AT91C_BASE_PIOA->PIO_ASR     = AT91C_PIO_PA11 | AT91C_PIO_PA12 | AT91C_PIO_PA13 | AT91C_PIO_PA14;        //Peripheral A select
AT91C_BASE_SPI->SPI_CR        = AT91C_SPI_SPIEN;


или готовыми функциями:
Код
AT91PS_SPI SPI0 = AT91C_BASE_SPI;

AT91F_SPI_CfgPIO();
AT91F_SPI_CfgPMC();
AT91F_SPI_Enable(SPI0);


результат тоже самый.

Сообщение отредактировал marcinio - Aug 16 2008, 08:49
Go to the top of the page
 
+Quote Post



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

 


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


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