Шаг №2. Работа с внешним ЦАП CS43l22
Скажем прямо, здесь нам очень повезло, мы нашли очень качественную статью по работе с внешним ЦАП платы STM32f4.
Перед нами схема внешнего ЦАП CS43l22. Из нее мы можем сделать вывод, что по I2C1 будем передавать управляющие команды ЦАПУ. (Необходима настройка пинов PB6 и PB9).
По интерфейсу I2S3 будем передавать данные. (Настройка пинов PC7,PC10,PC12,PA4).
И также необходимо провести настройку PD4 пина, отвечающего за перезапуск микросхемы.
Инициализацию портов и интерфейсов i2s, i2c возьмем с официальной библиотеки stm. Файлы (stm32f4_discovery_audio_codec.h,stm32f4_discovery_audio_codec.c).
Из данной статьи нам будет полезна функция передачи необходимых данных ЦАПУ через i2c - void writeI2CData(uint8_t bytesToSend[], uint8_t numOfBytesToSend).
Ссылка на официальную библиотеку STM: http://www.st.com/web/en/catalog/tools/PF257904
Скачиваем STSW-STM32068. Затем в папке Utilities\STM32F4-Discovery находим нужные нам файлы.
Для передачи данных по I2S декодированных данных целесообразно использовать DMA.
Новые данные будем передавать по прерыванию DMA_IT_TC (TC - transfer complete), это означает, что передача данных на ЦАП закончена. В этом прерывании мы будем пересылать новые данные ЦАПу, но об этом позже.
В результате многодневных трудов получилась добротная библиотека для работы с внешним ЦАП CS43l22.
На этом настройку ЦАП можно считать законченной.