Jump to content

    

ksv198

Участник
  • Content Count

    195
  • Joined

  • Last visited

Everything posted by ksv198


  1. Доброго вечера! Как и ожидалось, народная микросхема MС34118. Проблема в том, что если выход с нее (он же вход) попробовать оцифровать - ничего хорошего не получится, потому как человеческое ухо и АЦП весьма разные сущности. Если хотите цифровой звук, придётся делать всё по другому. Простой путь - одноплатник с Линуксом прямо в панель на входной двери и много секса с настройкой программного AEC. Сложный путь (но более подходящий для серийного производства, хотя и дорогой) использование специализированных решений. Посмотрите у Microsemi (ныне купленного Microchip) их решения для уличных камер.
  2. Добрый день! Аналоговая часть домофона сделана на "народной" MC34118 ? Да и вообще о системе в целом немного подробнее опишите. Цифровая или аналоговая или гибрид того и другого? Задача тривиальна,если типовой аналоговый домофон - надо следовать указаниям в документации по настройке. Если что-то своё сделали - то сложнее.
  3. Добрый день! В аттаче файлы с функциями доступа к регистрам по SPI. У меня управляющий контроллер STM32F051, инициализация модуля SPI для него, при тактовой частоте 25 МГц. Удачи! KSZ9897_MMD.zip
  4. Добрый день! Прошу прощения, не сразу отвечаю, может быть неактуально уже? Для Indirect регистров написал свои подпрограмки, если нужно выложу. Там довольно не очевидные вещи, плохо (или совсем никак) описанные в даташите.
  5. LwIP link up/down

    Вот как раз у PHY обычно есть прерывания для события изменения состояния линка (например у KSZ8091 это регистр 0x1B). Заводите выход прерывания от PHY на ногу контроллера, ловите прерыание, шлёте семафор и отрабатываете callback функцию LwIP.
  6. Да, в файле lwipopts.h должно быть определено #define DEFAULT_RAW_RECVMBOX_SIZE 3 //need for RAW sockets (например)
  7. Да, вот отсюда, например: http://download.savannah.nongnu.org/releases/lwip/
  8. Смотрите в: \lwip-х.х.х\contrib-х.х.х\apps\ping\ Там вполне рабочий пример пинговалки.
  9. Почти, wm-60 - это его предшественник. Очень хорошее впечатление оставил (кроме цены).
  10. Попробую угадать - микрофоны нонейм китай по 3 рубля кучка? Другого и не ждите в таком случае. Вы упоминали SSM2167 - она немного улучшит ситуацию, но не кардинально. Кардинально поможет переход на цифровые микрофоны или на качественные аналоговые (например от Panasonic очень хорошие впечатления были по повторяемости). Порядок цен в районе 200 - 300 руб. за микрофон.
  11. Добрый день! Если использование TCP не обязательно, то на UDP неблокирующий приём сделать относительно легко. Физический дисконнект отслеживается через состояние PHY. Можно использовать прерывание (смотрите описание регистров Вашей микросхемы физического уровня). Ресурсы памяти быстро закончатся при таком подходе.
  12. Предлагаю услуги по разработке различных электронных устройств.Схемотехника, трассировка, написание микропрограмм. ИП, оформление всех документов, безнал. Некоторые примеры устройств, разработанных мной: Устройства Почта для связи: ksv198@rambler.ru
  13. Написал в личку, посмотрите. Опыт подобных разработок есть.
  14. Вот, в приложении рабочая конфигурация для варианта STM32F767 и MT48LC32M16A2-75. Частота 216 МГц (кварц 25 МГц), память 108 МГц. Если для копирования массивов в/из SDRAM будет использована память DTCM, то MPU можно не трогать. Tmp.zip
  15. Ошибаешься, тёзка :-) А если на линии будет цифра? Правда это совсем другая инфраструктура (существенно дороже, потому как ЛВС вместо двухпроводки).
  16. Доброго дня! А Вы уверены, что эхо именно линейное, а не акустическое? Проверить легко - отключите микрофон, если эхо исчезло, то это акустическое, если нет - линейное. Если действительно линейное, то возможен вариант решения проблемы с использованием ML7037-003. Или кардинально - переход на цифру, так как уже используется.
  17. Речь идёт не об интерфейсе 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 как-то неправильно, особенно после внимательного прочтения.
  18. Доброго всем дня! Есть устройство, в составе которого микрочиповский свитч KSZ9897S. К свитчу по SPI подключен микроконтроллер, для начальной конфигурации (ибо errata впечатляет). Глобальные регистры, регистры портов читаются/пишутся без проблем. Сам свитч работает. Однако при попытке прочитать что-либо (писать пока не пробовал) посредством MDIO Manageable Device (MMD) Registers (Indirect), по методу из даташита (раздел 5.4 стр. 168) читаю из регистра PHY MMD Data Register то, что только что в него записал (а именно Register Address). Кто-нибудь сталкивался с подобной проблемой?
  19. Доброго дня! Кто подскажет, как правильно это сделать? Дело в том, что корпус разъёма будет на корпусе устройства, который будет, в свою очередь, заземлён. В схеме помимо прочего, присутствует Ethernet, у которого экран разъёма соединён (в соответствии с референс - дизайном) с корпусом через конденсатор. Опять же USB тоже присутствует со своим соединением через параллельные резистор и конденсатор. Как правильно "приземлить" HDMI? В доступных мне референсах везде корпус HDMI сидит напрямую на сигнальной земле, но что-то мучают меня сомнения...
  20. Добрый день! посмотрите вот тут: ILI9341
  21. Добрый день! Вот: /* 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);
  22. Проблемы не было, как не было и изображения :-) При попытке установить разрешение больше чем 1024х768 просто не отдаёт камера ничего. Правда, я работал только с режимом jpeg, возможно в RAW получится, но тут уже будут проблемы со скоростью перелопачивания потока, меня снапшоты мало интересовали. Получение кадра несложно: -настраиваем DCMI для работы с DMA; -запускаем получение снапшота; Как это сделано можно посмотреть в примерах от ST, мне из проекта тяжело сейчас вытянуть только эту часть.
  23. Добрый день! Вот: camera.zip , пробуйте. У меня контроллер STM32F427 с внешней оперативкой. Максимально, что удалось с OV2640 получить, это 800х600 jpeg потоком и 1072х768 снапшот.
  24. STM32F429+DCMI

    Добрый день! Нет, не нормально. Уровни должны быть в пределах логических для выбранного напряжения питания.
  25. Спасибо, исходники смотрю уже, попробую, что получится.