Перейти к содержанию
    

murmur

Участник*
  • Постов

    665
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные murmur


  1. Уже как бы и не помню. Возможно, я подправил в исходниках некоторые ляпы (ну вроде использования беззнаковых для знаковых, и подобное), а в общем и целом ничего не менял.

    Попробовала запустить хотя бы ваш проект - он у Вас на 24 МГц что ли? По крайней мере из комментариев к настройкам таймера это следует.

    Однако при изучении проекта я нашла что файл system_stm32 в проект вообще не добавлен, а в main.c есть функция настройки тактовой чатсоты, которая закомментирована.

    Признавайтесь, где вы спрятали настройку тактовой частоты, хочу настроить на 72 МГц.

    Кстати в том виде в котором вы выложили, я слышу не речь а чириканье.

  2. Приложил имеющиеся у меня исходники и проект для KEIL, который собирает библиотеку (библиотека собирается для удобства сборки некоего проекта, чтобы не перекомпилировать тот каждый раз из исходников, когда в проекте что-то меняется).

     

    Ах тыж вот оно что - FRAME_SIZE нужно менять в зависимости от частоты дискретизации, а ENCODED_FRAME_SIZE - в зависимости от сжатия.

    Скажите, вы что-то меняли кроме исполняемых файлов и их заголовков? Файлы в папке с библиотекой SPEEX не изменены?

    Просто ваш проект я запускать не буду, я хочу свой, уже готовый переделать.

  3. Вам нужны оригинальные исходники Speex, т.к. у порта от STM для других настроек не хватает таблиц этих самых настроек, так мне коллега по цеху рассказывал, поэтому у него было решение перейти на Opus (исходники были взяты с оригинального сайта), настройки гибче и понравилось ему больше.

    Вчитавшись в описание...

    По моему эта библиотека от ST рассчитана только на quality=4. Да, там есть дефайны, определяющие длину пакетов, видимо они сделаны для удобства.

  4. Звук получше можно сделать переключив кодек в один из режимов wideband и увеличить битрейт, 5кбит/с очень мало.

    Кодек Speex в первую очередь предназначен для передачи голоса, и получить качественного звука на нем не получится.

    Для воспроизведения звука в хорошем качестве, нужно использовать другой кодек, например Celt.

     

    Уважаемый! Мне как раз голос и нужен. Я сгенерировала голос программой Acapela, конвертировала его кодеком ACMSpeex в 32 kHz 5 кбит/сек, quality=10. Отличий от оригинала не услышала.

    Понятно, что если бы была музыка, то это была бы ерунда. В общем 5 кбит/сек меня устраивает, есть готовый аудиофайл.

     

    Есть также работающий код для STM32, который настроен на 8 кГц и quality=4, битрейт - 1 кбит/сек.

    Мой вопрос в том, может ли кто либо, реально этим занимавшийся, привести полный список того, что нужно поменять. Академичные рекомендации типа "ну настройте частоту дискретизации" не помогут. Что сделать в принципе я знаю, не это не помогает, какая-то заковырка в самом коде.

  5. Господа, есть такой кодек речевой - Speex, под него есть библиотека для STM32. Кто работал тот знает.

    Пример в ней заточен под quality=4, 8 кГц 1 кбит/сек.

    Хочется попробовать звук получше - quality 10, 32 кГц, 5 кбит/сек

    Что только не делала, дефайны меняла, размеры фреймов пересчитывала - слышно шипение. Такое ощущение что не все переменные исправила.

     

    Может кто занимался? Подскажите, как перенастроить?

     

  6. но уж если шоттки стоит последовательно с стабилитроном 3.0V то больше 3.3V при токе 10mA не будет никогода с гарантией.

    То есть стабилитрон и диод это вариант, лишенный недостатков обоих вариантов (просто диоды либо TVS). Единственный минус - это небольшой ток, но он решается установкой резистора (последовательно).

    Я правильно поняла?

  7. Скажите, так может мне на всех входах в том числе и на цифровых вместо диодов поставить вот такие штуки?

    http://www.mouser.com/ds/2/54/CDNBS16-T03_T36C-69148.pdf

  8. Если опустить намеки на резиновые изделия, то тут такое дело.

    Если нет вероятность превышения по напряжению постоянно, то ничего добавлять не надо.

    Если есть вероятность что на индуктивность подадут повышенное напряжение, то надо поставить защиту с диодами как в схеме выше.

    Ну только резистор поменьше номиналом, 1К или около того.

    Но лучше посмотреть рисунок участка, так как Ваши слова можно по разному трактовать.

    Эта схема будет питаться от мотоциклетной бортовой сети и измерять напряжение в этой же сети. Сам делитель собираюсь рассчитать на всякий случай на подачу 24 вольт. То есть при 24 вольтах на вход АЦП больше 3.3 вольт не поступит. А вот все что свыше 24 вольт - это уже импульсые помехи.

  9. Суть в том, что паразитный ток верхнего диода течет от 3.3V через 100К и 3К на землю и на этих 103К наводится 0.22V.

    Можно обойти ситуацию если вместо верхнего диода поставить стабилитрон на 3.3V. Или чтобы сэкономть на деталях поставить вместо напряжения

    VCC_3V3 стабилитрон на 3.0V. Смотрите картинку.

    Тогда при превышении ток пойдет через верхний диод и напряжение ограничит стабилитрон на уровне 3.0+0.4 = 3.4V, а при отрицательном сработает нижний диод как обычно.Правда ток который может выдержать стабилитрон будет милиампер 10..20. Намного меньше чем BAT54S. Для данной схемы 10mA означает напряжение на резисторе 3К должно быть 1000V в импульсе.

    При этом, если сигнала на входе нет, все компоненты подключены к земле и никаких наводок быть не должно.

    Вполне себе защита.

    хорошо, попробую.

     

    Тогда еще вопрос - у меня 3 входа АЦП, один из них меряет напряжение питания, съем показаний идет на входе преобразователя питания после индуктивности, конденсатора и двунаправленного супрессора. Имеет ли смысл защищать это вход, если это уже защищено. Не будет ли это "надеванием презерватива на презерватив"?

  10. Как вариант делитель поставить после диодов, тогда паразитное напряжение, которое видит АЦП уменьшится в 30 раз. Защитные свойства системы от этого только выиграют, так как сейчас делитель в зоне риска, и на 20К падает 0.4W то есть он то по любому выгорит при первом же импульсе, если только его мощность не 1W.

     

    Совет то конечно хороший. Я его даже реализовала в проекте и чуть было уже на заказала плату, как вдруг поняла.

    Если делитель расположить после диода то получится ерунда - на вход схемы защиты, до делителя будут подаваться законные 20 вольт а диодная цепь, верхнее плечо которой подсоединено к 3.3. вольт будет ее безжалостно рубить.

    Если же верхнее плечо диодной защиты подключить к плюсу питания - та тогда цепь при вгозникновении высоковольтной помехи с этой же помехой и будет сравнивать сигнал, смысл диодной защиты пропадает...

    Как поступить-то?

  11. http://www.ebay.com/itm/ODROID-XU4-/172106...~4AAOSwll1WxaTK

    Кто-нибудь юзал уже такое?

    Как понимать это "Samsung Exynos5422 Cortex™-A15 2Ghz and Cortex™-A7 Octa core CPUs" ? Два камня с разным числом ядер? Или два варианта платы?

    Можно ли залить Андроид?

    Есть отзывы?

  12. Есть 20-ти ваттный динамик, есть магнитола, к которой он подключен.

    На этот динамик нужно подавать звук из дополнительного источника.

    Очень не хочется лезть в магнитолу, подавать звук до усилителя.

    Готова сделать отдельный усилитель на 20 ватт и переключать динамик - отключать его от магнитолы и подключать к моему усилителю. Самый простой вариант - реле, но хочется, чтобы не щелкало.

    Есть какие-нибудь микросхемные решения?

  13. Дисплей не мешал контроллеру.

    Еще раз говорю - кто-то мне посоветовал в SWD кабеле пустить только линии данных и плюса питания. У него видимо работало благодаря земле USB.

    У меня (еще 2 недели назад) не заработало, я соединила минус питания с землей J-LINK. Заработало. я осталась довольна. Нужен этот разъем был на один раз (при серийном производстве), почему бы и нет.

    Не знаю почему, может положение кабеля питания относительно какого-нибудь источника помех поменялось, но программироваться контроллер перестал.

    Когда я стала играться с RC-цепочкой на NRST, предположение о ресете от помех было ошибочным - как в том анекдоте про таракана, который без ног не слышит, а потому не реагирует на команды.

    Вылечилось только тогда, когда я подпаяла провод поближе к SWD и соединила его с землей J-LINK. На этом проблемы с прошивкой контроллера исчезли. Но осталась проблема с запуском.

    Вообще-то, по уму, в отлаживаемых устройствах всегда желательно иметь какой-либо канал вывода отладочного лога.

    Так мне SWD для отладки хватало выше крыши. На худой конец, отлаживаемую информацию я выводила на экран. Все ножки контроллера были задействованы, UART-не вариант.

    Код дисплея был отработанный, проверенный, сам дисплей надежно припаян, исправен, как казалось. Поэтому когда включаешь устройство и видишь пустой экран, который даже не моргает от инициализации, первая мысль - про контроллер.

     

    Я так и не понял причину.

    Дисплей наводил помеху на цепи NRST?

    как дисплей мог наводить помеху, если он не работал?

    Ничего он не наводил. Еще раз говорю, контроллер работал, просто если он обращался к дисплею в первую секунду после включени питания (не запуска, контроллера, а именно включения питания), дисплей молчал. Дисплей прогревался 2-3 секунды, обретал работоспособность и если контроллер перезагружался дисплей работал.

     

     

    Мне кажется это все опять притянуто за уши.

    Программа перестроена так, что контроллер обращается к дисплею непрерывно после старта, пока тот не ответит. В результате - холодное устройство выводит на экран информацию через 3-4 секунды, прогретое- сразу же. RC-цепочку с NRST убрала, ситуация не ухудшилась. Все программирутеся, все запускается, ничто не ресетится само.

     

  14. Разрешилось.

    Прям как в анекдоте

    - Владимир Владимирович, скажите, что делаю российские войска на Украине?

    - Что делают? Отсутствуют.

     

     

    Так и тут. Почему не запускается контроллер? Да на самом деле он запускался и наверное все это время тихо надо мной посмеивался.

    На самом деле ПЕРИОДИЧЕСКИ не стартовал не контроллера, а дисплей, программа контроллера узрев ошибку дисплея, спокойно шла дальше, а так как никаких других исполнительных устройств на плате нет, догадаться что контроллер работает никак было нельзя.

    Вы скажете, эх ты раззява, а отладчик на что?

    Дело в том, что, как я уже писала выше, за день до этого была замена микросхемы феном. С противоположной стороны платы располагается дисплей, его контроллер как раз в проекции микросхемы. Перегрела я контроллер и теперь дисплей должен 2-3 секунды после включения прогреться, тогда он заводится и работает без сбоев.

     

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

     

    А как же прикосновение пальца? Вот как раз прикосновение пальцем после прогрева дисплея и вызывало ресет и нормальный запуск устройства.

    Доказательство вышесказанному - убрала RC цепочку с NRST - все работает нормально.

     

    Как вылечилось? В конечном устройстве конечно же будет установлен исправный дисплей, но в программу добавлена проверка работоспособности дисплея в цикле, пока дисплей не откликнется.

     

    Спасибо за поддержку)

     

  15. ПРичиной появления пятивольтового импульса была "культура производства" - плохой контакт земли с земляным "крокодильчиком" осциллографа (все это сносно и даже без искажений компенсировалось связью по земле USB осцилографа и J-LINK, как оказывается для работы этого достаточно, а в моменты включения происходят перекосы).

    Пятивольтовый импульс исчез, на осциллографе плавное нарастание напряжения до 3.3 вольт. Но вот проблемы это почему-то не решило. Контроллер бывает не стартует. Может какая наносекундная помеха? У меня осциллограф всего 200 кГц дискретизации, может и не поймать.

     

    Сомневаюсь в браке преобразователя

    Подтверждаю. Я отпаяла преобразователь и запитала схему от импульсника на LM2596s - та же периодически возникающая проблема.

     

    теперь питание идёт через паразитную землю через щупы осциллографа или через плату отладки или еще как...

    Полностью отключила плату от паразитов, ни осциллографа, ни программатора, только питание - знаете, частота сбоев только возросла.

     

    Будем искать...

  16. Очень странным кажется то, что это число проходит проверку...

    Это не число проходит проверку, это ошибка логики.

    Условие сформировано так что идет проверка не лежит ли число в пределах, отличных от рассматриваемого? То есть не находится ли оно в пределах от 0 до 12 и от 20 до 65535. Естественно оно в этих пределах не находится, поскольку не является числом. Отсюда программа делает ошибочный вывод, что расссматриваемое число лежит в пределах от 12 до 20 ти.

     

    Правильно нужно было сделать так

    if ((!(OPTIONS_VAR.VoltageMAX>=12)) && (!(OPTIONS_VAR.VoltageMAX<=20)))
  17. Согласна насчет емкостей. Странно, у меня и тантал на выходе и керамика... Плюс на NRST конденсатор... Не могут же все три конденсатора быть бракованными...

    С пайкой точно все хорошо - у меня нет тестовых точек на плате, точно помню как тыкала щупом на эти конденсаторы, напряжение на них есть.

     

    Ну бог с ними, я отпаяла ножку до конденсаторов и факт остается фактом - пребразователь бракованый.

    Буду разбираться потихоньку со всем.

  18. HardEgor, вот честно, еще до вашего сообщения сама к этому пришла.

    Отпаяла ножку выхода линейного преобразователя от платы, то есть фактически отсоединила всю схему от узла питания. Померяла напряжение на этой ножке - кошмар, на ней как раз 5 вольтовый всплеск.

    Бракованый преобразователь получается.

     

    P.S. сколько раз при подобных проблемах (не запускается, не программируется и пр.) первые советы, которые давали - посмоти помехи, посмотри разводку, посмотри длину кабелей. Некоторые, взглянув на топологию, критиковали разводку земли и били себя в грудь, что именно в этом дело. Никогда вышеперечисленное не оказывалось причиной, она жевсегда была банальна. Вроде нынешней.

  19. если что-то похерилось в настройках, значит прибор будет работать не так, как нужно? или я что-то не понимаю?

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

    И таким образом имеем два варианта

    1. Ваш - прикручиваем CRC, загружаемся, ловим ошибку CRC - дальше что делаем? Наверное то же что делаю я - ставим безопасные настройки. Причем все, вы ведь по CRC всю структуру будете браковать?

    2. Мой вариант - проверяем корректность настроек поштучно. Ставим по дефолту только тот параметр, который невменяем.

     

  20. Проверять корректность блока данных по значению какой-то отдельной переменной, на мой взгляд, не есть гуд

    Не проще добавить дополнительное поле с CRC? Достоверность в разы повысится

     

    Была такая мысль.

    Но из-за одного испорченного байта сбрасывать в дефолт все настройки? Не есть гуд.

    Можно конечно поставить цель меганадежного хранения данных, тогда нужно писать три копии переменных и сверять их содержимое, то есть будет возможность восстановления данных. Но это не самоцель.

  21. Коллеги, есть проблемка. Сохраняю настройки во флеш. Есть функция, которая читает настройки при старте и в случае их некорректности (порча ячейки) устанавливает дефолтное значение.

    Эта функция за время жизни устройства запускается как минимум один раз - при первой прошивке настройки пусты, программа понимает, что в ячейке бред, устанавливает дефолтное значение и пишет его во флеш.

     

    В одной из ячеек хранится float. Его корректность проверяется следующим образом:

     
    flash_data=flash_read(page_address+8);  // Читаем
    OPTIONS_VAR.VoltageMAX=UintToFloat(flash_data); //Преобразуем во float
       if ((OPTIONS_VAR.VoltageMAX<12) || (OPTIONS_VAR.VoltageMAX>20))  // проверяем диапазон и если там некорректные данные то...
        { 
         OPTIONS_VAR.VoltageMAX=14;  // ставим дефолт
         OPTIONS_FLASH_ERROR=1; // ставим флаг ошибки, ориентируясь на который программа в дальшейшем пытается записать во флеш правильное значение
       }

     

    Но вот беда, при пустом флеше в ячейке располагается нечто, что будучи преобразованным при помощи UintToFloat отображается в отладчике как " -1.#QNAN ". Это полбеды, настоящая беда в том, что вышеприведенная функция считает что данные корректны и не считает нужным их исправлять.

    То есть " -1.#QNAN " удовлетворяет условиям if ((OPTIONS_VAR.VoltageMAX<12) || (OPTIONS_VAR.VoltageMAX>20))

     

     

    Что делать?

     

    Добавлено спустя 1 минуту

     

    Кто-нибудь объяснит феномен, по которому над проблемой бьешся час, не находишь решения, потом задаешь вопрос на форуме, после чего решение, не дожидаясь ответов, приходит в голову немедленно?

  22. Какая-то дрянь все-таки на ножку проникает.

    Пойман всплеск до 5 вольт(входное напряжение, до преобразователя, около 6-ти вольт).

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

     

    Вот что на осциллограмме при подключении питания к устройству.

    post-64708-1454787756_thumb.jpg

  23. Причина практически нашлась.

    Видать какие-то помехи наводятся на NRST. У меня на нем резистор на плюс 10 кОм и керамика 0.1 мкф - на минус.

    Интересная картина - если подавать питание подключая и отключая разъем на плате - имеется описанная выше проблема. Если же дергать адаптер из розетки - все нормально - и стартует и программируется, но через раз.

     

    Зато если прикоснуться пальцем к точке,гда соединюятся конденсатор резистор и NRST - проблема исчезает навсегда.

     

    Не хочется методом тыка дальше работать, хочу спросить, что правильнее сделать - поиграться с сопротивлением, изменить емкость конденсатора? Или добавить в параллель конденсаторов другой емкости?

     

     

×
×
  • Создать...