Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/62: Рейтинг темы: голосов - 62, средняя оценка - 4.82
rx9sym

STM32F407 и I2S, DMA

01.07.2012, 19:20. Показов 12670. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
1) написал инициализацию I2S для STM32F407 и получил странный результат - мне нужно, чтобы процессор генерил сигнал тактирования (MCK - мастер клок) для аудиокодека. Генерация идет (на выходе МСК, 63 нога есть сигнал с частотой 5644800 Гц ) только в режиме, когда контроллер мастер-приемник. А вот когда он мастер-передатчик генерации нет. В даташите ничего про это не нашел, почему так? И еще - не совсем понял про режим полного дуплекса для I2S - можно ли (а может и нужно!?) считывать данные с соответствующего регистра данных SPI?
2) Настраиваю ДМА контроллер и непонятно что такое за параметры MBURST и PBURST. Из описания смутно понял, что они используются когда пишешь из периферии в память не постоянно (например по одному байту из SPI), а пачками -по 4, 8, 16 и т.д. байт. Прав ли я? При работе ДМА ставится ли ядро процессора под ХОЛД или нет?
Привожу код инициализации I2S:

void I2S_init (void)
{
/*Настройка I2S
частота дискретизации 22050Гц
f(VCO clock) = f(PLLI2S clock input) * (PLLI2SN / PLLM)
f(PLL I2S clock output) = f(VCO clock) / PLLI2SR
*/
RCC->AHB1ENR|=RCC_AHB1ENR_GPIOCEN;//включил GPIOC
GPIOC->MODER|=GPIO_MODER_MODER6_1;//выход AF
GPIOC->AFR[0]|=0x05000000;//AF5-MCKI2S

RCC->AHB1ENR|=RCC_AHB1ENR_GPIOBEN;//включил GPIOB
GPIOB->MODER|=GPIO_MODER_MODER12_1;//выход AF
GPIOB->MODER|=GPIO_MODER_MODER13_1;//выход AF
GPIOB->MODER|=GPIO_MODER_MODER14_1;//выход AF
GPIOB->MODER|=GPIO_MODER_MODER15_1;//выход AF
GPIOB->AFR[1]|=0x55550000;//AF5-I2S/SPI

RCC->PLLI2SCFGR=0;//обнуляю
RCC->PLLI2SCFGR|=PLLI2SN(429);//
RCC->PLLI2SCFGR|=PLLI2SR(4);//
RCC->CR|=RCC_CR_PLLI2SON;//Включил PLL I2S
#ifndef SIMULATOR
while ((RCC->CR&RCC_CR_PLLI2SRDY)!=RCC_CR_PLLI2SRDY) ;//пока заработает PLL
#endif
RCC->APB1ENR|=RCC_APB1ENR_SPI2EN;//включил Spi2
SPI2->I2SCFGR|=SPI_I2SCFGR_I2SMOD;//включил I2S
SPI2->I2SCFGR|=SPI_I2SCFGR_DATLEN_0;//24бит данные
SPI2->I2SCFGR|=SPI_I2SCFGR_CHLEN;//32бит длина данных
SPI2->I2SPR=I2SDIV(9);//
SPI2->I2SPR|=I2SODD(1);//
SPI2->I2SCFGR|=I2SCFG(3);//Режим Мастер - применик
SPI2->I2SPR|=I2SMCKOE(1);//выход Мастер клока
SPI2->I2SCFGR|=SPI_I2SCFGR_I2SE;//включил SPI
}

Прошу ответить на мои вопросы.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2012, 19:20
Ответы с готовыми решениями:

stm32f407+ADC+DMA. Проблема с DMA
Доброго дня! Новичок в stm, первый проект, начальные наброски, не понимаю,почему не работает эта связка(в заголовке). Есть несколько...

stm32f407 1-wire+DMA
Всем доброго времени суток столкнулся с проблемой при работе с 1-wire; Проблема заключается в следующем DMA не правильно считывает данные...

STM32F407 USART2 DMA
Всем добрый день! У меня есть тестовый пример использования USORT2 + DMA для платы STM32DISCOVERY (stm32F407VG). Передача осуществляется...

5
0 / 0 / 0
Регистрация: 22.04.2011
Сообщений: 223
02.07.2012, 08:28
Что мешает посмотреть пример к библиотеке периферии? Ее разработчики уже все за вас продумали и сделали, осталось приложить минимум усилий для встраивания примеров в свой проект.
0
rx9sym
02.07.2012, 22:32
Мне непонятно, может ли I2S STM32F407 работать в фулл дуплекс в режиме Master-recieve?
rx9sym
15.07.2012, 23:02
Режим работы I2S2 - Master RX, I2S2ext-slave TX, Fs=22050, длина посылки - 32 бита, длина информации - 24 бит, протокол Филипс.
Не могу ни как понять, почему с кодека периодически читаю 0xFFFE или что-то около того. Видимо Мастер приемник несинхронно принимает биты. Кодек cs4221. К сожалению нет осциллографа, чтобы посмотреть обмен. Периферия настроена правильно - много раз перепроверял. Ни у кого не было такой проблемы?

Уже и не знаю что делать...
rx9sym
21.08.2012, 22:35
Все-таки решил описать то, что проделал. Может кому-то будет полезным.
Как написано в Еррата, при применении полнодуплексного I2S, слайв нужно включать после мастера, причем так, чтобы включение совпало с сигналом WS I2S, иначе будет рассинхронизация, информация будет со сдвигом приниматься.
Второе, информацию, принимаемую в виде близком к 0xFFFFFF я поначалу считал за неверную. Однако вчитавшись в даташит на кодек и описание I2S, понял, что это значения АЦП, в комплиментарном виде.
Возникает дополнительная масса вопросов по обработке этой информации и собственно кодеку:
1) Нужно ли эти данные переводить в нормальный вид (из инт в ансигнед инт) или при цифровой фильтрации этого делать не нужно?
2) у кодека есть ряд параметров, суть которых мне не понятна, объясните пожалуйста:
- soft ramp step rate, измеряется в количестве шагов на такт - это по сути скорость АЦП или ЦАП?
- zero cross level - это что? как указано в даташите это имееет отношение к Soft ramp control.
rx9sym
21.08.2012, 22:36
Пока не могу разобраться, почему частота дискретизации реальная не соответствует теоритической. при этом частоты всех сигналов в норме.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.08.2012, 22:36
Помогаю со студенческими работами здесь

Глюки SD карточки - STM32F407 + SDIO-DMA
Всем привет! Возникла проблема в виде периодических подвисаний SD карты во время записи аудиотракта в Wav файл с помощью FatFs от чана....

STM32F407 ADC DMA 2 входа без TIM и NVIC
Прошу помощи подправьте Код, АЦП работает но в DMA не скидывает Задача измерять напругу(температуру) PA0 PA1, по 6 замеров, 1 раз в...

[РЕШЕНО] STM32F407+LSM303C, STM32F407 (дискавери)
Доброго времени суток, форумчане. Вот уже пару дней бьюсь над проблемкой, не выходит "каменный цветок". Собственно...

STM32F4Discovery - ADC DMA и FSMC DMA
Привет всем. Вынужден опять обратиться за Вашей помощью :) Ситуация такая. 1. Дисплей работает через FSMC. Написал драйвер...

USART2(RX+IDLE+DMA)+USART3(TX DMA)
Принимаю по юсарт2, побайтно, на скрости 115200. Пытаюсь передавать по юсарт3 через DMA, скорость 115200. На выходе юсарт3, получаю вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru