Генератор формы волны (два примера ЦАП)

Вассилис
Пн 17 августа 2015 г., 17:37
Сегодня я получил свою новую доску STM32F103VET и попытался проверить функцию DAC.
Я сделал быстрый поиск на этом форуме, но я не нашел простого примера DAC. Итак, я создал два ;)

Примеры DAC не совместимы с библиотекой DAC Arduino Due, но я думаю, что для нас является первым шагом, чтобы они были такими же синтаксисом, как и у Arduino Due.

Любой комментарий ценится.

[Пример 1] Sawtooth -форма волны на обоих каналах ЦАП /** * Example of using the two DAC channels of the STM32F103VET micro-controller. * The STM32F103VET creates a Sawtooth waveform on pin PA4 (DAC Channel 1) and PA5 (DAC Channel 2) * * (c) 17 August 2015 by Vassilis Serasidis * */ #include "libmaple/dac.h" int i; void setup() { dac_init(DAC, DAC_CH1 | DAC_CH2); // Enable both DAC channels (Channel 1 and Channel 2). pinMode(PA4, OUTPUT); // DAC_CH1 shares the same pin with SPI1_NSS pin (PA4). So it has to be initialized again, as output. } void loop() { //Create a sawtooth waveform on pins PA4 (DAC Channel 1) and PA5 (DAC Channel 2) for(i=0;i<4096;i++){ dac_write_channel(DAC, DAC_CH1, i); //DAC, Channel, value dac_write_channel(DAC, DAC_CH2, i); //DAC, Channel, value } }

Ахулл
Пн 17 августа 2015 г. 22:10
Выглядит хорошо, у меня нет доски, чтобы попробовать ее, но когда у меня появится момент, я подключу ее к сферу. Он собирает хорошо для STM32F103RCT6, поэтому я выкопаю эту доску.

Единственная проблема, которую я заметил, - это то, что вы использовали... #include "libmaple\dac.h"

Вассилис
Солнце 23 августа 2015 г. 9:15 утра
Я загрузил два <Пример 2> снимки экрана в первом сообщении. Снимки экрана взяты из моего DSO203 осциллограф.

@Энди Я дал вашу рекомендацию BackSlash.

Мадиас
Вторник 25 августа 2015 12:48
Спасибо за этот маленький пример. Работает безупречно :)
Vassilis: Вы понятия не имеете, как перенести рабочий код I2S на наши платы STM32F103XXX (например, RCT6 или Vet6)?

Вассилис
Вторник 25 августа 2015 13:16
Мадиас написал:Спасибо за этот маленький пример. Работает безупречно :)
Vassilis: Вы понятия не имеете, как перенести рабочий код I2S на наши платы STM32F103XXX (например, RCT6 или Vet6)?

Мадиас
Вторник 25 августа 2015 г. 14:15
Ты совершенно прав! Я просто хочу использовать эскиз с внешним ЦАП, такой как TDA1543 или PT8211, как простой тест, тонкая настройка не является проблемой (скорость дискретизации, формат данных....). Я использую свой PIC32MX250 с ЦАП PT8211, и их действительно легко настроить, но с Libmaple я понятия не имею, как начать, потому что это просто не реализовано. Внутренняя функция I2S MCU Vet6 Интересно, не слышал о такой функции :) должен Google для этого....

Вассилис
Вторник 25 августа 2015 г. 14:27
Vet6 имеет два интерфейса I2S, мультиплексированные с помощью SPI2 и SPI3. I2S и поток данных SPI почти одинаково. Одно небольшое отличие состоит в том, что I2S нуждается еще один вывод (в случае использования внешнего чипа I2S), чтобы выбрать левый или правый аудиоканал.

Завтра попробую внутренний (оборудование) I2S Vet6 (оборудование) I2s.

Мадиас
Вторник 25 августа 2015 г., 17:26
Хорошо, было немного неправильно понято:
Я имею в виду устройства F103 с оборудованием i2s в качестве опции сборки в. (Сначала я подумал, что у Vet6 есть I2S DAC на борту...)
Таким образом, в частности, такие платы, как VET6, RCT6 и т. Д. (Я предполагаю, что все платы с 12-битным 2-канальным DAC также имеют возможность I2S)

Проблема в том, что только в SPI.H (нижние шапки!) File/s Есть несколько регистрационных записей для i2s, но нет функций в SPI.C или дополнительные детали. Я думаю, что Leaflabs спланировал это, но никогда не осознавал, что последний «настоящий клен» (с Ret6) не был поддержан даже самим Leaflabs .
Отправной точкой может быть https: // github.com/mubase/stm32f4-ardui ... M32F4Codec
Но файлы отличаются от STMF1 и, возможно, (или уверенного) устаревших.
Важным моментом должно быть включение прерывания, если буфер TX (возможно, также RX, но мне это не нужно), он немного отличается от «нормального» SPI

Мадиас
Ср 26 августа 2015 г., 16:00
О i2s:
Хорошо, я попытался объединить все вещи, сделанные Mubase для F4 https: // github.com/mubase/stm32f4-arduino-core
Результат: я сдаюсь (даже не пробегает наброски, после внесения изменений в RCC.H/C, SPI.h/c). Потратьте более 8 часов, дурачиваясь. Для меня это полностью, чтобы внедрить i2s из уровня ноль в этот API. Здесь я очень скучаю по своему PIC32MX: я получил I2s на тех MCU, которые работают только с помощью таблицы данных....
Кстати, есть слишком много файлов с теми же или - почти одинаковыми - именами и слишком большим количеством переходов, таких как RCC.H, RCC_F1.H, rcc_private.H и так далее. Это затрудняет реверс -инженер что угодно. Пример: есть 4 файла с именем "SPI.H "(хорошо, один SPI.h как библиотечная обертка) с различным поведением.
(Извините за мое плохое настроение, я страдаю от плохой болезни в течение недели, что я получил в отпуск...)

Rogerclark
Ср 26 августа 2015 г. 9:10 вечера
Привет, Матиас

Жаль слышать, что ты болен :-(

Возможно, нам нужно начать настаивать на том, чтобы получить полную работу ядра @Sheepdoll.

(Это ядро ​​может также HELO с досками GD32, но я не думаю, что GD использует HAL, я думаю, что они просто используют CMSIS и т. Д.)

У меня может быть некоторое время на выходных, чтобы посмотреть на ядро ​​SheepDoll.

Мадиас
Ср 26 августа 2015 г., 21:25
Роджер: тяжелая кишечная инфекция, пищевое отравление, что угодно...Это делает меня сварливым, и я думаю, что я также теряю клетки мозга ;)

Cubemx, Hal, CMSIS: Я прав, что для всех нас будет очень проще переключаться между строками (F1-F7) и кодом порта? Так что это было бы много работы в следующие месяцы/недели, но гораздо меньше работы в будущем.

Mrburnette
Чт 27 августа 2015 г. 12:10
Мадиас написал: <...>
Cubemx, Hal, CMSIS: Я прав, что для всех нас будет очень проще переключаться между строками (F1-F7) и кодом порта? Так что в следующие месяцы/недели было бы много но гораздо меньше работы в будущем.

Вассилис
Четверг 27 августа 2015 г., 11:51
Я написал простой пример I2S, используя STM32F103C8T и DAC TDA1543.
Я скоро опубликую это

Мадиас
Чт 27 августа 2015 12:05
Ты отличный, Вассилис, спасибо :) У меня есть много из них (TDA1543) где-то (но я думаю, что они неисправны, работает только с 8-битным...Но хорошо для того, чтобы что -то проверить)
РЕДАКТИРОВАТЬ: Вы действительно имели в виду STM32F103C8? В этом MCU нет внедренного аппаратного i2s.

Вассилис
Четверг 27 августа 2015 г., 13:24
Мадиас написал:РЕДАКТИРОВАТЬ: Вы действительно имели в виду STM32F103C8? В этом MCU нет внедренного аппаратного i2s.

Мадиас
Чт 27 августа 2015 г., 13:37
Хорошо, я думал, ты сражаешь.час. У вас есть устройство, способное I2S? Использование "простого" SPI для i2S приводит к почти меньшей выгоде.
О 6 -битном: вы уверены, что владеете "Standard I2S" TDA1543? Есть много неисправных на Aliexpress или ebay. Поэтому иногда они продавали TDA1543A - они поняли только «японский аудиоформат». Шахты совершенно неисправны: только 8 -битный возможный...
По этой причине я полностью переключился на ЦАП PT8211. Легко настроить с почти меньшим количеством аппаратного обеспечения и совершенно дешево. Лучше всего: они используют только 3 булавки: BCK, WS, DIN, так что нет мастер -часы.

Редактировать: У вас есть один из этих клонов Analical Analica Saleae? В программном обеспечении протокол I2S реализован. Очень помог мне на PIC32

Вассилис
Четверг 27 августа 2015 г., 8:44 вечера
@Madias Я подозреваю, что мои чипы TDA1543 (NXP) неисправны, как ваши :(

>>У вас есть устройство, способное I2S?
Нет, я не

>>У вас есть один из этих клонов Analical Analica Saleae?
Да у меня есть один

Мадиас
Чт 27 августа 2015 г., 22:02
Да, чем разбил это :) Я потратил с ними часы, пока не понял, что они неисправны. >>У вас есть устройство, способное I2S?
Нет, я не
Хорошо, я имел в виду MCU, но я полностью забыл, что у вас есть ветеринарная доска (так что с аппаратными i2s). Я бы отправил вам несколько PT8211 бесплатно, если вам интересно выполнить поддержку HW I2S :)
Честно говоря: реализация «Отсутствие HW I2S» является последней частью головоломки, которой мне не хватает, чтобы создать полный синтезатор (как минимум с 4 независимыми выходами/голосами) с STM32... Но построить основную библиотеку самостоятельно, выходит за рамки моих знаний.

Вассилис
Пт 28 августа 2015 г. 8:56 утра
Мадиас написал: Я бы отправил вам несколько PT8211 бесплатно, если вам интересно выполнить поддержку HW I2S :)

Вассилис
Пт 28 августа 2015 г., 17:55
Я написал очень простой пример наброса с использованием DAC PT8211 I2S с любым устройством STM32 с аппаратным интерфейсом SPI.
Скриншоты включены.
http: // www.STM32duino.com/viewtopic.PHP?F = 18&t = 519

VIKTOR_7
Вторник 8 августа 2017 г. 8:10
Привет!
Пожалуйста, помогите, почему ADC на STM32F103VCT6 работает должным образом, а на STM32F100 (STM32VldScovery) не работает ??
В менеджере платы я выбираю необходимый микроконтроллер.

Дэнниф
Сб 19 августа 2017 г. 13:21
Sawtooth -форма волны на обоих каналах ЦАП Подобные часы кода полезны для тестирования концепции, но не так полезны в реальной жизни, так как время цикла, как правило, не соответствует запуска до запуска.

Гораздо лучший подход - это DDS:

1) Создать форму волны в таблицах;
2) индексировать таблицы через фазовый аккумулятор;
3) В таймере ISR увеличить фазовый аккумулятор, а затем вывести форму волны;

Изменив шаг на фазовый аккумулятор или таблицы формы волны, вы можете изменить выходную частоту или выходную форму волны, легко.

Ципы DDS, по сути, это, но внедрены с помощью оборудования.

Rogerclark
Сб 19 августа 2017 г. 9:18 вечера
Вы можете использовать DMA для получения данных из таблицы и отправить в ЦАП, так как это удалило бы накладные расходы ISR.

Я думаю, что настройка была бы похожа на то, что @Stsvstrong написала для использования DMA для чтения с 8 -битного параллельного устройства GPIO (камера OV7670).
Вам просто нужно изменить направление DMA и адреса порта

AG123
Вторник 19 сентября 2017 г. 16:36
Это жаждает меня попробовать ЦАП на черных досках STM32F407VET6 :ржу не могу:

Эскарнейро
Пт 20 октября 2017 г. 1:11
Ребята,

Я пытался сделать синюю таблетку с TDA1543, используя код из Василиса (ViewTopic.PHP?F = 18&t = 519)
Я подключаю его в сочетании с NE5532, как показывает изображение ниже:

Изображение

Ну, я не получил ничего, кроме шума на выходе TDA1543. Просматривая выход на PA5 (часы) на осциллографе, я получил это:
pic_18_1.jpg
PIC_18_1.JPG (100.7 киб) просмотрено 1382 раз

Chismicro
Пт 20 октября 2017 г., 4:40
Вам действительно нужен ЦАП или может быть PWM или Sigma Delta Pin?

https: // github.com/chrismicro/bluepillsound

Стивестронг
Пт 20 октября 2017 г. 9:41
[Эскарнейро - Пт 20 октября 2017 г. 1:11]] - Я пытался сделать синюю таблетку с TDA1543, используя код из Василиса (ViewTopic.PHP?F = 18&t = 519)
Я не могу найти какой -либо конкретный код по данной ссылке.

Какова область представленной схемы и как она должна работать?
Какие сигналы вводятся в BCK, WS и данные? У вас есть какие -либо участки для этих?

Эскарнейро
Сб 21 октября 2017 г. 12:08
[Стивестронг - Пт 20 октября 2017 г. 9:41] - Я не могу найти какой -либо конкретный код по данной ссылке.

Какова область представленной схемы и как она должна работать?
Какие сигналы вводятся в BCK, WS и данные? У вас есть какие -либо участки для этих?
Ну, это код. https: // pastebin.com/tsbuc42b
И этот сюжет, который я опубликовал, от сигнала BCK. В любом случае, кроме того, что это странная форма, я снова посмотрел на нее и увидел что -то еще странное (работая сейчас на половине частоты / настройки SPI -разделителя на 32).

Часы BCK, в одиночку (это не смежно!)
pic_24_1.jpg
PIC_24_1.JPG (111.06 киб) просмотрено 1350 раз

Эскарнейро
Сб 21 октября 2017 г. 12:13
[Chismicro - Пт 20 октября 2017 г. 4:40] - Вам действительно нужен ЦАП или может быть PWM или Sigma Delta Pin?

https: // github.com/chrismicro/bluepillsound
Да, я хочу ЦАП, но ваш проект тоже кажется интересным. Но, возможно, я не мог понять схему, которую вы сделали. :ржу не могу:
Было бы неплохо, чтобы он был разработан в программном обеспечении EDA

Пито
Сб 21 октября 2017 г. 8:46 утра
Потенциальные проблемы:
1. Ваши опали могут потребовать +5 В и -5 В,
2. TDA равно 5 В, а его входные сигналы 0-3.Только 3v,
3. Протокол I2s, BP не имеет этого, afaik.

Стивестронг
Сб 21 октября 2017 г. 9:18 утра
Код, который вы используете, для PT8211.
Для TDA1543 вы должны:
- Обмен высоко и низким байт -заказом (он требует LSB, затем MSB, в то время как ваш код отправляет MSB, затем LSB)
- TDA питается 5V, STM32F1 работает с 3.3v - адаптация уровня может потребоваться

РЕДАКТИРОВАТЬ
- Значения сигнала могут нуждаться в адаптации, потому что самое низкое кодовое слово -32768 = 8000H дает наибольшее, самое высокое кодовое слово 32767 = 7fffh наименьшее напряжение.
(Beachte: Das niedrigste Kodewort -32768 = 8000h Ergibt Die Größte, Das Höchste Kodewort 32767 = 7fffh Die Kleinste Spannung)
Немецкая ссылка: https: // www-user.Ту-Шемнц.de/~ heha/m ... DA1543.htm

Эскарнейро
Солнце 22 октября 2017 г. 2:40
[Стивестронг - Сб 21 октября 2017 г. 9:18] - Код, который вы используете, для PT8211.
Для TDA1543 вы должны:
- Обмен высоко и низким байт -заказом (он требует LSB, затем MSB, в то время как ваш код отправляет MSB, затем LSB)
- TDA питается 5V, STM32F1 работает с 3.3v - адаптация уровня может потребоваться

РЕДАКТИРОВАТЬ
- Значения сигнала могут нуждаться в адаптации, потому что самое низкое кодовое слово -32768 = 8000H дает наибольшее, самое высокое кодовое слово 32767 = 7fffh наименьшее напряжение.
(Beachte: Das niedrigste Kodewort -32768 = 8000h Ergibt Die Größte, Das Höchste Kodewort 32767 = 7fffh Die Kleinste Spannung)
Немецкая ссылка: https: // www-user.Ту-Шемнц.de/~ heha/m ... DA1543.htm
Данке! Ich werde es mal gucken.

Недостаток STM32F103 до 48 МГц

Обратно