Jump to content

    

ksv198

Участник
  • Content Count

    182
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ksv198

  • Rank
    Частый гость
  • Birthday 08/15/1970

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Ставрополь

Recent Profile Visitors

2184 profile views
  1. STM32H743 + SDRAM MT48LC32M16A2-75

    Вот, в приложении рабочая конфигурация для варианта STM32F767 и MT48LC32M16A2-75. Частота 216 МГц (кварц 25 МГц), память 108 МГц. Если для копирования массивов в/из SDRAM будет использована память DTCM, то MPU можно не трогать. Tmp.zip
  2. Ошибаешься, тёзка :-) А если на линии будет цифра? Правда это совсем другая инфраструктура (существенно дороже, потому как ЛВС вместо двухпроводки).
  3. Доброго дня! А Вы уверены, что эхо именно линейное, а не акустическое? Проверить легко - отключите микрофон, если эхо исчезло, то это акустическое, если нет - линейное. Если действительно линейное, то возможен вариант решения проблемы с использованием ML7037-003. Или кардинально - переход на цифру, так как уже используется.
  4. Речь идёт не об интерфейсе MDIO, а о доступе к MDIO Manageable Device (MMD) Registers (Indirect). Для этого можно (согласно даташита) использовать любой интерфейс. Я использую SPI. Есть два 16 битных регистра: PHY MMD Setup Register (доступен по адресам 0xN11A - 0xN11B где N номер порта меди) и PHY MMD Data Register (доступен по адресам 0xN11C - 0xN11D). С их помощью можно получить доступ к 65535 регистрам устройства (из них только 2 описаны в даташите). Дело в том, что errata для свича чуть более чем на 90% состоит из рекомендаций вида: Write to the following MMD registers for each PHY port [1-5] и далее список значений, например: [MMD] [register] [data] 0x01 0x6F 0xDD0B 0x01 0x8F 0x6032 0x01 0x9D 0x248C 0x01 0x75 0x0060 0x01 0xD3 0x7777 0x1C 0x06 0x3008 0x1C 0x08 0x2001 Игнорировать errata как-то неправильно, особенно после внимательного прочтения.
  5. Доброго всем дня! Есть устройство, в составе которого микрочиповский свитч KSZ9897S. К свитчу по SPI подключен микроконтроллер, для начальной конфигурации (ибо errata впечатляет). Глобальные регистры, регистры портов читаются/пишутся без проблем. Сам свитч работает. Однако при попытке прочитать что-либо (писать пока не пробовал) посредством MDIO Manageable Device (MMD) Registers (Indirect), по методу из даташита (раздел 5.4 стр. 168) читаю из регистра PHY MMD Data Register то, что только что в него записал (а именно Register Address). Кто-нибудь сталкивался с подобной проблемой?
  6. Доброго дня! Кто подскажет, как правильно это сделать? Дело в том, что корпус разъёма будет на корпусе устройства, который будет, в свою очередь, заземлён. В схеме помимо прочего, присутствует Ethernet, у которого экран разъёма соединён (в соответствии с референс - дизайном) с корпусом через конденсатор. Опять же USB тоже присутствует со своим соединением через параллельные резистор и конденсатор. Как правильно "приземлить" HDMI? В доступных мне референсах везде корпус HDMI сидит напрямую на сигнальной земле, но что-то мучают меня сомнения...
  7. Интерфейс QVGA 2.2 TFT SPI 320x240

    Цитата(Iptash @ Jan 29 2016, 14:57) Здравствуйте все. Есть данное устройство в наличии. Может есть у кого готовый интерфейс? Если не жалко и есть возможность поделитесь пожалуйста. У него контроллер ILI9341. Добрый день! посмотрите вот тут: ILI9341
  8. STM32F407 + камера OV2640

    Цитата(Влад Р. @ Dec 11 2015, 20:59) А можно только настройки DMA? Основной вопрос: какой установливать размер буфера? Вроде больше 65535 нельзя, а нужно. Добрый день! Вот: CODE /* DCMI configuration *******************************************************/ DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot;//DCMI_CaptureMode_Continuous //DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous; DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;//DCMI_SynchroMode_Hardware DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;//DCMI_PCKPolarity_Falling DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low; //DCMI_VSPolarity_High DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low; //DCMI_HSPolarity_High DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;//DCMI_CaptureRate_All_Frame DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b; DCMI_Init(&DCMI_InitStructure); DCMI_JPEGCmd(ENABLE); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* DCMI Interrupts config ***************************************************/ DCMI_ITConfig(DCMI_IT_FRAME, ENABLE); /* Configures the DMA2 to transfer Data from DCMI to the memory ****************/ /* Enable DMA2 clock */ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); /* DMA2 Stream1 Configuration */ DMA_DeInit(DMA2_Stream1); DMA_InitStructure.DMA_Channel = DMA_Channel_1; DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS; DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)Jbuff; DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; DMA_InitStructure.DMA_BufferSize = 1024*8; DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(DMA2_Stream1, &DMA_InitStructure);
  9. STM32F407 + камера OV2640

    Цитата(Влад Р. @ Dec 11 2015, 16:02) Спасибо, сейчас посмотрю. А в чем была проблема в получении бОльших разрешений? Не могли бы Вы скинуть еще код снятия кадра? Проблемы не было, как не было и изображения :-) При попытке установить разрешение больше чем 1024х768 просто не отдаёт камера ничего. Правда, я работал только с режимом jpeg, возможно в RAW получится, но тут уже будут проблемы со скоростью перелопачивания потока, меня снапшоты мало интересовали. Получение кадра несложно: -настраиваем DCMI для работы с DMA; -запускаем получение снапшота; Как это сделано можно посмотреть в примерах от ST, мне из проекта тяжело сейчас вытянуть только эту часть.
  10. STM32F407 + камера OV2640

    Цитата(Влад Р. @ Dec 9 2015, 17:43) Здравствуйте! Использую контроллер STM32F407, захват картинки по DCMI. Пытаюсь настроить камеру в разрешение 640х480. Кто-нибудь может поделится настройками камеры? Добрый день! Вот: [attachment=97448:camera.zip] , пробуйте. У меня контроллер STM32F427 с внешней оперативкой. Максимально, что удалось с OV2640 получить, это 800х600 jpeg потоком и 1072х768 снапшот.
  11. STM32F429+DCMI

    Цитата(gazpar @ Nov 6 2015, 07:56) Здравствуйте. Подключаю камеру OV9655 по интерфейсу DCMI к STM32F429(сделали собственную печатную плату). Не получается захватить картинку. Вопрос,собственно, в описании темы. Какие должны быть уровни у сигналов HSYNC и VSYNC? PS: На осциллографе HSYNC(высокий уровень 3В, частота 7.2кГц ), VSYNC(высокий уровень 0.7В, частота 30 Гц). Это нормально? Добрый день! Нет, не нормально. Уровни должны быть в пределах логических для выбранного напряжения питания.
  12. Цитата(Fat Robot @ Sep 8 2015, 16:15) Стандарту 20 лет как-никак. Так что особой прожорливости ожидать не стоит. Я думаю, что в 4-6 mips вы уложитесь при аккуратной реализации. Референсные исходники и тестовые векторы есть на сайте ITU. Ваша задача: - выбросить из кодера все, что не относится к VAD. - заменить компилируемую библиотеку операций с фикс. точкой на "родные" операции и функции вашего целевого процессора. Спасибо, исходники смотрю уже, попробую, что получится.
  13. Цитата(Fat Robot @ Sep 8 2015, 15:05) Может взять готовый? Например из G.729 annex B. Там, я помню, был какой-то навороченный перечень условий для срабатывания. Слабо себе представляю, как его построить самостоятельно. Да уже подумывал об этом. А насколько он прожорлив, сколько процессорного времени ему надо, памяти, есть информация?
  14. Добрый день! Есть проблема с реализацией VAD (Voice Activity Detection). Пытаюсь реализовать на stm32f4xx; входной поток имеет умеренные параметры: 8000 Гц частота дискретизации/ 16 бит /моно (обычный не сжатый PCM). Сам сигнал имеет ограничение по полосе 0 - 4000 Гц (речь), спектр реального сигнала смотрел в Audacity. При применении наиболее распространённых критериев ZCD (zero crossing detector) и STE (short time energy) получается много (недопустимо) ложных срабатываний. Сработку вызывает, например, дыхание в микрофон, шум ветра. Кроме того, критерий ZCD довольно слабо отражает наличие/отсутствие речи. Как обрабатываю: поток принимается в буфер на 512 сэмплов (буферов несколько), режется на фреймы по 8 мс (64 сэмпла, впрочем пробовал и по 16 мс -128 сэмплов, результаты очень мало отличаются), затем считаю количество пересечений нуля и энергию. Пробовал с прямоугольным окном и окном Хэммминга, разница не очень ощутима. Вопрос собственно в чём - какой ещё способ (критерий) применить для VAD, для улучшения распознаваемости речи/паузы? Сигнал сам по себе не зашумлён, SNR больше 20 дБ. Начитался по этой теме уже довольно много, смущает несходимость теории в статьях с получаемым результатом. Кроме того есть непонятка с выбором фреймов - неперекрывающиеся или перекрывающиеся на полфрейма, что лучше? Вычислительных ресурсов вроде бы хватает, могу безболезненно выделить до 15% процессорного времени контроллера (168 МГц).
  15. Цитата(MikleV @ Jun 9 2015, 11:42) Разобрались со щелчками? В линейном кодировании насколько я помню ничего не надо вставлять. Из файла или буфера откусываете фреймы определенной длины и вставляете их в payload. Да, всё пошло, именно так. С толку сбивал Wireshark, он упорно пытается декодировать RTP пэйлоад по RFC, даже когда нет сжатия. В общем в этом случае надо, как Вы говорите, просто после RTP заголовка кусочек аудио данных вставлять и всё идет как надо, без щелчков.