nicks80 0 11 сентября, 2016 Опубликовано 11 сентября, 2016 · Жалоба Судя по схеме, кодек в режиме конфигурирования пинами стоит. да конфигурирую пинами. я пробовал математически сдвиг отловить не по шуму. думал даже в сигнал примешивать высокочастотный и смотреть гармоники так как у меня там ффт крутится. но все отлавливается еще проще как выяснилось. Я включил таймер. и смотрю количество тиков в периоде между заполнениями буферов. Это значение меняется +-1. А при сбое прыгает до 20-30 процентов а то и более. отлавливается все четко. Видать клоки проскакивают. Но странно ведь при переходе WS должны биты опять синхронизироватся. Наверно связка DMA и I2S это не отслеживает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 12 сентября, 2016 Опубликовано 12 сентября, 2016 · Жалоба но все отлавливается еще проще как выяснилось. Я включил таймер. и смотрю количество тиков в периоде между заполнениями буферов. Это значение меняется +-1. А при сбое прыгает до 20-30 процентов а то и более. отлавливается все четко. Видать клоки проскакивают. Но странно ведь при переходе WS должны биты опять синхронизироватся. Наверно связка DMA и I2S это не отслеживает. Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите. И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить. Вобщем - так ничего у Вас и не отлавливается... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 12 сентября, 2016 Опубликовано 12 сентября, 2016 · Жалоба Но странно ведь при переходе WS должны биты опять синхронизироватся. Не должны - а хотелось бы. Факт автоматической байтовой ресинхронизации с каждым WS описан в даташите? Если - нет, то после синхронизации по первому WS - потом просто считаются такты, и на WS уже не смотрят. Была такая же проблема у двух Atmel связанных по I2S - решил перейдя на USART. Точно также в BF561 при приёме видеокадра - тупо считаются линии и точки. При сбое на тактовой - изображение съезжает и не исправляется с новым кадром. При этом никакие статусы не меняются. Единственный вариант - каждый кадр успевать инитить заново блок приёма видеоданных. Кстати, у вас на линии WS резистор есть последовательный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nicks80 0 12 сентября, 2016 Опубликовано 12 сентября, 2016 · Жалоба Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите. И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить. Вобщем - так ничего у Вас и не отлавливается... Если период даже при условии что где-то прибавилось и столько же убавилось равен. То рассинхронизации не будет на следующей порции данных. Я сейчас уменьшил буфер до 64 отсчетов. сделал прерывание с наивысшим приоритетом. и таймером до изменения бита могу отловить. Другой вариант это сравнивать встроенной ацепешкой данные на входе и выходе. Странно почему такой чуствительный этот тракт. входы выходе сделаны через резисторы с диодами и все ровно сбоит время от времени. на столе сутками стоит и все ок. через пару дней надо 3 контроллера времени мало. Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите. И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить. Вобщем - так ничего у Вас и не отлавливается... Если период даже при условии что где-то прибавилось и столько же убавилось равен. То рассинхронизации не будет на следующей порции данных. Я сейчас уменьшил буфер до 64 отсчетов. сделал прерывание с наивысшим приоритетом. и таймером до изменения бита могу отловить. Другой вариант это сравнивать встроенной ацепешкой данные на входе и выходе. Странно почему такой чуствительный этот тракт. входы выходе сделаны через резисторы с диодами и все ровно сбоит время от времени. на столе сутками стоит и все ок. через пару дней надо 3 контроллера времени мало. Не должны - а хотелось бы. Факт автоматической байтовой ресинхронизации с каждым WS описан в даташите? Если - нет, то после синхронизации по первому WS - потом просто считаются такты, и на WS уже не смотрят. Была такая же проблема у двух Atmel связанных по I2S - решил перейдя на USART. Точно также в BF561 при приёме видеокадра - тупо считаются линии и точки. При сбое на тактовой - изображение съезжает и не исправляется с новым кадром. При этом никакие статусы не меняются. Единственный вариант - каждый кадр успевать инитить заново блок приёма видеоданных. Кстати, у вас на линии WS резистор есть последовательный? резистора нет. планирую от мастера поставит RC фильтр к слейву. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nicks80 0 15 сентября, 2016 Опубликовано 15 сентября, 2016 (изменено) · Жалоба Что только не предпринимал оказывалось костылями. В итоге пожертвовал процессорным временем и сделал на 2х таймерах с прерыванием. работает как часы. Изменено 15 сентября, 2016 пользователем nicks80 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться