Перейти к содержанию
    

Судя по схеме, кодек в режиме конфигурирования пинами стоит.

да конфигурирую пинами.

я пробовал математически сдвиг отловить не по шуму. думал даже в сигнал примешивать высокочастотный и смотреть гармоники так как у меня там ффт крутится. но все отлавливается еще проще как выяснилось.

Я включил таймер. и смотрю количество тиков в периоде между заполнениями буферов. Это значение меняется +-1. А при сбое прыгает до 20-30 процентов а то и более. отлавливается все четко.

Видать клоки проскакивают. Но странно ведь при переходе WS должны биты опять синхронизироватся. Наверно связка DMA и I2S это не отслеживает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

но все отлавливается еще проще как выяснилось.

Я включил таймер. и смотрю количество тиков в периоде между заполнениями буферов. Это значение меняется +-1. А при сбое прыгает до 20-30 процентов а то и более. отлавливается все четко.

Видать клоки проскакивают. Но странно ведь при переходе WS должны биты опять синхронизироватся. Наверно связка DMA и I2S это не отслеживает.

Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите.

И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить.

Вобщем - так ничего у Вас и не отлавливается...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но странно ведь при переходе WS должны биты опять синхронизироватся.

 

Не должны - а хотелось бы. Факт автоматической байтовой ресинхронизации с каждым WS описан в даташите?

Если - нет, то после синхронизации по первому WS - потом просто считаются такты, и на WS уже не смотрят.

 

Была такая же проблема у двух Atmel связанных по I2S - решил перейдя на USART.

 

Точно также в BF561 при приёме видеокадра - тупо считаются линии и точки. При сбое на тактовой - изображение съезжает и не исправляется с новым кадром. При этом никакие статусы не меняются. Единственный вариант - каждый кадр успевать инитить заново блок приёма видеоданных.

 

Кстати, у вас на линии WS резистор есть последовательный?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите.

И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить.

Вобщем - так ничего у Вас и не отлавливается...

Если период даже при условии что где-то прибавилось и столько же убавилось равен. То рассинхронизации не будет на следующей порции данных.

Я сейчас уменьшил буфер до 64 отсчетов. сделал прерывание с наивысшим приоритетом. и таймером до изменения бита могу отловить. Другой вариант это сравнивать встроенной ацепешкой данные на входе и выходе.

Странно почему такой чуствительный этот тракт. входы выходе сделаны через резисторы с диодами и все ровно сбоит время от времени. на столе сутками стоит и все ок. через пару дней надо 3 контроллера времени мало.

 

 

Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите.

И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить.

Вобщем - так ничего у Вас и не отлавливается...

Если период даже при условии что где-то прибавилось и столько же убавилось равен. То рассинхронизации не будет на следующей порции данных.

Я сейчас уменьшил буфер до 64 отсчетов. сделал прерывание с наивысшим приоритетом. и таймером до изменения бита могу отловить. Другой вариант это сравнивать встроенной ацепешкой данные на входе и выходе.

Странно почему такой чуствительный этот тракт. входы выходе сделаны через резисторы с диодами и все ровно сбоит время от времени. на столе сутками стоит и все ок. через пару дней надо 3 контроллера времени мало.

 

 

Не должны - а хотелось бы. Факт автоматической байтовой ресинхронизации с каждым WS описан в даташите?

Если - нет, то после синхронизации по первому WS - потом просто считаются такты, и на WS уже не смотрят.

 

Была такая же проблема у двух Atmel связанных по I2S - решил перейдя на USART.

 

Точно также в BF561 при приёме видеокадра - тупо считаются линии и точки. При сбое на тактовой - изображение съезжает и не исправляется с новым кадром. При этом никакие статусы не меняются. Единственный вариант - каждый кадр успевать инитить заново блок приёма видеоданных.

 

Кстати, у вас на линии WS резистор есть последовательный?

резистора нет. планирую от мастера поставит RC фильтр к слейву.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем nicks80

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...