Трансиверы, передатчики, РПУ > Software Defined Radio (SDR)

SAI протокол (Serial Audio Interface) stm32f429

(1/8) > >>

ra0ahc:
SAI протокол (Serial Audio Interface)
Это навороченный i2s
В моем процессоре он есть. И его надо стартануть.
У меня есть проблема в понимании.

Вот настройки sai в CubeMX
И формат данный и формат слота.

ra0ahc:
Идет поток данных (пока один канал) но квадратура (в левый и правый каналы)  так считать размер одного замера =32 бита , то есть фактически амплитуды 32битного  АЦП (для простоты понимания). Поток непрерывный.
Что такое FRAME LENGTH? (это вопрос) Он должен совпадать с дампом памяти который я выделил в процессоре, точнее не так...это минимальная длина массива в процессоре, которое должно быть выделено? либо кратно этой цифре.
В Кубе там размер стоит (FRAME LENGTH )от 8 ло 256 бит или от 256 байт и выше за один сэмпл.
Если брать 48000Гц поток то это 20мкСек на один сэмпл. У меня в одной банке 1024 сэмплов ...итого  около 20мСек на один прием.   За 20мСек нужно посчитать смеситель, АРУ, ФИР фильтр, там еще что-то. Круто блин.

Я запутался  в трех соснах. Какой длины должна быть передача(FRAME LENGTH)? И это стерео? 

ra0ahc:
Разобрался.

Все очень просто и логично.
В данном процессоре 8 каналов для звука, можно по SAI гнать. Это 4 канала на левый и 4 канала на правый (слотов). И если размерность амплитуды 32бита, то как раз на общих 8 слотов будет в длину 256 бит или 32 байта за одно передачу. И это все в бесконечном потоке.

Или у меня: 32+32 бита квадратура =64бита FRAME LENGTH.
Или ДМА скушает 8байт за один прием. за 20мкСек. длина буфера получается при 1024 замеров ацп =8192байта.   

ra0ahc:
Пока не могу стартануть на передачу...

ra0ahc:
   HAL_NVIC_EnableIRQ(DMA2_Stream1_IRQn);
    HAL_NVIC_SetPriority(DMA2_Stream1_IRQn, 0, 0);
    HAL_SAI_TxCpltCallback(&hsai_BlockA1);
    __HAL_SAI_ENABLE(&hsai_BlockA1);

    HAL_SAI_IRQHandler(&hsai_BlockA1);
    if (HAL_SAI_Transmit_DMA(&hsai_BlockA1, (uint8_t *) saiTxBank, 4 * FRAME_SIZE) != HAL_OK) Error_Handler();

Хрен его знает как ТХ запустить через ДМА и чтоб еще прерывание сработало об окончанию.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии