Jump to content

    

ksv198

Участник
  • Content Count

    179
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ksv198

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

Контакты

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

Информация

  • Город
    Ставрополь
  1. Речь идёт не об интерфейсе 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 как-то неправильно, особенно после внимательного прочтения.
  2. Доброго всем дня! Есть устройство, в составе которого микрочиповский свитч KSZ9897S. К свитчу по SPI подключен микроконтроллер, для начальной конфигурации (ибо errata впечатляет). Глобальные регистры, регистры портов читаются/пишутся без проблем. Сам свитч работает. Однако при попытке прочитать что-либо (писать пока не пробовал) посредством MDIO Manageable Device (MMD) Registers (Indirect), по методу из даташита (раздел 5.4 стр. 168) читаю из регистра PHY MMD Data Register то, что только что в него записал (а именно Register Address). Кто-нибудь сталкивался с подобной проблемой?
  3. Доброго дня! Кто подскажет, как правильно это сделать? Дело в том, что корпус разъёма будет на корпусе устройства, который будет, в свою очередь, заземлён. В схеме помимо прочего, присутствует Ethernet, у которого экран разъёма соединён (в соответствии с референс - дизайном) с корпусом через конденсатор. Опять же USB тоже присутствует со своим соединением через параллельные резистор и конденсатор. Как правильно "приземлить" HDMI? В доступных мне референсах везде корпус HDMI сидит напрямую на сигнальной земле, но что-то мучают меня сомнения...
  4. Интерфейс QVGA 2.2 TFT SPI 320x240

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

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

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

    Цитата(gazpar @ Nov 6 2015, 07:56) Здравствуйте. Подключаю камеру OV9655 по интерфейсу DCMI к STM32F429(сделали собственную печатную плату). Не получается захватить картинку. Вопрос,собственно, в описании темы. Какие должны быть уровни у сигналов HSYNC и VSYNC? PS: На осциллографе HSYNC(высокий уровень 3В, частота 7.2кГц ), VSYNC(высокий уровень 0.7В, частота 30 Гц). Это нормально? Добрый день! Нет, не нормально. Уровни должны быть в пределах логических для выбранного напряжения питания.
  9. Цитата(Fat Robot @ Sep 8 2015, 16:15) Стандарту 20 лет как-никак. Так что особой прожорливости ожидать не стоит. Я думаю, что в 4-6 mips вы уложитесь при аккуратной реализации. Референсные исходники и тестовые векторы есть на сайте ITU. Ваша задача: - выбросить из кодера все, что не относится к VAD. - заменить компилируемую библиотеку операций с фикс. точкой на "родные" операции и функции вашего целевого процессора. Спасибо, исходники смотрю уже, попробую, что получится.
  10. Цитата(Fat Robot @ Sep 8 2015, 15:05) Может взять готовый? Например из G.729 annex B. Там, я помню, был какой-то навороченный перечень условий для срабатывания. Слабо себе представляю, как его построить самостоятельно. Да уже подумывал об этом. А насколько он прожорлив, сколько процессорного времени ему надо, памяти, есть информация?
  11. Добрый день! Есть проблема с реализацией 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 МГц).
  12. Цитата(MikleV @ Jun 9 2015, 11:42) Разобрались со щелчками? В линейном кодировании насколько я помню ничего не надо вставлять. Из файла или буфера откусываете фреймы определенной длины и вставляете их в payload. Да, всё пошло, именно так. С толку сбивал Wireshark, он упорно пытается декодировать RTP пэйлоад по RFC, даже когда нет сжатия. В общем в этом случае надо, как Вы говорите, просто после RTP заголовка кусочек аудио данных вставлять и всё идет как надо, без щелчков.
  13. Доброго всем дня! Суть вопроса: пытаюсь разобраться как правильно передавать по сети пакеты RTP содержащие в себе аудио данные. Формат данных: PCM 8000 Hz 16 bit mono. Разобрался, что это payload type 11 (L16 linear PCM), но вот как по фэншую правильно сформировать RTP пакет не пойму. Вдумчивое чтение rfc2198 и других источников не помогает. Сейчас делаю так: после RTP заголовка вставляю байт BlockPT (тип 11 - 0x0b) со сброшенным в 0 старшим битом (primary block) и дальше непосредственно кусочек аудио данных. В таком виде VLC принимает поток и корректно его воспроизводит, я слышу то, что отправляю (использую осмысленный музыкальный фрагмент). Напрягает два момента: - при передаче пакетов, заполненных нулями слышу слабые щелчки; - при анализе пакетов Wireshark -ом сохранение потока в файл показывает, что щелчки эти происходят от того, что байт BlockPT тоже интерпретируется как аудио данные. Если кто знает, как правильно формировать для моего случая пакеты, пожалуйста, подскажите. P.S. rfc3551, rfc2586, rfc2198 и все причастные ответа не дали.
  14. Цитата(khomin @ Apr 12 2015, 17:58) Доброго времени суток. Собрал плату на Ksz8041, STM32F4 + LwIP. Подправил пример стека - "под себя". Столкнулся с тем, что через 100Мбитный хаб ничего не работает, а на прямую через сетевой switch все работает как должно. У PHY включен "Auto-Negotiation" внешней подтяжкой, пробовал так же программно, разницы нет. Link устанавливается, стек пакеты принимает (видно в буфере и по прерыванию Ethernet) и передает (заметна активность TXD0-1 CRS_DV), но wireshark ничего не видит. Увы не до конца понятен алгоритм с Auto-Negotiation, так же не ясно какой из регистров должен давать информацию (1,4 или 5) и нужно ли вручную конфигурировать PHY ? Кто сталкивался ..., отзовитесь пожалуйста ... пробовал вручную заполнять структуру ETH_InitStruct, ставил 10-100 Full-HalfDuplex, результата нет KSZ8041 не использовал, а вот KSZ8031 и KSZ8863 да, были проблемы с "Auto-Negotiation". Поборол так: - в структуре инициализации поставил "ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Disable;"; - в файле "stm32f4x7_eth.с" , в блоке условия проверки "if(ETH_InitStruct->ETH_AutoNegotiation != ETH_AutoNegotiation_Disable) { ....} else{.." поставил явно инициализацию физикса ETH_WritePHYRegister(PHYAddress, PHY_BCR, 0x2100); //FullDuplex 100M ETH_InitStruct->ETH_Speed = ETH_Speed_100M; ETH_InitStruct->ETH_Mode = ETH_Mode_FullDuplex; Значение PHY_BCR привёл для KSZ8031, у Вас может быть другое.
  15. Цитата(novartis @ Apr 13 2015, 12:23) Вот есть паблик камера rtsp://96.10.1.168/axis-media/media.amp?videocodec=jpg&resolution=640x480 Вот прям такой адрес ввожу в vlc и он мне показывает видео. В wireshark вижу только udp пакеты от камеры с mjpeg внутри. Сейчас нет возможности подцепиться, но дома когда мониторил трафик - я не видел там каких либо пакетов rtsp. Ну как же так, вот чего мой VLC в отладочной консоли пишет: Код Opening connection to 96.10.1.168, port 554... ...remote connection opened Sending request: OPTIONS rtsp://96.10.1.168/axis-media/media.amp?videocodec=jpg& resolution=640x480 RTSP/1.0 CSeq: 2 User-Agent: LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27) Received 143 new bytes of response data. Received a complete OPTIONS response: RTSP/1.0 200 OK CSeq: 2 Public: DESCRIBE, GET_PARAMETER, PAUSE, PLAY, SETUP, SET_PARAMETER, TEARDOWN Date: Wed, 26 Apr 2006 17:16:28 GMT Sending request: DESCRIBE rtsp://96.10.1.168/axis-media/media.amp?videocodec=jpg &resolution=640x480 RTSP/1.0 CSeq: 3 User-Agent: LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27) Accept: application/sdp Received 74 new bytes of response data. Received a complete DESCRIBE response: RTSP/1.0 400 Bad Request CSeq: 3 Date: Wed, 26 Apr 2006 17:16:28 GMT Opening connection to 96.10.1.168, port 80... ...remote connection opened Requesting RTSP-over-HTTP tunneling (on port 80) Sending request: GET /axis-media/media.amp?videocodec=jpg&resolution=640x480 HTT P/1.1 CSeq: 1 User-Agent: LibVLC/2.1.5 (LIVE555 Streaming Media v2014.05.27) Host: 96.10.1.168 x-sessioncookie: 9d11a52afc98d2bb30a948b Accept: application/x-rtsp-tunnelled Pragma: no-cache Cache-Control: no-cache После чего говорит, что не может открыть коннект, но это может быть из-за файерволов. Так что вполне себе эта камера по RTSP отвечает