Jump to content

    

bmf

Свой
  • Content Count

    146
  • Joined

  • Last visited

Community Reputation

0 Обычный

About bmf

  • Rank
    Частый гость

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Украина
  1. У меня было примерно так, + еще процедура прерывания. CODE static void _spiDMARead(byte *adr,int nbytes) { *pDMA5_PERIPHERAL_MAP = 0x5000; *pDMA5_CONFIG = 0; *pDMA5_IRQ_STATUS = (DMA_DONE | DMA_ERR); SSYNCA; OSSemSet0(semSPIDMAReady); unsigned long limit = SPI_TIMEOUT_LIMIT1MS; while(!(*pSPI_STAT & SPIF) && limit--) { delay100ns(); }; *pSPI_STAT=BIT_STAT_CLR; *pSPI_CTL=MSTR | RDBR_DMA/* | SIZE */; /* clear tx reg soformer data is not shifted out */ *pSPI_TDBR = 0xFFFF; /* start dma */ // dma enable irq sd_spidmaenable_interrupt(); // Configure DMA5 *pDMA5_CONFIG = WNR | WDSIZE_8 | DI_EN | RESTART; // Start address of data buffer *pDMA5_START_ADDR = (void*)adr; // DMA inner loop count (in elements) *pDMA5_X_COUNT = nbytes; // Inner loop address increment *pDMA5_X_MODIFY = 1; SSYNCA; *pDMA5_CONFIG = DMAEN | WNR | WDSIZE_8 | DI_EN | RESTART; SSYNCA; /* start SPI transfer RD */ *pSPI_CTL=SPE | MSTR | RDBR_DMA/* | SIZE*/; INT8U osErr; OSSemPend(semSPIDMAReady, 0, &osErr ); sd_spidmadisable_interrupt(); // polling variant /* // Wait for DMA to complete while (*pDMA5_IRQ_STATUS & DMA_RUN); sd_spidmastop(); limit = SPI_TIMEOUT_LIMIT1MS; while(!(*pSPI_STAT & SPIF) && limit--) { delay100ns(); }; *pSPI_CTL=MSTR | (TIMOD & 1); */ #ifdef USE_WB_CACHE FlushInvArea(adr,((byte *)adr)+nbytes); // in bytes #else dcache_invalidate_both(); #endif // restore (new) spi ctrl *pSPI_CTL=SPE | MSTR | (TIMOD & 1); //0x5C01; enable SPI, nondma tx mode, 8bit } static void sd_spidmadisable_interrupt(void) { unsigned savint; enter(savint); // disable Sport0 DMA RX interrupt *pSIC_IMASK &= (~(1<<13)); // spi (13 IVG10 ID=3) share IVG_PORTB leave(savint); SSYNCA; } static void sd_spidmastop(void) { // disable DMAs *pDMA5_CONFIG = 0; SSYNCA; }
  2. Да, клок для SPI в режиме DMA сделан криво. Кроме того что он не останавливается сразу, так он еще может остановиться посреди передаваемого слова и таким образом нарушить синхронизацию (для 537 битовую синхронизацию частично пофиксили, изменили бит SYNC в конфигурации DMA). Когда подключал SD карту пришлось дополнительно корретировать прием внешней логикой для прерывания потока. Ну а в остальном работает как описано в доках, ошибки в состоянии не должно возникать.
  3. White/Pink Noise

    Когдато и мне было нужно (ну очень давно), выдирал отсюда http://www.musicdsp.org/archive.php?classid=1
  4. Цитата(Den64 @ Dec 2 2008, 18:50) В сети питания фон около 50мВ. ... Естественно пролазит через VR2 на базу Q4, умножаем ка Ky - и получаем ~5В. Надо дополнительно профильтровать подачу питания на VR2, т.е. добавить еще RC цепь.
  5. Защита AVR

    Цитата(Dimonira @ Nov 16 2008, 01:46) Где? Я вам скажу где, например. .. Вот такое встретилось. Так что, как говорится, никогда не говори никогда... А может все гораздо прозаичней. Прога просто генерила из повторяющихся кусков в разных файлах (графика, текстуры для разных разрещений или др.), т.к. знала принцип и структуру данных. Естественно, RAR/Zip не обладает таким знанием (у него окно предсказания неск. кбайт). Так можно и 1000:1 налепить и даже без использования сжатия. Для сравнения тестить надо один файл, тогда видно какой алгоритм круче. Попробуйте вышей прогой сжать уже зазипованный - уверен получите 0.
  6. Цитата(denebopetukius @ Nov 15 2008, 14:56) Кабель короткий(писал чуть выше). Дисплей будет на плате без дополнительных кабелей и близко как сдрам. по идее должно работать пины не буду ставить. “И опыт, сын ошибок трудных, и гений, парадоксов друг…”
  7. Делал и работало, и даже быстрей и лучше чем на SPI (на 10..20% до 1.8 МБайт/сек) . Через SPI - основная проблема это невозможность останова DMA строго по окончанию байта, поэтому надо нестандартно изголяться для достижения битовой синхронизации. Еще SPI как правило занят, а на пустой SPORT можно напрямую (через 47 Ом) подцепить разъем SD. Но проблема есть, нельзя останавливать обмен, надо непрерывно включить DMA и по прерываниям анализировать ответ в буферах приема, и в следующие пустые дописывать на запись, в общем достаточно сложно (для новичков), но вполне может быть оправдано. Программная реализация на SPI по опросу (без DMA), довольно проста, но скорости не те и загрузка процессора 100%.
  8. Цитата(vik0 @ Sep 6 2008, 17:45) В release notes упоминается поддержка семейства Blackfin 51x. НО. Ни сайт AD ни Google ничего об этих процессорах не знает.. Ни у кого нет какой либо информации об этом семействе? судя по include файлам из дистрибутива - это 52x с добавленным SD интерфейсом
  9. Цитата(shf_05 @ Aug 6 2008, 12:21) а если их больше чем длина счетчика? я имел ввиду есть какие-то встр. средства в VDSP для подсчета тактов (ведь есть они в ССS)? сильно сомневаюсь, чтобы 64 бит и не хватило. А EMU COUNTER должен быть в списке регистров для просмотра в симуляторе, там и смотрите.
  10. Исли мерить такты с помощью CNT0..CNT3 (EMU Counter) то должно получиться. В железе по крайней мере работает. Управлять вкл./выкл. можно с помощью бита EMUCNTE в ICNTL.
  11. Цитата(ecos-rtos_in_ua @ Aug 6 2008, 07:20) Есть у меня 4 микросхемы V54C3256164vbt7 они с организацией 16М*16 8k refresh 4 banks. Как я понял, 8k refresh -это page size? Здесь ошибочка. Размер страницы - это размер "column address" + поправка на разрядность. например: column address 512(A0-A8) для 16 разрядной SDRAM - размер странийы 1K
  12. Цитата(sigmaN @ Mar 16 2008, 21:16) Сейчас проведу эксперимент: возьму raw на 48 кГц и просто удаляя 6 выборок через одну сделаю из него 8 и попробую послушать(уже на частоте 8) что выйдет? И получите наложение спектра во всей красе. Примерно как полосу 24 кГц оцифовывать на 8-ми. В таких случаях применяют предварительно цифровую фильтрацию (например FIR фильтр с подавление что выше 4 кГк), и только потом можно "безболезненно" брать каждую 6-ю выборку.
  13. Цитата(Сергей Борщ @ Mar 16 2008, 22:09) .. Подтвердите свое заявление ссылкой на конкретный документ имени Тексаса. О красоте сказано было конечно образно, правильней сказать что, в большинстве случаев (90%) цепочка не нужна, это лишь специфика схемы подключения конкретного ADC (ну захотели ребята еще пару разрядов обеспечить). Типичные ADC от Texas tlv320aic (tlv320aic10,tlv320aic11,tlv320aic23,..tlv320aic33) как и новый SSM2602 от Analog не имеют этой фичи. И никто не указывает реальную частоту дискретизациии, т.к. простой anto-alias фильтр уже встроенный в ИС обеспечивает ее работу во всем диапазоне.
  14. Ну-ну, конечно если подать выше 48 kHz х 256/2 = 12.288/2 MHz, тогда может быть и будет залезание за частоту Найквиста. Только мне думается автор, просто говорит о реальном аудио диапазоне. Ну а фильтр, скорее именно для красоты (для снижения наводок за счет снижения входного сопротивления входа на высоких частотах -обеспечения высоких характеристик пребразования при любых условиях). Иначе фильтр был-бы на звуковые частоты. Texas например, не ставит.
  15. Цитата(Сергей Борщ @ Mar 16 2008, 16:08) Исходя из чего вы сделали такой вывод о моих знаниях? Повторю еще раз:Замечательное пожелание. Но пока что вы не показали, в каком именно месте мои утверждения (которые я аргументировал) противоречат поминаемым вами основам. Тогда ответьте на вопрос Linkera: А каково назначение этой "небольшая RC цепочка на входе" по Вашему? Да вы запутались. Применительно к sigma-delta ADC Fs-на графике предаточной функции есть частота дискретизации данных на вывод, и это не является реальной частотой дискретизации входного сигнала. Входной anti-aliasing фильтр в таком случае имеет частоту среза на MHz, при том всем, что мы работаем в аудио полосе, т.е. фактически только удаление мигагерцовых наводок в тракте. И практически легко реализуется внутри уже самой ИС. Исходный вопрос звучал так - надо аудио anti-aliasing фильтр или нет. Ответ - для sigma-delta ADC нет.