реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> I2S full duplex dma, Сбой в режиме DMA
nicks80
сообщение Sep 11 2016, 18:04
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 18-10-07
Пользователь №: 31 485



Цитата(Genadi Zawidowski @ Sep 11 2016, 20:06) *
Судя по схеме, кодек в режиме конфигурирования пинами стоит.

да конфигурирую пинами.
я пробовал математически сдвиг отловить не по шуму. думал даже в сигнал примешивать высокочастотный и смотреть гармоники так как у меня там ффт крутится. но все отлавливается еще проще как выяснилось.
Я включил таймер. и смотрю количество тиков в периоде между заполнениями буферов. Это значение меняется +-1. А при сбое прыгает до 20-30 процентов а то и более. отлавливается все четко.
Видать клоки проскакивают. Но странно ведь при переходе WS должны биты опять синхронизироватся. Наверно связка DMA и I2S это не отслеживает.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 12 2016, 03:57
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(nicks80 @ Sep 12 2016, 00:04) *
но все отлавливается еще проще как выяснилось.
Я включил таймер. и смотрю количество тиков в периоде между заполнениями буферов. Это значение меняется +-1. А при сбое прыгает до 20-30 процентов а то и более. отлавливается все четко.
Видать клоки проскакивают. Но странно ведь при переходе WS должны биты опять синхронизироватся. Наверно связка DMA и I2S это не отслеживает.

Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите.
И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить.
Вобщем - так ничего у Вас и не отлавливается...
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Sep 12 2016, 07:32
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(nicks80 @ Sep 11 2016, 22:04) *
Но странно ведь при переходе WS должны биты опять синхронизироватся.


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

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

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

Кстати, у вас на линии WS резистор есть последовательный?
Go to the top of the page
 
+Quote Post
nicks80
сообщение Sep 12 2016, 12:06
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 18-10-07
Пользователь №: 31 485



Цитата(jcxz @ Sep 12 2016, 07:57) *
Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите.
И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить.
Вобщем - так ничего у Вас и не отлавливается...

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


Цитата(jcxz @ Sep 12 2016, 07:57) *
Кол-во тиков должно быть +-0, а если у Вас и при нормальной работе +-1, то и при сбое так же может быть. И тогда ничего не отловите.
И испытывать надо не пальцем, а с генератора импульсы подавать. Чтобы какой-то вменяемый и повторяемый результат получить.
Вобщем - так ничего у Вас и не отлавливается...

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


Цитата(_4afc_ @ Sep 12 2016, 11:32) *
Не должны - а хотелось бы. Факт автоматической байтовой ресинхронизации с каждым WS описан в даташите?
Если - нет, то после синхронизации по первому WS - потом просто считаются такты, и на WS уже не смотрят.

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

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

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

резистора нет. планирую от мастера поставит RC фильтр к слейву.
Go to the top of the page
 
+Quote Post
nicks80
сообщение Sep 15 2016, 20:23
Сообщение #20


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 18-10-07
Пользователь №: 31 485



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

Сообщение отредактировал nicks80 - Sep 15 2016, 20:27
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01405 секунд с 7
ELECTRONIX ©2004-2016