[Протестировано] Audio DAC - Альтернатива для PT8211 - CS4334

Мадиас
Вторник 27 марта 2018 г., 19:58
[Обновлять:]
CS434 хорошо играет с STM32F103, но только с аппаратными i2s, потому что ЦАП нуждаются в главных часах (MCLK), и только аппаратные i2s могут предоставить его. Конечно, вы можете настроить таймер подделка/вычислять основные часы, но я сомневаюсь в полезной точности
Так что, если вы на доске без i2s (C8, CB, RB...) рассмотреть возможность использования PT8211 в режиме i2S «подделка» (SPI)


Многие люди здесь экспериментируют с аудио и i2s. Я был тем, кто воспитывал PT8211 на этот форум в качестве экстремальной низкой стоимости (но не слишком плохой звучание) Audio DAC.
Сортируя мои «создание вещей» (без опознавательных/названных плат Vero с электроникой), я узнал, что я также экспериментировал с 24-битным CS4334 Audio DAC.
Я упомянул, что выходная цепь проще с единичными расходными материалами.
Посмотрите на «типичную диаграмму соединения» на стр. 4:
http: // www.мышца.com/ds/2/76/cs4334-5-8-9_f6-19636.PDF
Лучше всего: они полностью снижают цену за последние 2-3 года: 10 шт.5 евро на Aliexpress.
https: // www.aliexpress.com/item/10pcs-c ... 28100.HTML

РЕДАКТИРОВАТЬ: Протестировано! CS4334 работает без проблем - GOTO Page 2 этого потока для кода.

Мадиас
Вторник 27 марта 2018 г., 8:01 вечера
UPS, я написал о CS4334 в 2015 году,
Потому что использовал его с моим Pic32:
(Прокрутите немного вниз):
ViewTopic.PHP?t = 57&начало = 20

...Теперь я знаю, почему я отказался от этих ЦАП - но, возможно, это не проблема с нашей новой библиотекой I2S, я должен проверить это: Устройства Cirrus немного «особенные», потому что им нужны 4 строки (некоторые i2 используют только 3 строки, устройства Cirrus нуждаются в MCKL)
MCLK 37 Master Clock (вход) - Источник часов для модуляторов Delta -Sigma.
SCLK 38 Serial Clock (вход/вывод) - последовательные часы для серийного аудио -интерфейса.
SDIN 39 последовательных аудиоданных вводов (вход) - вход для двух’S дополняет последовательные аудиоданные.
LRCK 40 левый правый (вход/вывод) - определяет, какой канал, слева или справа, в настоящее время активен на
серийная линия аудиоданных.

victor_pv
Вторник 27 марта 2018 г., 21:46
Как насчет TDA1387?

Я видел это упомянуто на нескольких форумах, кажется, что это тоже довольно дешево, 2 доллара за 20 шт.
https: // www.aliexpress.com/item/tda1387 ... 66193.HTML
Вероятно, подделка

О MCLK, он доступен, и библиотека F1 I2S должна работать, но у меня нет такого DAC, чтобы проверить его.
Основные различия без использования MCLK (со стороны библиотеки) заключаются в том, что MCLK должен быть настроен для AFIO (должен работать нормально), а расчеты див. Расчеты часов очень внимательно следуют за эквивалентной функцией в STM HAL и вычисляют правильные настройки, когда не используют MCLK, поэтому я считаю, что они должны работать нормально. В лучшем случае, если кто -то попытается, а часы не имеют оценки, нам может потребоваться небольшое изменение в библиотеке.

Мадиас
Вторник 27 марта 2018 г., 21:47
Примечание для себя - даже с STM32F1xx генерирующими мастер -часы:
http: // www.ул.com/content/ccc/resource/ ... 190749.PDF
Глава 1.6: Периферийное устройство I2S можно настроить в качестве мастера или раба в аудиооб связи.
I2S генерирует свои собственные часы (независимо от часов SPI, используемых для регистров интерфейса, чтобы
шина APB) с использованием 9-битного прескалера и разработанного для достижения точных аудиочастот
(8 кГц, 16 кГц, 22.05 кГц, 44.1 кГц, 48 кГц и т. Д.) (а). При настройке в главном режиме,
Периферийное устройство способно вывозить дополнительные основные часы (MCLK) с фиксированной скоростью: 256 × FS
(где Fs - аудиочастота).

Мадиас
Вторник 27 марта 2018 г. 9:50 вечера
[victor_pv - Вторник 27 марта 2018 г. 9:46 вечера] - Как насчет TDA1387?

Я видел это упомянуто на нескольких форумах, кажется, что это тоже довольно дешево, 2 доллара за 20 шт.
https: // www.aliexpress.com/item/tda1387 ... 66193.HTML
Виктор: У меня был очень плохой опыт работы с TDA DAC (TDA1541) из ALIEXPRAS производится в Китае, как я знаю)

victor_pv
Вторник 27 марта 2018 г., 21:52
Приятно знать! Я смазаю свой пост выше, чтобы никого не ввести в заблуждение.

Мадиас
Вторник 27 марта 2018 г., 21:55
Основная причина, по которой я писал о CS4334, заключается в том, что чип предназначен для одного напряжения, поэтому мы можем использовать его без дальнейших аудио цепей непосредственно с PAM (?) Чип усилителя - только недостаток - это настройка основных часов (я не знаю, реализована ли эта функция в нашей библиотеке I2S - должен прочитать завтра об этом)
РЕДАКТИРОВАТЬ: ОК, Victor Редактировать пост выше о библиотеке I2S и MCK ;)

victor_pv
Вторник 27 марта 2018 г. 22:10
Единственное недостаток, который я вижу при использовании сигнала MLCK, заключается в том, что новая плата Bluepill F4 не имеет этого вывода в заголовках, вместо этого это одна из маленьких тестовых точек припов в нижнем, PC7 для первого порта i2S и может не помни во второй, но я думаю, что это тоже была одна из тестовых точек ПК.

Было бы неплохо иметь ЦАП, который мы можем использовать с крошечной платой Blupillf4.

Мадиас
Ср 28 марта 2018 г., 7:33
Дорогой Виктор,
Я прошел быстрое исследование о "Audio DAC - одиночном питании" - Саммер: Логические устройства Cirrus по -прежнему идеальны, но все они используют MCLK.
Вот карта сравнения:
https: // www.Циррус.com/solutions/#psearch
О вашей мини -доске F4 и PC7: нет возможности в AFIO_REMAP?

Мадиас
Ср 28 марта 2018 г., 7:46
Хорошо, Виктор, я думаю, у меня есть интересный кандидат для вас:
Cirrus Logic CS4350
https: // www.Циррус.com/products/cs4350/
  • Автоматическое обнаружение образцов
    Цифровая фильтрация с низкой задержкой
    Интегрированные блокировки PLL в входящие левые часы - MCLK не требуется
    Поддерживает аудио форматы PCM и TDM
    Односторонняя или дифференциальная аналоговая выходная архитектура
На Али я рассчитывал на 10 пунктов около 6 евро (вкл. перевозки):
https: // www.aliexpress.com/item/cs4350- ... 37794.HTML

Мадиас
Ср 28 марта 2018 г. 9:01
Виктор: Я осмотрел вашу библиотеку I2S:
Является inline void PinLow () { DDRB = DDRB | 1<

Мадиас
Ср 28 марта 2018 13:27
Вот функционально демо -код I2S для CS4334
Настройка основных часов была более чем простой.
Вывод: просто влево, увидел справа.
Я использовал библиотеку I2S (внутри эскиза) из Victor (от Adafruit Mp3 Audio Repro, думаю, что это последняя версия)
Волшебная линия boolean OWC_reset = false; boolean OWC_command = false; boolean owc_Read = false ; uint32_t firstMicros, calcMicros, guardDog ; boolean bark = false; uint8_t command, control = 0; uint8_t DataBytes[8] = { 0,1,2,3,4,5,6,7 }; #define OneWireCommandPin PB4 inline void PinOutputLOW() { DDRB = DDRB | (1 << OneWireCommandPin); } // outputLOW inline void PinInput() { DDRB = DDRB & ~(1 << OneWireCommandPin); } // input inline uint8_t PinRead() { return PINB >> OneWireCommandPin & 1; } // returns 0 or 1 void setup() { OneWireSetup(); }

victor_pv
Ср 28 марта 2018 г. 14:02
[Мадиас - Ср 28 марта 2018 г. 9:01] - Виктор: Я осмотрел вашу библиотеку I2S:
Является #include "stm32l4xx_hal_rng.h" RNG_HandleTypeDef hrng; uint32_t randomNumber; void setup() { Serial.begin(9600); delay(3000); __HAL_RCC_RNG_CLK_ENABLE(); hrng.Instance = RNG; HAL_RNG_Init(&hrng); } void loop() { // put your main code here, to run repeatedly: HAL_RNG_GenerateRandomNumber(&hrng, (uint32_t *)randomNumber); Serial.println(randomNumber, DEC); }

Мадиас
Ср 28 марта 2018 г. 14:06
Просто для записи:
Хорошо, мне не удалось получить 24 -битный выход работы. Возможно, это вызвано "i2sclass :: write (int32_t -образец)" Слушается в 24 -битном режиме - я не знаю.
...Если кто -то заботится о 24 -битном (для «настоящих 24 -битных» аудиоустройств / приложений, нам нужно гораздо больше, чем STM32F103 ;) )

Мадиас
Ср 28 марта 2018 г. 14:14
Хорошо, Виктор, это было только две вещи, которые я вспомнил...

Вот фотография действительно неспективной цепи (только резисторы и крышки):

victor_pv
Ср 28 марта 2018 г., 17:38
Вы использовали 24 -битный режим? Мне любопытно узнать, работает ли это.
F1 I2S не может отправить 24BITS на самом деле, вместо этого он отправляет 32BITS, причем 0 заполняет либо на старте, либо в конце в зависимости от некоторых настройки регистрации. Так было бы хорошо знать, работает ли библиотека в этом режиме.


Только что увидел ваш пост выше последнего.
Может быть связано с необходимой скоростью в MCLK в режиме 24 -битного режима. Я должен прочитать через таблицу данных для CS и для F1.

Мадиас
Чт 29 марта 2018 12:12
Виктор: Это не беспокоит, действительно :)
Итак, вот пример для вывода i2S-DMA: RNG_HandleTypeDef hrng; uint32_t randomNumber; void setup() { Serial.begin(9600); delay(3000); RCC_PeriphCLKInitTypeDef PeriphClkInitStruct; PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RNG; PeriphClkInitStruct.RngClockSelection = RCC_RNGCLKSOURCE_PLL; HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct); __HAL_RCC_RNG_CLK_ENABLE(); hrng.Instance = RNG; HAL_RNG_Init(&hrng); int i; for (i=1; i<25; i++) { HAL_RNG_GenerateRandomNumber(&hrng, &randomNumber); Serial.println(randomNumber); } } void loop() { // put your main code here, to run repeatedly: }