Вассилис
Пн 17 августа 2015 г., 17:37
Сегодня я получил свою новую доску STM32F103VET и попытался проверить функцию DAC.
Я сделал быстрый поиск на этом форуме, но я не нашел простого примера DAC. Итак, я создал два
Примеры DAC не совместимы с библиотекой DAC Arduino Due, но я думаю, что для нас является первым шагом, чтобы они были такими же синтаксисом, как и у Arduino Due.
Любой комментарий ценится.
[Пример 1] Sawtooth -форма волны на обоих каналах ЦАП
Я сделал быстрый поиск на этом форуме, но я не нашел простого примера 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.
@Энди Я дал вашу рекомендацию BackSlash.
Мадиас
Вторник 25 августа 2015 12:48
Спасибо за этот маленький пример. Работает безупречно
Vassilis: Вы понятия не имеете, как перенести рабочий код I2S на наши платы STM32F103XXX (например, RCT6 или Vet6)?
Vassilis: Вы понятия не имеете, как перенести рабочий код I2S на наши платы STM32F103XXX (например, RCT6 или Vet6)?
Вассилис
Вторник 25 августа 2015 13:16
Мадиас написал:Спасибо за этот маленький пример. Работает безупречно
Vassilis: Вы понятия не имеете, как перенести рабочий код I2S на наши платы STM32F103XXX (например, RCT6 или Vet6)?
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.
Завтра попробую внутренний (оборудование) 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
Я имею в виду устройства 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 как библиотечная обертка) с различным поведением.
(Извините за мое плохое настроение, я страдаю от плохой болезни в течение недели, что я получил в отпуск...)
Хорошо, я попытался объединить все вещи, сделанные 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.
Жаль слышать, что ты болен
Возможно, нам нужно начать настаивать на том, чтобы получить полную работу ядра @Sheepdoll.
(Это ядро может также HELO с досками GD32, но я не думаю, что GD использует HAL, я думаю, что они просто используют CMSIS и т. Д.)
У меня может быть некоторое время на выходных, чтобы посмотреть на ядро SheepDoll.
Мадиас
Ср 26 августа 2015 г., 21:25
Роджер: тяжелая кишечная инфекция, пищевое отравление, что угодно...Это делает меня сварливым, и я думаю, что я также теряю клетки мозга
Cubemx, Hal, CMSIS: Я прав, что для всех нас будет очень проще переключаться между строками (F1-F7) и кодом порта? Так что это было бы много работы в следующие месяцы/недели, но гораздо меньше работы в будущем.
Cubemx, Hal, CMSIS: Я прав, что для всех нас будет очень проще переключаться между строками (F1-F7) и кодом порта? Так что это было бы много работы в следующие месяцы/недели, но гораздо меньше работы в будущем.
Mrburnette
Чт 27 августа 2015 г. 12:10
Мадиас написал:
<...>
Cubemx, Hal, CMSIS: Я прав, что для всех нас будет очень проще переключаться между строками (F1-F7) и кодом порта? Так что в следующие месяцы/недели было бы много но гораздо меньше работы в будущем.
Cubemx, Hal, CMSIS: Я прав, что для всех нас будет очень проще переключаться между строками (F1-F7) и кодом порта? Так что в следующие месяцы/недели было бы много но гораздо меньше работы в будущем.
Вассилис
Четверг 27 августа 2015 г., 11:51
Я написал простой пример I2S, используя STM32F103C8T и DAC TDA1543.
Я скоро опубликую это
Я скоро опубликую это
Мадиас
Чт 27 августа 2015 12:05
Ты отличный, Вассилис, спасибо У меня есть много из них (TDA1543) где-то (но я думаю, что они неисправны, работает только с 8-битным...Но хорошо для того, чтобы что -то проверить)
РЕДАКТИРОВАТЬ: Вы действительно имели в виду STM32F103C8? В этом MCU нет внедренного аппаратного i2s.
РЕДАКТИРОВАТЬ: Вы действительно имели в виду 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
О 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?
Да у меня есть один
>>У вас есть устройство, способное I2S?
Нет, я не
>>У вас есть один из этих клонов Analical Analica Saleae?
Да у меня есть один
Мадиас
Чт 27 августа 2015 г., 22:02
Да, чем разбил это Я потратил с ними часы, пока не понял, что они неисправны.
>>У вас есть устройство, способное I2S?
Нет, я не Хорошо, я имел в виду MCU, но я полностью забыл, что у вас есть ветеринарная доска (так что с аппаратными i2s). Я бы отправил вам несколько PT8211 бесплатно, если вам интересно выполнить поддержку HW I2S
Честно говоря: реализация «Отсутствие HW I2S» является последней частью головоломки, которой мне не хватает, чтобы создать полный синтезатор (как минимум с 4 независимыми выходами/голосами) с STM32... Но построить основную библиотеку самостоятельно, выходит за рамки моих знаний.
Нет, я не Хорошо, я имел в виду 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
Скриншоты включены.
http: // www.STM32duino.com/viewtopic.PHP?F = 18&t = 519
VIKTOR_7
Вторник 8 августа 2017 г. 8:10
Привет!
Пожалуйста, помогите, почему ADC на STM32F103VCT6 работает должным образом, а на STM32F100 (STM32VldScovery) не работает ??
В менеджере платы я выбираю необходимый микроконтроллер.
Пожалуйста, помогите, почему ADC на STM32F103VCT6 работает должным образом, а на STM32F100 (STM32VldScovery) не работает ??
В менеджере платы я выбираю необходимый микроконтроллер.
Дэнниф
Сб 19 августа 2017 г. 13:21
Sawtooth -форма волны на обоих каналах ЦАП
Подобные часы кода полезны для тестирования концепции, но не так полезны в реальной жизни, так как время цикла, как правило, не соответствует запуска до запуска.
Гораздо лучший подход - это DDS:
1) Создать форму волны в таблицах;
2) индексировать таблицы через фазовый аккумулятор;
3) В таймере ISR увеличить фазовый аккумулятор, а затем вывести форму волны;
Изменив шаг на фазовый аккумулятор или таблицы формы волны, вы можете изменить выходную частоту или выходную форму волны, легко.
Ципы DDS, по сути, это, но внедрены с помощью оборудования.
Гораздо лучший подход - это DDS:
1) Создать форму волны в таблицах;
2) индексировать таблицы через фазовый аккумулятор;
3) В таймере ISR увеличить фазовый аккумулятор, а затем вывести форму волны;
Изменив шаг на фазовый аккумулятор или таблицы формы волны, вы можете изменить выходную частоту или выходную форму волны, легко.
Ципы DDS, по сути, это, но внедрены с помощью оборудования.
Rogerclark
Сб 19 августа 2017 г. 9:18 вечера
Вы можете использовать DMA для получения данных из таблицы и отправить в ЦАП, так как это удалило бы накладные расходы ISR.
Я думаю, что настройка была бы похожа на то, что @Stsvstrong написала для использования DMA для чтения с 8 -битного параллельного устройства GPIO (камера OV7670).
Вам просто нужно изменить направление DMA и адреса порта
Я думаю, что настройка была бы похожа на то, что @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 (часы) на осциллографе, я получил это:
Я пытался сделать синюю таблетку с TDA1543, используя код из Василиса (ViewTopic.PHP?F = 18&t = 519)
Я подключаю его в сочетании с NE5532, как показывает изображение ниже:
Ну, я не получил ничего, кроме шума на выходе TDA1543. Просматривая выход на PA5 (часы) на осциллографе, я получил это:
- PIC_18_1.JPG (100.7 киб) просмотрено 1382 раз
Chismicro
Пт 20 октября 2017 г., 4:40
Вам действительно нужен ЦАП или может быть PWM или Sigma Delta Pin?
https: // github.com/chrismicro/bluepillsound
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] - Я не могу найти какой -либо конкретный код по данной ссылке.Ну, это код. https: // pastebin.com/tsbuc42b
Какова область представленной схемы и как она должна работать?
Какие сигналы вводятся в BCK, WS и данные? У вас есть какие -либо участки для этих?
И этот сюжет, который я опубликовал, от сигнала BCK. В любом случае, кроме того, что это странная форма, я снова посмотрел на нее и увидел что -то еще странное (работая сейчас на половине частоты / настройки SPI -разделителя на 32).
Часы BCK, в одиночку (это не смежно!)
- 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.
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
Для 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.Данке! Ich werde es mal gucken.
Для 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