Szymon Dyja
Аудиоплеер воспроизводит wav - аудиофайлы в формате стерео с частотой дискретизации 22.5 кГц и разрешением 8 бит, записанные на карту памяти MMC (SD).
Основой устройства является микроконтроллер AT91SAM7S256 компании Atmel, построенный на базе ядра ARM7TDMI, к которому подключен символьный ЖК дисплей на контроллере HD44780 и слот для карты памяти MMC. Дисплей работает в 4-битном режиме.
Основные характеристики микроконтроллера:
- 32-битное ядро ARM7TDMI, RISC архитектура;
- встроенная высокоскоростная Flash-память 256 КБайт, 1024 страницы по 256 Байт;
- встроенная высокоскоростная SRAM 64 КБайт;
- контроллер сброса;
- расширенный контроллер прерываний;
- модуль отладки, двухпроводный UART, два модуля USART;
- 20-битный программируемый счетчик + 12-битный интервальный счетчик;
- 32-битный циклический счетчик с сигнализацией;
- 32 программируемый линии ввода/вывода общего назначения;
- интерфейс SPI;
- трехканальный 16-битный счетчик;
- четырехканальный 16-битный ШИМ контроллер;
- 8-канальный 10-битный АЦП;
- напряжение питания 3.3 В.
Блок-схема микроконтроллера
Основные характеристики устройства:
- воспроизведение wav-файлов в стерео формате, частота дискретизации 22500 Гц, разрешение 8 бит;
- индикация названия аудиофайла;
- индикация времени звучания;
- возможность остановки воспроизведения и выбора файла;
- возможность изменять громкость звучания;
- возможность установки произвольного выбора аудиофайлов;
- чтение данных с карты памяти MMC;
- индикация состояния на символьном ЖК дисплее.
Принципиальная схема устройства
Подключение LCD дисплея
Вывод микроконтроллера |
Вывод LCD модуля |
PA8 | E |
PA9 | RS |
PA4 | D4 |
PA5 | D5 |
PA6 | D6 |
PA7 | D7 |
Список компонентов
Обозначение в схеме | Описание, номинал |
U1 | Микроконтроллер AT91SAM7S256 |
R1 | 1.5 кОм |
R2 | 1 кОм |
RN1, RN2 | набор резисторов 10 кОм |
C1, C2, C7 | 22 пФ |
C5 | 1 нФ |
C6 | 10 нФ |
C8 | 10 мкФ |
C9 | 1 мкФ |
10 | 470 пФ |
SW1, SW2 | Кнопки |
MMC_SLOT | Слот для карты памяти ММС |
JTAG | Коннектор отладочного интерфейса JTAG |
OUT | Выход аудио сигнала |
Принцип работы устройства прост: микроконтроллер считывает данные с карты памяти по интерфейсу SPI, помещает их в два буфера и затем перенаправляет в модуль ШИМ.
Чтение данных с карты памяти осуществляется с помощью программного модуля FatFS. Данный блок необходим, т.к. карта использует файловую систему (FAT16 или FAT32). Для записи файлов на карту памяти используется персональный компьютер, прочитанные данные сохраняются в двух буферах.
Программный блок FatFS написан на ANSI C, поэтому он не зависит от аппаратного уровня и может быть просто адаптирован для других микроконтроллеров.
Поддержка карты памяти по интерфейсу SPI требует трех сигнальных линий от микроконтроллера: MOSI, MISO и CLK (тактовый сигнал). Для питания карты необходимо напряжение 3.3 В, что соответствует питанию микроконтроллера.
В микроконтроллере таймер PIT (20-битный программируемый счетчик + 12-битный интервальный счетчик) настроен на периодические прерывания с частотой 22.5 кГц – частота дискретизации wav-файла. В обработчике прерывания проверяется, какой из буферов в текущий момент времени используется, и соответствующие значения индексов передаются в буферные регистры ШИМ генератора. Сами эти значения представляют собой 2 канала звука (левый и правый). Когда индекс буфера достигает максимальной длины массива, происходит смена буфера, устанавливается соответствующий флаг, разрешая запись следующей части данных в другой буфер.
Для воспроизведения звука используются два независимых канала ШИМ, которые сконфигурированы на работу с разрешением 8 бит, частота MCK/8. Заполнение ШИМ генератора зависит от данных получаемых с буферов и, соответственно, пропорционально выходному напряжению на выводе микроконтроллера.
Демонстрация работы аудиоплеера
Загрузки
Исходный код программы микроконтроллера - скачать