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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> STM32F407 Непонятки с SAI
Tarbal
сообщение Nov 2 2015, 18:46
Сообщение #1


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Вроде как есть два I2S и 2 SAI и I2S и SAI это разные устройства. Мне надо 16 каналов PCM и SAI это позволяет. Но вот засада: читаю документацию и никак не могу найти к каким ножкам оно подключено. Это скорее всего не I2S ибо I2S имеет другие регистры причем одни и те же что и SPI. Кто-нибудь использовал SAI в STM32F407 или STM32F405?

Сообщение отредактировал Tarbal - Nov 2 2015, 18:47
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 2 2015, 18:55
Сообщение #2


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



В STM32F407/STM32F405 контроллера SAI нет. совсем.
http://www.st.com/st-web-ui/static/active/.../DM00037051.pdf
В 429, 446, 746 и вариациях.

Сообщение отредактировал Genadi Zawidowski - Nov 2 2015, 18:59
Go to the top of the page
 
+Quote Post
alag57
сообщение Nov 2 2015, 18:57
Сообщение #3


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

Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355



Цитата(Tarbal @ Nov 2 2015, 23:46) *
Вроде как есть два I2S и 2 SAI и I2S и SAI это разные устройства. Мне надо 16 каналов PCM и SAI это позволяет. Но вот засада: читаю документацию и никак не могу найти к каким ножкам оно подключено. Это скорее всего не I2S ибо I2S имеет другие регистры причем одни и те же что и SPI. Кто-нибудь использовал SAI в STM32F407 или STM32F405?

Serial audio interface (SAI) RM0090
914/1718 DocID018909 Rev 8
29 Serial audio interface (SAI)
This section applies to the STM32F42xxx and STM32F43xxx family.
перевод: SAI нет в 407.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 3 2015, 02:39
Сообщение #4


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Спасибо за подсказку. В Юзер Референс Мануал описано что есть. Вот я и ищу, а найти не могу. И STM32CubeMX ( http://www.st.com/web/catalog/tools/FM147/...42?sc=stm32cube ) тоже ничего не видит. А вот для указанных вами процессоров сразу показала.

Значит мой дискавери борд не годится для экспериментов.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 3 2015, 08:32
Сообщение #5


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Как раз в DM00037051.pdf даже слова такого нет...
платы с 429 даже раздавали бесплатно на многих мероприятиях.

Сообщение отредактировал Genadi Zawidowski - Nov 3 2015, 08:33
Go to the top of the page
 
+Quote Post
ig_z
сообщение Nov 3 2015, 13:34
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (Tarbal @ Nov 3 2015, 04:39) *
Значит мой дискавери борд не годится для экспериментов.

Слегка офтоп. Если у вас есть LPC с SGPIO модулем, то можно получить похожий функционал.
В сети бродит описание такого проекта.

Прикрепленные файлы
Прикрепленный файл  Pg22_27_IQV11N1_IQ__37.pdf ( 5.7 мегабайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 3 2015, 14:31
Сообщение #7


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(ig_z @ Nov 3 2015, 17:34) *
Слегка офтоп. Если у вас есть LPC с SGPIO модулем, то можно получить похожий функционал.
В сети бродит описание такого проекта.


Спасибо. В моем случае надо будет купить подходящий борд ибо LPC с SGPIO модулем у меня тоже нет sm.gif
Go to the top of the page
 
+Quote Post
alexandermas
сообщение Nov 4 2015, 10:42
Сообщение #8


Участник
*

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



sgpio в lpc полная порнография, хотя сами процы вполне ничего хоть и не без багов. что касается самого i2s я сам сейчас нахожусь в процессе спрыгивания с lpc4357 в пользу stm32f7xx. и только потому что несмог путью прикрутить плиску к 43хх, в которой как раз похожий многоканальный i2s и реализован. а вот в 32f7хх есть qspi с ddr обменом в обе стороны. sgpio в 43xx полусофтварный и если пользовать его то получается что часть мощности самого проца уходит на вывод данных
Go to the top of the page
 
+Quote Post
ig_z
сообщение Nov 4 2015, 14:25
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551



QUOTE (alexandermas @ Nov 4 2015, 12:42) *
sgpio в lpc полная порнография


Что значит "полная порнография"? Можно плиз подробнее и более техническими терминами обрисовать ситуацию.

QUOTE (alexandermas @ Nov 4 2015, 12:42) *
я сам сейчас нахожусь в процессе спрыгивания с lpc4357 в пользу stm32f7xx. и только потому что несмог путью прикрутить плиску к 43хх
в которой как раз похожий многоканальный i2s и реализован.


Что такое "похожий многоканальный i2s"? В LPC есть I2S и SGPIO. Судя по описанию, на последнем можно делать всевозможные серийные синхронные / асинхронные шины и заниматься ногодрыжеством. Для этого он и задумывался, и как любое универсальное решение обладает избыточностью. У меня руки до него еще не дошли, если у вас есть конкретная информация об отрицательных свойствах этого модуля, поделитесь информацией, это будет всем интересно

QUOTE (alexandermas @ Nov 4 2015, 12:42) *
sgpio в 43xx полусофтварный и если пользовать его то получается что часть мощности самого проца уходит на вывод данных

В чем заключается полусофтварность?
Ну и как бы для юсб аудио интерфейса особо то и заниматься нечем.
Например взять LPC17. Если бы DMA было бы поумнее ( что то типа 2D) или I2S модуль оптимальнее спроектирован, то весь аудио стрим для некоторых режимов мог бы передаваться без участия CPU.

Go to the top of the page
 
+Quote Post
alexandermas
сообщение Nov 4 2015, 17:02
Сообщение #10


Участник
*

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



Цитата(ig_z @ Nov 4 2015, 18:25) *
Что значит "полная порнография"? Можно плиз подробнее и более техническими терминами обрисовать ситуацию.



Что такое "похожий многоканальный i2s"? В LPC есть I2S и SGPIO. Судя по описанию, на последнем можно делать всевозможные серийные синхронные / асинхронные шины и заниматься ногодрыжеством. Для этого он и задумывался, и как любое универсальное решение обладает избыточностью. У меня руки до него еще не дошли, если у вас есть конкретная информация об отрицательных свойствах этого модуля, поделитесь информацией, это будет всем интересно


В чем заключается полусофтварность?
Ну и как бы для юсб аудио интерфейса особо то и заниматься нечем.
Например взять LPC17. Если бы DMA было бы поумнее ( что то типа 2D) или I2S модуль оптимальнее спроектирован, то весь аудио стрим для некоторых режимов мог бы передаваться без участия CPU.

Начну с конца.... Для юсб аудио, не спорю, заниматься действительно нечем, но вот когда распаковываешь .ape или многоканальный .flac то мегагерцы становятся совсем не лишними. полусофтварность заключается в том что приходится соотв. образом подготавливать буфера для вывода, лить их по дма без участия ядра тоже не выходит (приходится проверять опустошение) это про sgpio. что касается i2s лично мне для моего проекта 2 набортных i2s мало, да и заставить их синхронно работать я не представляю как. С дма (касается lpc43xx, у 17хх вроде все нормально) тоже аппаратный косяк - при работе со связанными списками наблюдается выпадение 1 семпла из каждых 2-3 блоков по 4090 семплов, (тоже не особо удобно, т.к. фреймы в lossless форматов обычно 4096 семплов или больше) при работе на набортный i2s. плюс ко всему если вы делаете действительно высококлассную аудио систему, напомню что сами порты вывода (те к которым посредством матриц подключается встроенная переферия) тактируются совсем не от того клока что сам i2s. поэтому имеем резкое увеличение джиттера как результат(проверено опытным путем). Далее в своих мытарствах решил уйти на плис, подумал что от вышеописаных трудностей уйду... Прицепил плис, на тот момент по spi, все вроде ничего, и играло лучше чем с набортного, но только на 2х каналах, для большего невытянул spi по скорости(максимум выжал 50м/бит). решил повесить плис на EMC а вот тут была действительно засада, изза встроенных неотключаемых буферов на шине emc (даже флаг гады сделали, но нерабочий) если писать по 1 адресу я еще как то мог, то вот последовательное чтение по 1 адресу стабатывало только 1 раз, на второй логика emc считала что данные не изменились и выдавала результат из буфера. сейчас в плис находится 8 однотипных контроллеров которые я могу по своему усмотрению конфигурировать и настраивать выводя некоторые каналы хоть по i2s в разных форматах, хоть по spdif. Обмен с камнем планирую сделать по qspi.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 7 2015, 17:20
Сообщение #11


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Кто-нибудь использовал SAI На STM32F429 или похожем?
Никак не могу получить выходную тактовую частоту в режиме мастера. Иметь подсказку в виде содержимого регистров было бы полезно.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 7 2015, 18:21
Сообщение #12


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



А какие регистры интересуют?
Вот тут https://188.134.5.254/browser/hfreceiver/tr...recodecs.c#L924 инициализация, имейте в виду - в описании SAI_xCR1_MCKDIV_0 и остальных у ST ошибка в значении (я использую исправленную версию).

Сообщение отредактировал Genadi Zawidowski - Nov 7 2015, 18:27
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 7 2015, 22:40
Сообщение #13


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Genadi Zawidowski @ Nov 7 2015, 21:21) *
А какие регистры интересуют?
Вот тут https://188.134.5.254/browser/hfreceiver/tr...recodecs.c#L924 инициализация, имейте в виду - в описании SAI_xCR1_MCKDIV_0 и остальных у ST ошибка в значении (я использую исправленную версию).

Спасибо посмотрю.
Меня интересуют регистры SAI. Просто значения.

Про ошибку не очень понял. Можно поподробнее пожалуйста?

Спасибо вам Генадий,
Нашел уже, что APB clock не разрешен для SAI, но пока не помогло. Буду искать дальше. Код у вас с любовью написан -- красиво.
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Nov 8 2015, 00:25
Сообщение #14


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Вот подробности:




Вот выдача:
Код
hardware_sai1_master_fullduplex_initialize: 2 SAI1 MCKDIV=14, ARMSAIMCLK=12288000, PLLI2S_FREQ_OUT=172032000
SAI1_Block_A->CR1:      007202E0
SAI1_Block_A->CR2:      00000000
SAI1_Block_A->FRCR:     00011F3F
SAI1_Block_A->SLOTR:    00030180
SAI1_Block_A->IMR:      00000000
SAI1_Block_A->SR:       00000008
SAI1_Block_B->CR1:      007206E3
SAI1_Block_B->CR2:      00000000
SAI1_Block_B->FRCR:     00011F3F
SAI1_Block_B->SLOTR:    00030180
SAI1_Block_B->IMR:      00000000
SAI1_Block_B->SR:       00000000

Вот код:
Код
static void pp(const SAI_Block_TypeDef * dev, const char * label)
{
    debug_printf_P(PSTR("%s->%s:\t%08lX\n"), label, "CR1", dev->CR1);
    debug_printf_P(PSTR("%s->%s:\t%08lX\n"), label, "CR2", dev->CR2);
    debug_printf_P(PSTR("%s->%s:\t%08lX\n"), label, "FRCR", dev->FRCR);
    debug_printf_P(PSTR("%s->%s:\t%08lX\n"), label, "SLOTR", dev->SLOTR);
    debug_printf_P(PSTR("%s->%s:\t%08lX\n"), label, "IMR", dev->IMR);
    debug_printf_P(PSTR("%s->%s:\t%08lX\n"), label, "SR", dev->SR);
}


В данном варианте тактируется от PLL, так что там ещё и I2SPLL задействовано в RCC (смотрите функцию hardware_sai_clock_selection, для WITHSAICLOCKFROMI2S

Сообщение отредактировал Genadi Zawidowski - Nov 8 2015, 00:32
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Nov 8 2015, 01:47
Сообщение #15


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



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

__HAL_SAI_ENABLE(&hsai_BlockA1);
__HAL_SAI_ENABLE(&hsai_BlockB1);

Сообщение отредактировал IgorKossak - Nov 8 2015, 17:50
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post

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

 


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


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