Jump to content

    

nicks80

Участник
  • Content Count

    93
  • Joined

  • Last visited

Everything posted by nicks80


  1. Я вообще не понимаю зачем такие платы еще и покупать. ведь все ровно разводить под нужную задачу. я как-то купил так и валялась всегда разводил заказывал.
  2. I2S full duplex dma

    Что только не предпринимал оказывалось костылями. В итоге пожертвовал процессорным временем и сделал на 2х таймерах с прерыванием. работает как часы.
  3. I2S full duplex dma

    Если период даже при условии что где-то прибавилось и столько же убавилось равен. То рассинхронизации не будет на следующей порции данных. Я сейчас уменьшил буфер до 64 отсчетов. сделал прерывание с наивысшим приоритетом. и таймером до изменения бита могу отловить. Другой вариант это сравнивать встроенной ацепешкой данные на входе и выходе. Странно почему такой чуствительный этот тракт. входы выходе сделаны через резисторы с диодами и все ровно сбоит время от времени. на столе сутками стоит и все ок. через пару дней надо 3 контроллера времени мало. Если период даже при условии что где-то прибавилось и столько же убавилось равен. То рассинхронизации не будет на следующей порции данных. Я сейчас уменьшил буфер до 64 отсчетов. сделал прерывание с наивысшим приоритетом. и таймером до изменения бита могу отловить. Другой вариант это сравнивать встроенной ацепешкой данные на входе и выходе. Странно почему такой чуствительный этот тракт. входы выходе сделаны через резисторы с диодами и все ровно сбоит время от времени. на столе сутками стоит и все ок. через пару дней надо 3 контроллера времени мало. резистора нет. планирую от мастера поставит RC фильтр к слейву.
  4. I2S full duplex dma

    да конфигурирую пинами. я пробовал математически сдвиг отловить не по шуму. думал даже в сигнал примешивать высокочастотный и смотреть гармоники так как у меня там ффт крутится. но все отлавливается еще проще как выяснилось. Я включил таймер. и смотрю количество тиков в периоде между заполнениями буферов. Это значение меняется +-1. А при сбое прыгает до 20-30 процентов а то и более. отлавливается все четко. Видать клоки проскакивают. Но странно ведь при переходе WS должны биты опять синхронизироватся. Наверно связка DMA и I2S это не отслеживает.
  5. I2S full duplex dma

    1й вариант отпадает т.к. непонятно как помеха поведет себя по отношению к этим двум ногам. понятно что процессор выдает клоки нормальные. наверно здесь лучше таймер завести по перепаду WS и сравнивать допустим через 1024 отсчета границы сигнала WS. схема включения стандартная нет, все одним I2S2 принимается и передается. /// Peripheral DMA init hdma_i2s2_ext_rx.Instance = DMA1_Stream3; hdma_i2s2_ext_rx.Init.Channel = DMA_CHANNEL_3; hdma_i2s2_ext_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; hdma_i2s2_ext_rx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_i2s2_ext_rx.Init.MemInc = DMA_MINC_ENABLE; hdma_i2s2_ext_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_i2s2_ext_rx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_i2s2_ext_rx.Init.Mode = DMA_CIRCULAR; hdma_i2s2_ext_rx.Init.Priority = DMA_PRIORITY_HIGH; hdma_i2s2_ext_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;//ENABLE; hdma_i2s2_ext_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_HALFFULL; hdma_i2s2_ext_rx.Init.MemBurst = DMA_MBURST_SINGLE; hdma_i2s2_ext_rx.Init.PeriphBurst = DMA_PBURST_SINGLE; HAL_DMA_Init(&hdma_i2s2_ext_rx); __HAL_LINKDMA(hi2s,hdmarx,hdma_i2s2_ext_rx); hdma_i2s2_ext_tx.Instance = DMA1_Stream4; hdma_i2s2_ext_tx.Init.Channel = DMA_CHANNEL_0; hdma_i2s2_ext_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; hdma_i2s2_ext_tx.Init.PeriphInc = DMA_PINC_DISABLE; hdma_i2s2_ext_tx.Init.MemInc = DMA_MINC_ENABLE; hdma_i2s2_ext_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; hdma_i2s2_ext_tx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; hdma_i2s2_ext_tx.Init.Mode = DMA_CIRCULAR; hdma_i2s2_ext_tx.Init.Priority = DMA_PRIORITY_HIGH; hdma_i2s2_ext_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;//ENABLE; hdma_i2s2_ext_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_HALFFULL; hdma_i2s2_ext_tx.Init.MemBurst = DMA_MBURST_SINGLE; hdma_i2s2_ext_tx.Init.PeriphBurst = DMA_PBURST_SINGLE; HAL_DMA_Init(&hdma_i2s2_ext_tx); __HAL_LINKDMA(hi2s,hdmatx,hdma_i2s2_ext_tx); ............. hi2s2.Instance = SPI2; hi2s2.Init.Mode = I2S_MODE_MASTER_TX; hi2s2.Init.Standard = I2S_STANDARD_PHILIPS; hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;//I2S_DATAFORMAT_16B; hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE; hi2s2.Init.AudioFreq = g_nI2SFreq[nSR]; hi2s2.Init.CPOL = I2S_CPOL_LOW; hi2s2.Init.ClockSource = I2S_CLOCK_PLL; hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_ENABLE; RCC_PeriphCLKInitTypeDef PeriphClkInitStruct; PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_I2S; PeriphClkInitStruct.PLLI2S.PLLI2SN = g_nI2SPLLN[nSR]; PeriphClkInitStruct.PLLI2S.PLLI2SR = g_nI2SPLLR[nSR]; HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct); HAL_I2S_Init(&hi2s2); HAL_I2SEx_TransmitReceive_DMA(&hi2s2,(unsigned short*)i2s2_DelayBuf,(unsigned short*)i2s2_DelayBuf,(nDelay* ( 1<<nFFT ))*I2S2_DELAY_BUFFCHANNELS); MX_TIM7_Init(g_nI2S_SR[nSR],1<<nFFT); g_nI2S2_nFFT = nFFT; g_nI2S2_DelayBufCmpl = 0; g_nI2S2_nSR = nSR; я наверно совсем заблудился. Если мастер процессор и он выдает сигналы WS. то получается кодек неверные данные выдает я же его тактирую.
  6. I2S full duplex dma

    Передача сбиваться не может в кодеке по перепадам WS производится сброс счетчика битов. сбивается именно прием. ожидал что будет присутствовать постоянная составляющая в сигнале принимаемом но как оказалось сдвиг битов не изменяет ее.
  7. I2S full duplex dma

    У меня контроллеры работают круглогодично в шкафу где куча частотников по десяткам киловатт. кодек сбивается и это факт. может думаю кондер с резистором повесить на сигнальных данных. а вообще все входы защищены и сбивается именно от помех. какой кодек не поставь сбивается именно в камне прием да и времени нет.
  8. I2S full duplex dma

    А можете подетальный или часть кода привести. а то я не понимаю как опрашивать в нужный момент на протяжении 16 бит.
  9. I2S full duplex dma

    .идея понятна но как на протяжении 16 бит отследить состояние ноги WS. у меня к томуже все через DMA. проблема серьезная с этим WS и рассинхронизацией. у меня длинна дорожки 20мм. и при прикосании даже проводником 10см происходит сбой. попробовал через постоянную составляющую сигнала тоже не прокатило.(хотя по идее должно сработать)
  10. I2S full duplex dma

    Проблема в следующем. Имеется кодек UDA1344 в связке с stm32f407vet6 Данные читаются по I2S из кодека в память и потом выдаются в кодек обратно по I2S с помощью DMA. Все работает как часы но на объекте раз в день или два. происходит сбой. результатом такого сбоя является сильный шум из кодека. Как я понял такой шум появляется если самому дотронутся до линии CK I2S. которая отвечает за очередность передачи битов. Печально что восстановления не происходит при переходе 1 в 0 или наоборот 0 в 1 линии WS(LR CH). То есть получается что данные так и идут перемешанными битами соответственно и програмно никак это не отследишь. Но оно и понятно если бит(помеха) лишний проскочил то все уже съехало а dma все шлет и шлет. какими средствами справляться хз.
  11. Есть два осцила LeCroy LC534M Tektronix TDS680B Какой взять? Работаю с импульсниками и RF 1ГГц. Желательно по делу.
  12. В последнее время всегда заказываю у них. Цены хорошие качество тоже. С китайцем разговариваю на Русском по скайпу. Очень хорошо знает наш язык. Сайт http://www.chinafastpcb.com Скайп andylru Доставка через Новосибирск. Expo Заказывал и алюминиевые и обычные платы. Заказов 10 делал на разные партии.
  13. STM32F103

    Когда с STM32F4 игрался то дергал ногу с частотой проца. те 2 раза ниже. А параметры отвечающие за частоту работы порта отвечали за фронт сигнала на пине (т.е. управляли током работы PIO).
  14. Надо начать на модели с обычным ПК, камерой и отладить (Отлаживать легче). А перенести это уже совсем другой менее итеративный процесс отладки.
  15. Geyer

    Параллельно резистором шунтируй 1мом.
  16. Необходимо доработать 500 пластиковых корпусов. высота крышки 27мм ширина 90мм длинна 65мм окна как на рисунке. по плате. Москва (московская область) Сразу цену давайте господа. несколько корпусов на подгонку. Прикрепленные изображения
  17. я делал так две катушки SDR0805 склеиваются и получается трансформатор копеечный в обратке оптрон а потом линейный.
  18. Точно и сразу зарплата этого программиста вырастает ). Задача всегда такая. Как сделать быстро, качественно, надежно, поддерживаемо и дешево. И ОПП впишется наверно в единичные случаи без MMU.
  19. Сейчас имею проект с W5100 и stm32 + SD с fatfs. Надо написать обновление прошивки по Ethernet. Код с рабочим изернетом занимает 12килобайт + 30байт рам. Как думаю делать. Загрузчик (1 подпрограмма) при команде обновления по изернету принимает прошивку и шьет ее допустим с адресса на 20 кило больше чем основная программа. При перезагрузке(1 подпрограмма) проверяет crc осноновной прошивки и если совпадает то запускает программу по адресу на 20 кило больше. Еще как вариант. написать 1 функцию прошивальщика и все переменные для работы с изернетом будут в стэке этой функции. Загрузит ее в рам. и запустить. а потом как в 1м варианте. вот еще http://we.easyelectronics.ru/STM32/stm32-i...h-programm.html
  20. Сам себе отвечаю. Подключил по SPI к AVR. MSB режим. STATIC режим. sysclk = 6мгц. sysclk/256 = fdecret SPI на 3мгц. Завелась на ура. По моему не убиваемая и не глючная мс.
  21. Уважаемые я некогда с шиной I2S дела не имел. Но возникла задача подцепить кодек в режиме full-duplex. Судя по описанию его можно подсоединить на обычный SPI. Я правильно понимаю что в этом кодеке мне надо задать статический режим работы, задать клоки и читать и записывать данные по SPI? UDA1345TS.pdf
  22. Уважаемые в даташите на странице 26. OSCCAL – Oscillator Calibration Register указано что если в регистр OSCCAK записать значение 0x7F То можно запустить проц на частоте 19,2Mhz(9.6*200%). Я правильно понял? И еще. Можно ли скачком откалибровать с перезапуском проца? Там указано про макс изменение частоты на 2% это я так понимаю без сброса.
  23. вопрос другой. смысл может быть разный
  24. Имеется передатчик на MAX1472 (ASK) и приёмник SI4311 (FSK). Уже закуплены. Возможно реализовать передачу данных? При разном типе модуляции.