ЛР10 > Налаштування послідовних каналів цифрового сигнального процесору

Тема: Послідовні інтерфейси McBSP ЦСП C55x та способи їх програмування для роботи із аудіокодеком

Завантажити Матеріали до лабораторної работи по ЦСП С55х №10.

Цифровий сигнальний процесор має послідовні інтерфейси McBSP, які можна запрограмувати декількома способами. За допомогою цих каналів процесор зв’язується з аудіокодеком (рис. 1).

Рис. 1. У підключенні аудіокодеку до сигнального процесору використовуються два інтерфейси McBSP(1,2) причому один призначений для конфігурації кодеку, а інший для пересилки аудіо даних. Інтерфейси McBSP повнодуплексні.

 

Дані для конфігурації аудіокодеку мають пересилатись у форматі SPI, а аудіо дані мають пересилатись у спеціальному DSP форматі. Для цього інтерфейси McBSP мають бути налаштовані відповідним чином. Причому, канал McBSP1 має бути налаштований в режимі SPI Master. Опис регістрів керування порту McBSP можна знайти у технічній документації.

Для спрощення налаштувань каналу McBSP використовується бібліотека CSL, що дозволяє викликом кількох функцій швидко встановити необхідні параметри передачі даних. Для цього використовується спеціальна структура наступного вигляду:

 

typedefstruct {

Uint16 spcr1;

Uint16 spcr2;

Uint16 rcr1;

Uint16 rcr2;

Uint16 xcr1;

Uint16 xcr2;

Uint16 srgr1;

Uint16 srgr2;

Uint16 mcr1;

Uint16 mcr2;

Uint16 pcr;

Uint16 rcera;

Uint16 rcerb;

Uint16 rcerc;

Uint16 rcerd;

Uint16 rcere;

Uint16 rcerf;

Uint16 rcerg;

Uint16 rcerh;

Uint16 xcera;

Uint16 xcerb;

Uint16 xcerc;

Uint16 xcerd;

Uint16 xcere;

Uint16 xcerf;

Uint16 xcerg;

Uint16 xcerh;

 

} MCBSP_Config;

 

В неї необхідно записати всі конфігураційні дані відповідних інтерфейсів. В основній програмі налаштування для каналів SPI та DSP виглядають наступним чином:

 

McBSP1(SPI) 

McBSP2(DSP format) 

MCBSP_ConfigConfigSPIsound= {
    0x1000,
    0x0100,
    0x0000,

    0x0000,

    0x0040,

    0x0000,

    0x0063,

    0x2013,

    0x0000,

    0x0000,

    0x1a0a,

    MCBSP_RCERA_DEFAULT,

    MCBSP_RCERB_DEFAULT,

    MCBSP_RCERC_DEFAULT,

    MCBSP_RCERD_DEFAULT,

    MCBSP_RCERE_DEFAULT,

    MCBSP_RCERF_DEFAULT,

    MCBSP_RCERG_DEFAULT,

    MCBSP_RCERH_DEFAULT,

    MCBSP_XCERA_DEFAULT,

    MCBSP_XCERB_DEFAULT,

    MCBSP_XCERC_DEFAULT,

    MCBSP_XCERD_DEFAULT,

    MCBSP_XCERE_DEFAULT,

    MCBSP_XCERF_DEFAULT,

    MCBSP_XCERG_DEFAULT,

    MCBSP_XCERH_DEFAULT

};

MCBSP_ConfigConfigDSPsound= {
        0x0000,
        0x0100,
        0x0140,

        0x0000,

        0x0140,

        0x0000,

        0x0000,

        0x0000,

        0x0000,

        0x0000,

        0x0003,

        MCBSP_RCERA_DEFAULT,

        MCBSP_RCERB_DEFAULT,

        MCBSP_RCERC_DEFAULT,

        MCBSP_RCERD_DEFAULT,

        MCBSP_RCERE_DEFAULT,

        MCBSP_RCERF_DEFAULT,

        MCBSP_RCERG_DEFAULT,

        MCBSP_RCERH_DEFAULT,

        MCBSP_XCERA_DEFAULT,

        MCBSP_XCERB_DEFAULT,

        MCBSP_XCERC_DEFAULT,

        MCBSP_XCERD_DEFAULT,

        MCBSP_XCERE_DEFAULT,

        MCBSP_XCERF_DEFAULT,

        MCBSP_XCERG_DEFAULT,

        MCBSP_XCERH_DEFAULT

};

 

Конфігурація каналу MсBSP відбувається наступним чином:

  1. Ініціалізація бібліотеки CSL за допомогою функції CSL_Init().
  2. Отримання змінною посилання до інтерфейсу (хендлом) параметрів за допомогою функції MCBSP_Handle MCBSP_open(intDevNum, Uint32 Flags).
  3. Виконання конфігурації інтерфейсу за допомогою функції MCBSP_config(MCBSP_Handle _MCBSP, MCBSP_Config *Config), яка приймає наступні параметри – посилання до інтерфейсу та вказівник на конфігураційну структуру.
  4. Запуск послідовного каналу за допомогою функції
    MCBSP_start(MCBSP_Handle hMcbsp, Uint16 StartMask, Uint32 SampleRateDelay), яка приймає наступні параметри – посилання до інтерфейсу, стартову маску та затримку частоти дискретизації.

 

Наступний шаг – налаштування аудіокодеку. Сигнал подається на лінійний вхід з комп’ютера, передається на сигнальний процесор, а з сигнального процесору, через аудіокодек та навушники, доводиться до користувача. Відповідно, у аудіокодеку мають бути активними канали лінійного входу та навушників. Частота дескритизації становить 8 кГц. Тип даних, що відсилає аудіокодек – 16 бітні цілі числа зі знаком. Склад та структура керуючих регістрів аудіокодеку надається в технічній документації.

Регістри програмуються 16-бітними пакетами, де старші 7 біт пакету відповідають за номер регістру, а молодші 9 біт – за його вміст. Нижче наведено таблицю програмування регістрів аудіокодеку:

 

Назва та адреса

Вміст 

RR 0x1E00 0x000 
LLCIVC 0x0000 0x017 
RLCIVC 0x0200 0x017 
LCHVC 0x0400 0x1f9 
RCHVC 0x0600 0x1f9 
AAPC 0x0800 0x012 
DAPC 0x0A00 0x000 
PDC 0x0C00 0x002 
DAIF 0x0E00 0x043 
SRC 0x1000 0x08D 
DIA 0x1200 0x001 

 

Для зручності програмування регістрів аудіокодеку створена спеціальна функція (файл AIC.h):

 

Void aicSetReg( MCBSP_HandlemhMcbsp, unsignedshortint name, unsignedshortint value)

{

    while (!MCBSP_xrdy(mhMcbsp));

        MCBSP_write16(mhMcbsp, name | value);

    return;

}

Вона приймає наступні параметри – вказівник інтерфейсу, назву регістру, його значення.

Програма оперує з буфером розміром в 128 відліків. Кожного разу, коли приходить один відлік, він записується у вхідний буфер, а з вихідного буферу один відлік відсилається. Готовність для запису та зчитування по каналу McBSP аналізується по встановленню прапору готовності прийнятих даних, та прапору спустошення буферу відправки.

Функції MCBSP_write16 та MCBSP_read16 призначені для зчитування та запису даних по інтерфейсу McBSP.

 

Для перевірки роботи програми зробіть наступні кроки:

 

  1. Створіть новий проект у середовищі CCS; назвіть його exp та збережіть його у відповідній директорії. Додайте до проекту файли main.с, AIC.c та командний файл лінкера mcbsp1.cmd. Підключить бібліотеку засобів динамічної підтримки rts55.lib та бібліотеку підтримки кристалу csl5510PG2_2.lib. У вікні Build Options перейдіть до закладки Compiler. Виберіть категорію Basic , та вкажіть значення 5510:2 в графі Custom Target (-v). Виберіть категорію Preprocessor , та вкажіть значення CHIP_5510PG2_0 в графі Pre-Define Symbol (-d). Це необхідно для коректного підключення бібліотеки CSL.Запустіть програму на компіляцію.
  2. Завантажте програму до процесора.
  3. Підключіть аудіо вихід комп’ютера до з’єднувача LINE IN на платі, а навушники – до з’єднувача HEADPHONE.
    Включіть програму відтворення аудіо файлів.
  4. Запустіть на виконання програму процесора. Перевірте її роботу.