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

 
 
> SPI on SAM7S и SAM7X
beginner12
сообщение Feb 25 2010, 12:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 15-01-10
Пользователь №: 54 844



Здравствуйте. У меня вопрос. Перерыл всю документацию но не могу понять в чем проблема. В общем написал для AT91SAM7X256 код для работы с SD-картой по SPI. Потом пришлось перенсти код на AT91SAM7S256 и код не работает, хотя все один в один (SPI0 перенес на SPI).
Отличаются ли SPI-и для этих камней, если да, то чем? И из-за чего могла быть вызвана проблема, что на одном камне код работает а на втором нет?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kenshin
сообщение Feb 26 2010, 00:23
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 8-06-06
Из: Тула
Пользователь №: 17 887



такая же проблема. В sam7x spi работает, а в sam7s не работает. компилятор кейл 4.01.

этот работает как положено.
CODE
#include <AT91SAM7X128.H>

AT91S_PIO * pPIO = AT91C_BASE_PIOA;
AT91S_PMC * pPMC = AT91C_BASE_PMC;
AT91S_SPI * pSPI = AT91C_BASE_SPI0;

int main (void){

// Enable the PIO clock
pPMC->PMC_PCER = (1<<AT91C_ID_PIOA);//(1<<AT91C_ID_PIOA)|

pPIO->PIO_PDR = (AT91C_PA18_SPI0_SPCK|AT91C_PA17_SPI0_MOSI|AT91C_PA16_SPI0_MISO|AT91C_PA12_SPI0_
NPCS0);
pPIO->PIO_ASR = (AT91C_PA18_SPI0_SPCK|AT91C_PA17_SPI0_MOSI|AT91C_PA16_SPI0_MISO|AT91C_PA12_SPI0_
NPCS0);
pPIO->PIO_PPUER = AT91C_PA16_SPI0_MISO;

// Enable the SPI clock
pPMC->PMC_PCER = (1<<AT91C_ID_SPI0);//(1<<AT91C_ID_PIOA)|
// Execute a software reset of the SPI twice
pSPI->SPI_CR = AT91C_SPI_SWRST;
pSPI->SPI_CR = AT91C_SPI_SWRST;
// Configure SPI in Master Mode with No CS selected !!!
pSPI->SPI_MR = (AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS);
// Disable the PDC transfer
pSPI->SPI_PTCR = (AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS);

pSPI->SPI_CSR[0] = 0x00000482;
pSPI->SPI_MR = (0x18000001);//(0x000E0011);
// Enable the SPI
pSPI->SPI_CR = AT91C_SPI_SPIEN;

}


а этот не работает. не запускается SPI. не устанавливается флаг SPIENS. и т.д.
CODE
#include <AT91SAM7S128.H>

AT91S_PIO * pPIO = AT91C_BASE_PIOA;
AT91S_PMC * pPMC = AT91C_BASE_PMC;
AT91S_SPI * pSPI = AT91C_BASE_SPI;


int main (void){
// Enable the PIO clock
pPMC->PMC_PCER = (1<<AT91C_ID_PIOA);//(1<<AT91C_ID_PIOA)|

pPIO->PIO_PDR = (AT91C_PA14_SPCK|AT91C_PA13_MOSI|AT91C_PA12_MISO|AT91C_PA11_NPCS0);
pPIO->PIO_ASR = (AT91C_PA14_SPCK|AT91C_PA13_MOSI|AT91C_PA12_MISO|AT91C_PA11_NPCS0);
pPIO->PIO_PPUER = AT91C_PA12_MISO;

// Enable the SPI clock
pPMC->PMC_PCER = (1<<AT91C_ID_SPI);//(1<<AT91C_ID_PIOA)|
// Execute a software reset of the SPI twice
pSPI->SPI_CR = AT91C_SPI_SWRST;
pSPI->SPI_CR = AT91C_SPI_SWRST;
// Configure SPI in Master Mode with No CS selected !!!
pSPI->SPI_MR = (AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS);
// Disable the PDC transfer
pSPI->SPI_PTCR = (AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS);

pSPI->SPI_CSR[0] = 0x00000482;
pSPI->SPI_MR = (0x18000001);//(0x000E0011);
// Enable the SPI
pSPI->SPI_CR = AT91C_SPI_SPIEN;

}
Go to the top of the page
 
+Quote Post



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

 


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


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