Перейти к содержанию
    

Поясните работу кодека AIC23

Создаю на основе отладочной платы TMSDSK5510 адаптивный фильтр, при этом кодек AIC23 настроен на прием 2-х аналоговых сигналов (т.е. работает в стерео режиме с разрядностью в 16 бит) и отправку одного (также 16 бит). Алгоритм получается довольно громоздкий, поэтому важен вопрос размещения кусков исполняемого кода между прерываниями приема и отправления сигнала кодеку.

Подскажите пожалуйста прерывания (приём1-отсыл1-приём2-отсыл2-) устанавливаются через равные промежутки времени, или есть более долговременные периоды (например приём1-отсыл1-------------приём2-отсыл2---------).

Т.е. где располагать основной кусок кода? :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прием и передача будут идти парами. Но первая рекомендация - используйте DMA и затем прерывания от DMA по заполнению/опустошению половины буфера. В этом случае Вы существенно сэкономите на накладных расходах и получите довольно большой люфт при обработке прерываний. Будет существенно проще писать основную программу. И если будете потом делать собственную плату - не закладывайтесь на кодет AIC23 - он уже сильно устаревший. Сейчас есть AIC32 и его модификации 32хх - существенно лучше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите пожалуйста прерывания (приём1-отсыл1-приём2-отсыл2-) устанавливаются через равные промежутки времени, или есть более долговременные периоды (например приём1-отсыл1-------------приём2-отсыл2---------).

Т.е. где располагать основной кусок кода? :laughing:

Зачем у вас такая жёсткая привязка?

По-моему должен быть обработчик ISR DMA привязанного к McBSP, который принимает блоки сэмплов от DMA/ставит на передачу блоки в DMA и пингует задачу, обрабатывающую входной поток блоков сэмплов и генерящую выходной поток. Это может быть либо фоновая задача, либо задача запускаемая от этого ISR.

Задача обработки это должен быть простой цикл, который смотрит - если есть данные во входном буфере - обрабатывает их и кладёт в выходной буфер, если нет данных - может перевести проц в idle или освободить время для другой задачи. Групповая задержка сигнала будет зависеть от глубины буферизации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...