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

 
 
> Дружим AD7490 с sam7s через SPI используя DMA
Goofy
сообщение Dec 17 2007, 05:04
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 169
Регистрация: 17-09-07
Из: Красноярск
Пользователь №: 30 600



Для начала преобразования AD7490, требует падающий фронт на CS, поэтому приходиться после завершеня передачи двух байтов запроса ждать, пока МК вернёт высокий уровень на CS. И следом идёт приём результата преобразования предыдущего запроса, параллельно запись запроса текущего.

Код
...
for (i=0; i<=13;i++ )
{  
//массив запросов с соответсвующими адресами каналов АЦП
ADC1Request[i*2]=(1<<7)|( (i) <<2)|(1<<1)|1;        
ADC1Request[i*2+1]=(1<<5)|(1<<4);//(1<<5) | (1<<4);//| (1<<6);  

}
...

void RequestADCData12Bit (TADCData12Bit* DataStruct)
{


ADC1ChipSelect();


AT91F_SPI_ReceiveFrame(pSPI,buf,2,(char *) DataStruct,26);    
//первые два байта с ненужными данными, последующие записываются в структуру из unsigned short    


SPI_Tx( ADC1Request,2);
//передача первого запроса
ADC1ReqLeft=13; //количество оставшихся запросов


}


обработчик прерывания по пустому буферу передачи
Код

__irq void SPI_Handler (void)
{


if (pSPI->SPI_SR & AT91C_SPI_TXBUFE){

  if (ADC1ReqLeft)
{
pSPI->SPI_CR=AT91C_SPI_LASTXFER;

while ( !(*AT91C_PIOA_PDSR & AT91C_PA11_NPCS0) );  //ждём пока вернётся наверх CS
ADC1ReqLeft--;


pSPI->SPI_TCR=2;
//разрешаем PDC передать последующие два байта массива запроса

}
}


Данные извлечь этот подход позволяет. Но! В младшем байте каждой из посылок (принятых результатов преобразования) находятся произвольные данные, пока что ни с чем не кореллирующие. А в старшем байте всё хорошо. То есть на выходе на графике значений с АЦП я вижу ступеньки с высотой 256.
Самое интересное что если запрашивать данные поодиночке с одного канала, то всё работает, данные идут корректные. Но хочеться чтобы всё было быстро и изящно.
Где посоветуете искать причину?
Go to the top of the page
 
+Quote Post



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

 


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


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