Mysteo 0 16 октября, 2019 Опубликовано 16 октября, 2019 (изменено) · Жалоба 32 minutes ago, jcxz said: Хотя всё равно скорей всего не один период нужно будет измерять, а несколько. И усреднять. Да я так делал , когда нужно было только одну частоту при двоичном кодировании расшифровывать. 19 minutes ago, uriy said: Переделайте DTMF декодер на алгоритме герцеля под ваши частоты. Да хочу сначала какую нибудь одну реализацию попробовать, потом на другие перейти, сейчас занялся через rfft , как сделаю покажу результат. Не пойму почему в CMSIS DSP если использовать arm_rfft_256_fast_init_f32 тратиться всего 3килобайта флэша , а при использовании arm_rfft_init_q15(&sq15,256, 0, 1) - 70 килобайт флэш. баг какой то или это нормальное явление Изменено 16 октября, 2019 пользователем Mysteo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 16 октября, 2019 Опубликовано 16 октября, 2019 · Жалоба в STM32 нет встроенной поддержки Q15. Наверно это не баг. И мне кажется float в STM32 будет работать медленно, но Q15 еще медленнее. Если в вашем чипе есть FPU то умножение будет отрабатывать за один такт, а у множение Q15 за один такт уже не сработает. С фильтрами еще печальней, в STM32 нет аппаратных циклов. На одно полезную операцию умножения с накоплением будет уходить больше операций на инкремент счетчика, проверку условия и переход в начало цикла. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 16 октября, 2019 Опубликовано 16 октября, 2019 (изменено) · Жалоба Когда я использовал цифровые фильтры через CMSIS DSP то такой утечки флэши не встречал. И при фильтрации q15 быстрее работал , чем float , что логично. Наверное это все таки с Real FFT Tables как то связано Изменено 16 октября, 2019 пользователем Mysteo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 16 октября, 2019 Опубликовано 16 октября, 2019 · Жалоба 13 минут назад, Mysteo сказал: Не пойму почему в CMSIS DSP если использовать arm_rfft_256_fast_init_f32 тратиться всего 3килобайта флэша , а при использовании arm_rfft_init_q15(&sq15,256, 0, 1) - 70 килобайт флэш. баг какой то или это нормальное явление Может потому что первое компилите для Cortex-M4F (с FPU)? Но у Вас ведь Cortex-M3, где нет FPU. Зачем тогда оно Вам? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 16 октября, 2019 Опубликовано 16 октября, 2019 · Жалоба Нет я не компилю для Cortex M3 . дефайны ARM_MATH_CM3 стоят Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 16 октября, 2019 Опубликовано 16 октября, 2019 · Жалоба 28 минут назад, uriy сказал: Если в вашем чипе есть FPU то умножение будет отрабатывать за один такт, а у множение Q15 за один такт уже не сработает. Во-первых: в CM3 нет FPU. Во-вторых: CM3 запросто умножает два Q15-числа за один такт + 1 такт на сдвиг. А если есть последующие операции с этим результатом, то этот сдвиг можно прибавить к ним и лишнего такта не потребуется. Цитата С фильтрами еще печальней, в STM32 нет аппаратных циклов. На одно полезную операцию умножения с накоплением будет уходить больше операций на инкремент счетчика, проверку условия и переход в начало цикла. Так не надо делать одну операцию фильтра в цикле. Надо делать их несколько. Тогда печаль немного уменьшится. Хотя до DSP ему конечно всё равно далеко.... 13 минут назад, Mysteo сказал: Нет я не компилю для Cortex M3 . дефайны ARM_MATH_CM3 стоят Так для чего Вы компилите??? Для какого ядра? Это секрет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 16 октября, 2019 Опубликовано 16 октября, 2019 · Жалоба Ой , извините опечатался , я компилю для Cortex M3 и дейфайны выставлены правильные ARM_MATH_CM3 при использовании arm_rfft_init_q15 70 килобайт флэши скушалось. Расскоментируем arm_rfft_init_q15 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 16 октября, 2019 Опубликовано 16 октября, 2019 · Жалоба 1 минуту назад, Mysteo сказал: при использовании arm_rfft_init_q15 70 килобайт флэши скушалось. Так посмотрите на свои же картинки - скушалось оно у Вас под какие-то данные, а не под код. Под код там всего ~200 байт добавилось. Чтоб убедиться какие именно используются инструкции (используются ли инструкции FPU или нет) нужно листинги смотреть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 19 октября, 2019 Опубликовано 19 октября, 2019 · Жалоба Слушайте , а как быть с тонокомпенсацией или как это по правильному называется ... Но суть в том что если передавать разные частоты с одинаковой амплитудой то микрофон , да и человеческое ухо реагирует на них по разному , какие то громче какие то тише частоты , это весьма мешает при составлении алгоритма, на передающей стороне эту компенсацию лучше делать или на приемной ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 19 октября, 2019 Опубликовано 19 октября, 2019 · Жалоба По-правильному это называется "предыскажения" (на передачу +6дБ/окт в полосе модулирующих частот 300..3400 Гц, на приём соответственно -6дБ/окт), присуще аналоговым средствам радиосвязи (разборчивость речи улучшается при узкополосной ЧМ); для полосы ваших частот (500..1250 Гц) или если не используется аналоговый тракт радиопередачи - не нужно. Электретный микрофон (или вы ДЭМШ применяете Ж8-\) в вашей полосе смело считайте линейным ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 19 октября, 2019 Опубликовано 19 октября, 2019 · Жалоба У меня канал передачи динамик - электретный микрофон . В будущем переедем на цифровой MEMS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 21 октября, 2019 Опубликовано 21 октября, 2019 (изменено) · Жалоба Вот что удалось пока сделать https://youtu.be/qWgP6HoH7dw В звуке зашифровано helloWorld , все распознается. Пока алгоритм построен на rfft преобразовании. Сейчас пробовать делать на герцеле , а потом просто на компараторе, как писал один из участников форума. Единственный минус пришлось добавить между детектируемыми частотами левую частоту, иначе нужно как-то мучиться с синхронизацией...... Изменено 21 октября, 2019 пользователем Mysteo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 21 октября, 2019 Опубликовано 21 октября, 2019 · Жалоба 16 частот по 40 мс (те на 25 б/с): 400 б/с ... двадцать лет назад (это не для красного словца) доступные микросхемы FFSK-модемов (FX469) без затей, и без затраты "дикой" вычислительной мощи, в телефонном тракте позволяли 4800 б/с. "Стоило ли так напрягаться, чтоб узнать так мало", - как сказал малыш дойдя до конца азбуки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 21 октября, 2019 Опубликовано 21 октября, 2019 · Жалоба 4 часа назад, Mysteo сказал: В звуке зашифровано helloWorld , все распознается. Теперь подмешайте туда шум с некоторым уровнем. То, что работает на идеальном сигнале, без шума - пользы мало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Mysteo 0 22 ноября, 2019 Опубликовано 22 ноября, 2019 · Жалоба On 10/21/2019 at 6:57 PM, Obam said: 16 частот по 40 мс (те на 25 б/с): 400 б/с ... двадцать лет назад (это не для красного словца) доступные микросхемы FFSK-модемов (FX469) без затей, и без затраты "дикой" вычислительной мощи, в телефонном тракте позволяли 4800 б/с. Да я прекрасно понимаю , что велосипед тут не изобретаю , но нужно было в устройстве сделать передачу данных как в яндекс станции смотреть с 35 секунды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться