levshkatov

Проблема с I2S на STM32F407

1 сообщение в этой теме

levshkatov    0

День добрый. 
Пробую запустить I2S на STMF407. Использую HAL. Проблема в том, что данные передаются ровно в два раза медленнее, чем это требуется. Тактирование на ножках проверял, WS ровно столько сколько я поставлю (8к, 44к и тд). CK в 32 раза больше WS. MCK в 256 раз больше, все как и должно быть. Но пакет данных из 1000 байт передается за 62мс, хотя должен за 31 передаваться (при sample rate = 8000Hz). Без разницы, polling mode или DMA.
Части кода:

#define WAV_BUFFER_SIZE 1000
uint8_t wavReadBuffer[WAV_BUFFER_SIZE];

for(uint16_t i = 0; i < WAV_BUFFER_SIZE; i++){
    wavReadBuffer[i] = 0xff;
}

HAL_I2S_Transmit(&hi2s2, (uint16_t*)wavReadBuffer, WAV_BUFFER_SIZE, 5000);

static void MX_I2S2_Init(void)
{
    hi2s2.Instance = SPI2;
    hi2s2.Init.Mode = I2S_MODE_MASTER_TX;
    hi2s2.Init.Standard = I2S_STANDARD_MSB;
    hi2s2.Init.DataFormat = I2S_DATAFORMAT_16B;
    hi2s2.Init.MCLKOutput = I2S_MCLKOUTPUT_ENABLE;
    hi2s2.Init.AudioFreq = ((uint32_t)8000U);
    hi2s2.Init.CPOL = I2S_CPOL_LOW;
    hi2s2.Init.ClockSource = I2S_CLOCK_PLL;
    hi2s2.Init.FullDuplexMode = I2S_FULLDUPLEXMODE_DISABLE;
    if (HAL_I2S_Init(&hi2s2) != HAL_OK){Error_Handler();}
}


 

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


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

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

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

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

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

Загрузка...

  • Похожие публикации

    • Гость Илья
      Автор: Гость Илья
      Доброго времени суток, уважаемые читатели. Решил собрать зеркало в ванную комнату, такое, чтоб новости сообщало, погоду, время, и еще показания пары датчиков. Внешне будет смотреться органично, выложу проект, пока что заказываю комплектующие. 
      Возник следующий вопрос; возможно ли на stm32 сделать какую-никакую графику, чтоб при этом работала не как слайд шоу? K примеру, на дисплее погода, махнул рукой, появились новости, выбрал нужную, читаешь, перелистываешь.
      Встраивать малинку считаю нецелесообразным, все-таки зеркало, а не медиа-центр.
      Жду ваших советов!
    • Автор: nick32
      Здравствуйте. У st.com, похоже, что-то сломалось, и драйвер не скачивается. Скиньте, пожалуйста, установщик драйвера.
    • Автор: MDG_Lab
      Здравствуйте! 
      Ткните пожалуйста носом начинающего, как в Arduino IDE настроить частоту ШИМ. 
      Работаю с STM32F103, функции analogWrite(*); pwmWrite(*); Этими функциями задаю номер порта и коэффициент заполнения.
    • Автор: TIGER53501
      Привет, никак не могу разобраться с таймером в режиме сброса по внешнему событию,
      сам сброс работает, таймер сбрасывается, вопрос вот в чём, могу ли я в этом режиме использовать захват на оставшихся каналах?
      т.е. по внешнему событию сбрасывать таймер, и потом внешними событиями записывать сколько он протикал с момента сброса?
      STM32F429ZI
      СИ + VisualGDB + HAL + Cube
    • Автор: misterflud
      В общем нужна библиотека для вывода текста с STM32RB100 на экран 1602a. Соединение -- через 4 или 8 ножки. Я вам даю микроконтроллер и дисплей, а вы ищите или пишите библиотеку для этого. В общем нужно чтобы заработало. Если дисплей не работает, то подобрать другой.
      Пишите сюда либо на почту yurolejniko@yandex.ru
  • Сообщения

    • Можешь тупо взять АС с активным усилителем (пластиковые АС для ПК), но тебе это не поможет, те нужно в школу в 8 класс.
    • В общем поигрался. Убрал С3 вообще- молчит. Посмотрел клипп 20 к- сильно козявит. Поставил 100 пФ-нормально. Пока оставлю так. Частота среза за 30 к.  По входу поставил 2К/220 пФ= 360 кГц. Увеличиваем частоту- лезет выброс. Ну его.
    • Товарищи. подарите мне пожалуйста на день рождения (сегодня) кусочек канифоли. В пределах 100р. посылку оплачу.
    • Настрой боевой на самом деле)) Вот интересный момент пока не нахожу обьяснения. Пытаюсь передавать отладочную информацию по USB STM32F103C8T6 народный. Функция CDC_Transmit_FS отсутствует в документации почему то. Если я  запускаю ее в цикле то она работает. Создаю отдельный .h .c файлы для функций. В нем пишу функцию которая принимает строку из UART посимвольно и по формату &AXXX\0 Начало и конец пакета,название переменной и значение.  Вот как так можно было сделать функцию приема в которой я должен знать длину сообщения... от куда я могу ее знать?)) что там тот же GSM модуль скажет?) Долго думал но так и не понял зачем это сделали. Но фиг с ним можно символы принимать складывать и т.д это мы умеем.   В общем имею функцию void HAL_UART_RxCpltCallback(UART_HandleTypeDef * UartHandle)  По вашим  же рекомендациям стал принимать в ней. Все работает спасибо за наводку. В ней же отправляю в USB данные для отладки. sprintf(str_tx, "Valve = %s\n", valve);
      CDC_Transmit_FS((uint8_t*)str_tx, strlen(str_tx)); Все отправляет нормально. Но дальше строку мне надо разобрать по этому я делаю функцию paser_uart2(char* valve) в которую передаю свою строку. Разбираю строку, все норм. Но при попытке отправит хоть что то в USB ни чего не отправляется. Удалю весь код из функции отставляю просто отправку строки char test[] = "Test";
      CDC_Transmit_FS((uint8_t*)test, strlen(test)); И тишина отправляет только из колбэка, что выходит за рамки моего понимания))
    • pips когда ты наконец найдёшь свою петлю,  через землю USB и через джек на 3,5, а вот как тебе её удастся побороть это другой разговор. Ты же решил создать себе трудности ? Вот теперь и борись с ними.
    • @Pont 007  за слова "Твоя задача не делать земляных петель это для тебя первостепенно" спасибо.  Но схема выше мне ничего внятного не дала зачем мне usb-цап, если речь идет немножко о другом оУНЧ на ОУ. А на этом ЦАПЕ PCM2704DB, питалово сразу в микросхему идет.
    • Пишим, не стесняемся задавать вопросы. Торг всегда уместен. Ценнег 3000руб.