/*************************************************************************************************************
  Copyright (C) 2016-2022 JSC "ICC Milandr" 

*************************************************************************************************************/

/*
 *
 *  Файл:      readme.txt
 *  Описание:  Описание примера AUDIO_I2S_TLV320AIC23B
 *
 *  История:
 *             29.09.22  - cоздан
 *
 */


/* Описание примера ----------------------------------------------------------------------------------------*/

В данном примере демонстрируется работа с внешней микросхемой аудиокодека TLV320AIC23B по интерфейсу I2S и SPI.

Настройка микросхемы TLV320AIC23B осуществляется с помощью программного интерфейса SPI. Приём и передача 
аудиоданных выполняется с помощью контроллера интерфейса к аудиокодеку AC97/I2S. Для работы с контроллером
интерфейса к аудиокодеку AC97/I2S используется DMA: 9 канал осуществляет приём с использованием 2 буферов, 
а 5 канал осуществляет передачу с использованием 2 буферов. Буферы для приёма и передачи замкнуты в цепочку: 
bufferRxa->bufferRxb->bufferRxa, bufferTxa->bufferTxb->bufferTxa.

Если раскомментирован дефайн ECHO, то программа реализует режим "эхо" - данные, принятые с внешнего аудиокодека,
передаются обратно. Приём работает в режиме стерео, а передача в режиме моно. 
При приёме в режиме стерео отсчёт состоит из двух составляющих: 16 бит для правого канала и 16 бит для левого канала. 
При передаче в режиме моно контроллер интерфейса к аудиокодеку AC97/I2S считывает младшее 16-битное значение из 
буфера FIFO и отправляет его в правый и левый канал. Далее считывается старшее 16-битное значение из буфера FIFO
и также отправлется в правый и левый канал.
Таким образом для приёма (режим стерео) задаётся размер буфера равный BUF_SIZE_RX, а для передачи принятых данных
(режим моно) задаётся размер буфера BUF_SIZE_TX = BUF_SIZE_RX/2.

Если раскомментирован дефайн SIN, то в программе выполняется только передача синусоидального сигнала на внешний
аудиокодек, настройки синусоидального сигнала задаются в tlv320aic23b.h.


/* Содержание каталога -------------------------------------------------------------------------------------*/

    - main.c               Основная программа
    - tlv320aic23b         Драйвер для работы с микросхемой TLV320AIC23B
    - project.ldf          Файл сценария для компоновщика
    - session.lldbinit     Файл инициализации периферии до запуска отладки
    - .cproject, .project  Файлы конфигурации проекта


/* Аппаратная и программная среда --------------------------------------------------------------------------*/

    - Интегрированная среда разработки CM-LYNX.
    - Отладочная плата для процессора 1967ВН044.
    - Комплект модуля камеры для микросхем 1967ВН044.

    Модуль камеры реализует функции камеры, микрофона и наушников. Перед началом работы модуль камеры 
    необходимо подключить в разъёмы XS7-XS8 отладочного модуля для процессора 1967ВН044. 
    Для модуля отладочного вер. 2.31 и более необходимо снять джампер с разъёма XP1 и установить в ПО вывод 
    процессора flag2 в высокоимпедансное состояние либо в состояние логического «0».
    Для модуля отладочного вер. 2.3 и менее необходимо установить джампер на разъём XP1.


/* Использование -------------------------------------------------------------------------------------------*/

Для запуска примера необходимо выполнить следующие действия:
    - Создать новое или открыть существующее рабочее пространство (Workspace).
    - Выполнить импорт проекта "AUDIO_I2S_TLV320AIC23B" в соответствии с 
      "ML_GUI_Руководство_пользователя_R_Vx", п. "Импорт существующего проекта".
    - Выполнить сборку проекта.
    - Создать конфигурацию отладки в соответствии с "ML_GUI_Руководство_пользователя_R_Vx", п. "Настройка 
      конфигурации и запуск отладки".
    - Запустить пример в режиме отладки.

Подробное описание библиотеки HAL с примерами использования функций приведено в каталоге по пути:
"CM-LYNX.x.yy.zz\toolchain\1967VN044\HAL\doc".
