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

 
 
> AD73311 и SAM7, не хотят дружить
beer_warrior
сообщение Jul 17 2006, 10:19
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Прицепил кодек на SSC, написал софт, запускаю - не пашет.
Проверяю осциллом - нет сигнала на TD/TF. Переключаю на внутренний клок - все ОК.
Пробую брать клок и с TK, и с RK - ноль.Сигнал SCLK вида препаскуднейшего - больше похож на пилу,
охотно верю, что SAM отказыватся его принимать.
Кто имеет опыт - подскажите, где копать(слабо верится, что такой SCLK штатный).
MCLK береться с генератора на 74HC00 16.384MHz, питание всей схемы 3.3В.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
beer_warrior
сообщение Jul 18 2006, 17:07
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Цитата
А разьве там клок не нужен непрерывный? Там же сигма-дельта ацп. Если так - то нужно устраивать рплкладку между синхронным каналом ацп и синхронным каналом контроллера.

Мастер клок идет с генератора и тактирует АЦП и ЦАП. Он же деленный на 8 дает задает клок для обмена.Контроллер по этому клоку обязан скармливать кодеку данные.

Тут кстати еще веселуха начинается. Не срабатывает прерывание PDC ENDTX. Какого черта?

Код
void InitSSC(DWORD imode, DWORD baudrate)
{
//--------------------------------------------------------------------------
//disable all
AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_RXTDIS;
AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_TXTDIS;
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST|AT91C_SSC_RXDIS|AT91C_SSC_TXDIS;
AT91C_BASE_SSC->SSC_IDR = (DWORD)(-1);
//--------------------------------------------------------------------------
//enable hardware
//--------------------------------------------------------------------------
AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC,(1 << AT91C_ID_SSC));
//--------------------------------------------------------------------------
//configure interrupt
//--------------------------------------------------------------------------
AT91F_AIC_ConfigureIt    (AT91C_BASE_AIC,             //base adr
                 AT91C_ID_SSC,                //int number
                AT91C_AIC_PRIOR_HIGHEST - 2,      //priority
                3,                        //int source type
                SSCInterrupt                //handler
                );            
AT91C_BASE_SSC->SSC_IER = imode;                        
//--------------------------------------------------------------------------                        
AT91F_SSC_SetBaudrate(AT91C_BASE_SSC,48054857, baudrate);

.......

AT91C_BASE_SSC->SSC_RPR = (DWORD)SSCCB.prx_buf;
AT91C_BASE_SSC->SSC_RCR = SSCCB.rx_len;

AT91C_BASE_SSC->SSC_TPR = (DWORD)SSCCB.ptx_buf;
AT91C_BASE_SSC->SSC_TCR = SSCCB.tx_len;

// enable the RX and TX PDC transfer requests
AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_RXTEN;
AT91C_BASE_PDC_SSC->PDC_PTCR = AT91C_PDC_TXTEN;
//--------------------------------------------------------------------------
//enable device
//--------------------------------------------------------------------------
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_RXEN | AT91C_SSC_TXEN;
//--------------------------------------------------------------------------
//enable interrupt
//--------------------------------------------------------------------------
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_SSC);


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 06:12
Рейтинг@Mail.ru


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