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

 
 
> AT91SAM7S32 + AT45DB161C, проблемма
Tcom
сообщение Jun 26 2008, 07:49
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 360
Регистрация: 3-01-06
Из: Украина Запорожская обл.
Пользователь №: 12 792



Доброго времени суток!!
Связываю вышеупомянутыеи МС.
Записываю массив в буфер 1 at45, а потом читаю массив с буфера 1.
Почемуто все значения оказываются делёнными на 2.

инициализация SPI:
Код
void initSPI (void)
{
  AT91C_BASE_PIOA->PIO_PDR =  AT91C_PA12_MISO | AT91C_PA13_MOSI | AT91C_PA14_SPCK;
  AT91C_BASE_PIOA->PIO_ASR =  AT91C_PA12_MISO | AT91C_PA13_MOSI | AT91C_PA14_SPCK;
  AT91C_BASE_PIOA->PIO_BSR = 0;
  AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_SPI;

  /****  Fixed mode ****/
  AT91C_BASE_SPI->SPI_CR      = 0x81;              //SPI Enable, Sowtware reset
  AT91C_BASE_SPI->SPI_CR      = 0x01;              //SPI Enable


  //AT91C_BASE_SPI->SPI_MR      = 0xE0011;          //Master mode, fixed select, disable decoder, FDIV=0 (MCK), PCS=1110
  *AT91C_SPI_MR = AT91C_SPI_MODFDIS | AT91C_SPI_PS_FIXED | AT91C_SPI_MSTR | (0x0E<<16);
  AT91C_SPI_CSR[0] = AT91C_SPI_NCPHA|AT91C_SPI_BITS_8|(SPI_SCKDIV<<8);
}


Чтение /запись:
Код
unsigned char spiSendByte(const unsigned char data)
{
     // wait for transmit completion/ready
     while(!(*AT91C_SPI_SR & AT91C_SPI_TDRE));
     // write data to be transmitted
     *AT91C_SPI_TDR = data;
     // wait for completion
     while(!(*AT91C_SPI_SR & AT91C_SPI_RDRF));
     // return received data
     return *AT91C_SPI_RDR;

}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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