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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> I2S Slave Прием - хелп!, Глючит
Allregia
сообщение Mar 9 2013, 17:13
Сообщение #16


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



В общем, сделал я и передачу и прием по DMA. Процессор посли инициализации вооще ничего не делает (while(1)wink.gif, кроме прерывания от системного таймера.
На 48 и 96 - все идеально, 192 - не работает, постоянная ошибка синхронизации.
Я уже в шоке - у меня идеи кончилисьsad.gif
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 9 2013, 19:28
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Allregia @ Mar 9 2013, 21:13) *
На 48 и 96 - все идеально, 192 - не работает, постоянная ошибка синхронизации.
Я уже в шоке - у меня идеи кончилисьsad.gif

Ну, может, оно и не умеет на 192 в слейве работать? В даташите до сих пор стоят умилительные TBD вместо таймингов.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Mar 9 2013, 22:46
Сообщение #18


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(aaarrr @ Mar 9 2013, 21:28) *
Ну, может, оно и не умеет на 192 в слейве работать? В даташите до сих пор стоят умилительные TBD вместо таймингов.


Может и не умеет, это весьма печально, потому что тогда у меня сильно ограничиться область применения устройства.
В даташите много чего непонятно, например почему в делителе частоты i2s нельзя ставить ни 0 ни 1, только начиная с 2. Если почему нельзя 0 понятно, то почему нельзя 1 - нет.
Кстати, хотья они пишут что нельзя, но с 1-й там оно тоже на 96К прекрасно работает.

Тайминги есть в даташите на F2, и я не думаю что у F4 этот блок чем-то отличается. Да и по логике - представляя немножко как оно внутри устроено, работа на 192 не должна чем-то отличаться от работы на 96, это еще не те частоты, где может что-то повлиять на работу обычного сдвигового регистра и его обвязки.

Но может я что-то упускаю, и в программе есть баг? Что раньше надо - разрешать DMA или разрешать I2S? Я, правда, пробовал и так и так, разницу не заметил. Или может флажек какой-то надо срасывать? Сама передачи и прием идут совершенно устойчиво - если принимает неправильно, то оно "неправильно" всегда по одинаковому, т.е. конкретно переданная константа принимается неправильным значением, но таким-же константным. Сбоев в процессе передачи-приема нет, проблем только в начальной синхронизации приемника с LRCLK.

Может это вообще аппратная проблема, и надо на шину попробовать 10-20пф конденсаторов навешать?
Go to the top of the page
 
+Quote Post
Allregia
сообщение Mar 10 2013, 14:11
Сообщение #19


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Только что звонил приятель, который параллельно со мной занимается своим проектом с i2s на F4.
У него та-же проблема с 1796/192, но сейчас он рассказал что случайно залил программу с одной тестовой платы в другую (на одной клок I2s 24мгц, на другой 49) - оказалось оно прекрасно работает на 384кгц, хотя это полный Out Of Spec, еще и делитель =1, что в даташите написано "forbidden" (я тоже замечал, что на 192 с делителем=1 мастер-передатчик работает прекрасно, а в слейв-приемнике ни внешний клок ни делитель не участвуют).

Передача вообще прекрасная, прием - примерно 5% сбоев синхронизации, при том что на 192 и у него и у меня примерно 95% сбоев!
Go to the top of the page
 
+Quote Post
Uuftc
сообщение Mar 12 2013, 01:46
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 3-10-04
Из: Кукуево-Дальнее
Пользователь №: 767



Цитата(Allregia @ Mar 10 2013, 02:46) *
В даташите много чего непонятно, например почему в делителе частоты i2s нельзя ставить ни 0 ни 1, только начиная с 2. Если почему нельзя 0 понятно, то почему нельзя 1 - нет.
Кстати, хотья они пишут что нельзя, но с 1-й там оно тоже на 96К прекрасно работает.

Там начинаются странности с DIV 1 и ODD 1
Вообще впечатление такое, что в доке просто забили описывать все "странности" I2S, коих у STM32F куча.
Цитата(Allregia @ Mar 10 2013, 02:46) *
Сама передачи и прием идут совершенно устойчиво - если принимает неправильно, то оно "неправильно" всегда по одинаковому, т.е. конкретно переданная константа принимается неправильным значением, но таким-же константным. Сбоев в процессе передачи-приема нет, проблем только в начальной синхронизации приемника с LRCLK.

В errata на stm32f4 было нечто похожее
Go to the top of the page
 
+Quote Post
Allregia
сообщение Mar 12 2013, 08:53
Сообщение #21


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

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(Uuftc @ Mar 12 2013, 03:46) *
Там начинаются странности с DIV 1 и ODD 1


Самое интересное, что при DIV=1 ODD=0 все прекрасно работает, даже с разгонгом по частоте.
Почему они запрещают DIV=1 непонятно.

Цитата
Вообще впечатление такое, что в доке просто забили описывать все "странности" I2S, коих у STM32F куча.

В errata на stm32f4 было нечто похожее


В Эррате написано что перед инициализацией и разрешением работы в слейва надодождаться определенного уровня на вордклоке. Я это делаю.

P.S. В эррате на F2 было еще веселее, из нее ясно видно что в них I2S-Slave в принципе нерабочий. В F4 подправили, но не до конца.

P.S. Интересно - каку. макимальную частоты можно подать на вход внешнего клока? 49мгц переваривает отлично, переварит ли 98? (у меня нечем пока проверить).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 15:19
Рейтинг@Mail.ru


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