Темброблок - анализатор спектра на STM32F103
Re: Темброблок - анализатор спектра на STM32F103
[uquote="Sergey212",url="/forum/viewtopic.php?p=4552331#p4552331"][uquote="helpers37",url="/forum/viewtopic.php?p=4551775#p4551775"]Огромное спасибо за такое крутое устройство WiseLord, шел к нему года два! Творческих Вам успехов!!!
Прошился я наконец таки, но прошивка для моего дисплея подошла только самая первая от 14.05.19 На всех остальных просто белый экран. Прошивал Бин файлом под stm32f103. Может быть у кого есть более подходящий Бин файлик по свежее версии? Или можете подсказать как исправить уже имеющийся для моего экрана? Буду признателен! Жду не дождусь все уже наконец таки запаять и укаповать в корпус![/uquote]
Если платка старая, то проверьте на наличие резистора R25 по линии HW_RST. Он должен отсутствовать.[/uquote]
Какая платка я не знаю, но возможно он заработал потому как я в последний момент аккурат перед последней попытки прошить заметил комментарий в схеме на счёт этого резистора и решил его снять. Спасибо!
Прошился я наконец таки, но прошивка для моего дисплея подошла только самая первая от 14.05.19 На всех остальных просто белый экран. Прошивал Бин файлом под stm32f103. Может быть у кого есть более подходящий Бин файлик по свежее версии? Или можете подсказать как исправить уже имеющийся для моего экрана? Буду признателен! Жду не дождусь все уже наконец таки запаять и укаповать в корпус![/uquote]
Если платка старая, то проверьте на наличие резистора R25 по линии HW_RST. Он должен отсутствовать.[/uquote]
Какая платка я не знаю, но возможно он заработал потому как я в последний момент аккурат перед последней попытки прошить заметил комментарий в схеме на счёт этого резистора и решил его снять. Спасибо!
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок - анализатор спектра на STM32F103
Нет, тут всё правильно.kovalgg писал(а):функция tda7719SetMiddleFilter - reg10 |= (aPar->tune[AUDIO_TUNE_MIDDLE_QUAL] <TDA7719_MIDDLE_QFACT_OFT);
и функция tda7719SetBassFilter - reg11 |= (aPar->tune[AUDIO_TUNE_BASS_QUAL] << TDA7719_BASS_QFACT_OFT);
В присваивании первой функции ошибка? Я правильно понял?
Вот кусочек из даташита на TDA7719:
Для настройки фильтра средних частот нужно записать 5 байтов Gain/Attenuation по нулевому смещению и два байта Middle Q Factor по смещению 5.
Что делает код:
Код: Выделить всё
int8_t value = (aPar->flags & AUDIO_FLAG_BYPASS) ? 0 : aPar->tune[AUDIO_TUNE_MIDDLE];
uint8_t reg10 = (value > 0) ? (31 - value) : (15 + value);
reg10 <<= TDA7719_MIDDLE_ATT_OFT;
reg10 |= (aPar->tune[AUDIO_TUNE_MIDDLE_QUAL] < TDA7719_MIDDLE_QFACT_OFT);
Если пользователем задана настройка AUDIO_FLAG_BYPASS (отключены все аудио фильтры), используем значение 0. Иначе - значение, заданное пользователем aPar->tune[AUDIO_TUNE_MIDDLE] - некое число от -15 до 15. Например, -14
2 строка.
Мы не можем просто записать это число в регистр. Согласно табличке значению -14дБ соответствует число 1 (00001b). Вот его здесь пересчитываем и в переменной reg10 и запоминаем
3 строка.
Сдвигаем это число по смещению TDA7719_MIDDLE_ATT_OFT = 0. Фактически ничего не происходит, но для унификации кода так удобнее - сдвиги могут быть и ненулевые, как дальше.
4 строка.
Дописываем в reg10 значение aPar->tune[AUDIO_TUNE_MIDDLE_QUAL], заданное пользователем (от 0 до 3), но сдвинутое на TDA7719_MIDDLE_QFACT_OFT = 5 позиций влево.
Просто напомню, что запись var <<= value (как и прочие подобные - обычно встречается +=) означает var = var << value. А var |= value - это, соответственно, var = var | value;
Дальше уже рассчитанное значение reg10 пишется по I²C шине в аудиопроцессор.
У многих из поддерживаемых контроллеров шаг настройки параметров не целый, а, например, 1.25дБ, или 1.5дБ. Получается, например, такое соответствие значения в регистре и реальных децибелов:kovalgg писал(а):И растолкуйте пожалуйста - static const AudioGrid gridVolume = {NULL, -79, 15, (int8_t)(1.00 * STEP_MULT)} - умножение на STEP_MULT.
Код: Выделить всё
0: 0дБ
1: 1,25дБ
2: 2,5дБ
3: 3,75дБ
...Можно было бы хранить и дробные числа, но тогда пришлось бы по 4 байта на каждый использовать.
Это как раз то, что я и описывал выше. Например,kovalgg писал(а):И растолкуйте пожалуйста - static const AudioGrid gridVolume = {NULL, -79, 15, (int8_t)(1.00 * STEP_MULT)} - умножение на STEP_MULT.
# tda7418.c
static const AudioGrid gridVolume = {NULL, -79, 15, (int8_t)(1.00 * STEP_MULT)}; // -79..15dB with 1dB step
# tda731x.c
static const AudioGrid gridVolume = {NULL, -63, 0, (int8_t)(1.25 * STEP_MULT)}; // -78.75..0dB with 1.25dB step
В первом случае шаг регулировки равен 1дБ, поэтому grid.mStep равен 8.
Таким образом, raw значение -79 в регистре таким и останется при выводе: showValue = -79 * mStep / STEP_MULT = -79 * 8 / 8 = -79
Во втором случае шаг регулировки равен 1дБ, поэтому grid.mStep равен 1.25*8 = 10.
Таким образом, raw значение -63 в регистре таким и останется при выводе: showValue = -63 * mStep / STEP_MULT = -63 * 10 / 8 = -78,75
Это находится среднее значение, чтобы потом, вычев его, выровнять полученный набор данных относительно нуля. Тогда не будет ложного ненужного первого столбика спектрограмме, который обычно бывает, если есть постоянная составляющая в сигнале (0 Герц).kovalgg писал(а):dcOft - это типа АРУ
Re: Темброблок - анализатор спектра на STM32F103
WiseLord, благодарю за разЪяснение. Вопрос про присваивание возник из-за разности операций в скобках- в первом случае <(меньше), во втором <<(сдвиг).
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок - анализатор спектра на STM32F103
А знаете, похоже это и правда моя опечатка в коде при копипастах...
P.S. Исправил: https://github.com/WiseLord/ampcontrol- ... it/e8d0eb2
Спасибо за находку )
P.S. Исправил: https://github.com/WiseLord/ampcontrol- ... it/e8d0eb2
Спасибо за находку )
Re: Темброблок - анализатор спектра на STM32F103
WiseLord, здравствуйте. Посмотрите еще дефайны TDA7719.
#define TDA7719_BASS_FREQ_200HZ 0x60
#define TDA7719_MIDDLE_FREQ_500HZ 0x18 <-
#define TDA7719_MIDDLE_FREQ_1000HZ 0x18 <-
#define TDA7719_MIDDLE_FREQ_1500HZ 0x18 <-
#define TDA7719_MIDDLE_FREQ_2000HZ 0x18 <-
Может где и ещё есть такое? Но я пока не дошел
#define TDA7719_BASS_FREQ_200HZ 0x60
#define TDA7719_MIDDLE_FREQ_500HZ 0x18 <-
#define TDA7719_MIDDLE_FREQ_1000HZ 0x18 <-
#define TDA7719_MIDDLE_FREQ_1500HZ 0x18 <-
#define TDA7719_MIDDLE_FREQ_2000HZ 0x18 <-
Может где и ещё есть такое? Но я пока не дошел
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок - анализатор спектра на STM32F103
Да, тут тоже опечатки. Но уже не критичные, так как в коде не используются.
Re: Темброблок - анализатор спектра на STM32F103
Всем здравия!!! WiseLord, снова прошу помощи.Функция drawSpectrum:
const int16_t step = (rect->w + 1) / SPECTRUM_SIZE + 1; // Step of columns
const int16_t colW = step - (step / 2); // Column width
const int16_t num = (rect->w + colW - 1) / step; // Number of columns
const int16_t width = (num - 1) * step + colW; // Width of spectrum
const int16_t height = rect->h; // Height of spectrum
const int16_t oft = (rect->w - width) / 2; // Spectrum offset for symmetry
const int16_t y = rect->y;
Закралось сомнение,что я правильно считаю. Дисплей ST7735. Получились следующие значения:
step = 2
colW = 1
num = 80
width = 159
height= 128
oft = 0
Возможно,что пока "бродил" по структурам где то ошибся. Поправьте мои вычисления,если они не верны. Если я ошибся, буду искать - где я ошибся.
Извините за глупые вопросы, но очень хочется понять(для себя) как все работает.Спасибо.
const int16_t step = (rect->w + 1) / SPECTRUM_SIZE + 1; // Step of columns
const int16_t colW = step - (step / 2); // Column width
const int16_t num = (rect->w + colW - 1) / step; // Number of columns
const int16_t width = (num - 1) * step + colW; // Width of spectrum
const int16_t height = rect->h; // Height of spectrum
const int16_t oft = (rect->w - width) / 2; // Spectrum offset for symmetry
const int16_t y = rect->y;
Закралось сомнение,что я правильно считаю. Дисплей ST7735. Получились следующие значения:
step = 2
colW = 1
num = 80
width = 159
height= 128
oft = 0
Возможно,что пока "бродил" по структурам где то ошибся. Поправьте мои вычисления,если они не верны. Если я ошибся, буду искать - где я ошибся.
Извините за глупые вопросы, но очень хочется понять(для себя) как все работает.Спасибо.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок - анализатор спектра на STM32F103
Вроде верно. На разрешении 160x128 получится отрисовать 80 полос шириной 1px с шагом 2px. Весь спектр займёт площадь 159x128.
Re: Темброблок - анализатор спектра на STM32F103
WiseLord, благодарю за столь быстрый ответ. Есть ещё вопрос:функция spectrumColumnDraw ,там есть проверка
// Full redraw the column
if (0 || clear) {......
С clear всё понятно,а вот интересует 0 (нуль) в проверке
Я такого не встречал. Растолкуйте пожалуйста.Спасибо.
// Full redraw the column
if (0 || clear) {......
С clear всё понятно,а вот интересует 0 (нуль) в проверке
Я такого не встречал. Растолкуйте пожалуйста.Спасибо.
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок - анализатор спектра на STM32F103
Равносильно "if (clear)". Видимо, остатки от отладки, когда можно было быстро поставить сюда 1 и полная отрисовка (столбец и пустота целиком) включалась на каждом цикле.kovalgg писал(а): if (0 || clear) {......
Re: Темброблок - анализатор спектра на STM32F103
helpers37, готов взять одну плату AMpcontrol.Почта podlub@mail.ru
- Never not try
- Открыл глаза
- Сообщения: 43
- Зарегистрирован: Пн авг 23, 2021 17:27:42
Re: Темброблок - анализатор спектра на STM32F103
И мне можно одну платку, пожалуйста.
- Never not try
- Открыл глаза
- Сообщения: 43
- Зарегистрирован: Пн авг 23, 2021 17:27:42
Re: Темброблок - анализатор спектра на STM32F103
helpers37, платка получена. Спасибо.
Re: Темброблок - анализатор спектра на STM32F103
helpers37, плата приехала. Спасибо!
Добавлено after 12 minutes 37 seconds:
[uquote="WiseLord",url="/forum/viewtopic.php?p=4541939#p4541939"]Если отладка и работа с программой не нужна, можно просто имея любой USB-UART донгл прошить. Утилита: https://www.st.com/en/development-tools ... stm32.html
В рамках проекта достигается нажатием кнопки BTN2 с удержанием и сброса контроллера. При зажатой кнопке он загрузится в режим bootloader (BOOT1=0, BOOT0=1) и примет от этой утилиты файл прошивки.[/uquote]
Утилита по указанной ссылке недоступна https://www.st.com/en/development-tools ... stm32.html
Добавлено after 12 minutes 37 seconds:
[uquote="WiseLord",url="/forum/viewtopic.php?p=4541939#p4541939"]Если отладка и работа с программой не нужна, можно просто имея любой USB-UART донгл прошить. Утилита: https://www.st.com/en/development-tools ... stm32.html
В рамках проекта достигается нажатием кнопки BTN2 с удержанием и сброса контроллера. При зажатой кнопке он загрузится в режим bootloader (BOOT1=0, BOOT0=1) и примет от этой утилиты файл прошивки.[/uquote]
Утилита по указанной ссылке недоступна https://www.st.com/en/development-tools ... stm32.html
- Вложения
-
- скрин2.jpg
- (17.99 КБ) 125 скачиваний
-
frost37rus
- Родился
- Сообщения: 18
- Зарегистрирован: Пт мар 29, 2024 08:36:41
Re: Темброблок - анализатор спектра на STM32F103
Доброго времени суток!
Может у кого то есть печатные платы изготовленые на производстве для данного проекта??? Я бы купил
Может у кого то есть печатные платы изготовленые на производстве для данного проекта??? Я бы купил
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: Темброблок - анализатор спектра на STM32F103
Доступна с VPN и регистрацией на сайте. Ну, или искать на файлопомойках.dipsat писал(а):Утилита по указанной ссылке недоступна https://www.st.com/en/development-tools ... stm32.html
Re: Темброблок - анализатор спектра на STM32F103
[uquote="pap.cot",url="/forum/viewtopic.php?p=4561348#p4561348"]dipsat, https://disk.yandex.ru/d/ZzU3wv5jmqvJtw[/uquote]
Спасибо, вам большое!!!
А еще кто может подсказать на какой самый большой размер дисплея есть рабочая библиотека, и вообще по качеству какой лучше на Али заказать (если можно то дайте ссылку). Заранее благодарен.
Спасибо, вам большое!!!
А еще кто может подсказать на какой самый большой размер дисплея есть рабочая библиотека, и вообще по качеству какой лучше на Али заказать (если можно то дайте ссылку). Заранее благодарен.