Автор Тема: Птеродактиль трансивер (аналог+DDC)  (Прочитано 170367 раз)

0 Пользователей и 8 Гостей просматривают эту тему.

Онлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19683
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #450 : Январь 26, 2021, 03:08:45 pm »
Да там везде тональник какой-то неправильный. И, конечно же, его нужно не на 2.8, а на килогерц ставить..
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #451 : Январь 26, 2021, 03:23:28 pm »
На 1 кГц все нормально, меня смутил именно там, на 2.8кГц. ОН как промодулирован шумом. 
Да да, я знаю, у меня ничего не получится )))

Онлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19683
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #452 : Январь 26, 2021, 04:43:48 pm »
ОН как промодулирован шумом. 

Там реальная модуляция, сигнал не чистый, даже анализатором видно...
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #453 : Январь 26, 2021, 05:55:06 pm »
Это работа шумодава))) он так работает
Вы как раз взяли участок где я включил шумодав.

(палка на которую вы показали - это палка от программатора адау....ну так, к слову)
Да да, я знаю, у меня ничего не получится )))

Онлайн Игорь 2

  • Administrator
  • *****
  • Сообщений: 19683
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #454 : Январь 26, 2021, 06:14:36 pm »
это палка от программатора адау

Да то понятно. А с речью пробовали? Хотя, скорее всего, будет то же, что в любом звуковом редакторе, но, всё равно интересно... cr123
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #455 : Январь 26, 2021, 07:24:27 pm »
АЦП приехал, но еще не подключал.
Вожусь с программированием самого адау через стм
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #456 : Январь 27, 2021, 09:33:37 am »
Заработала шина SPI на скорости 24МВ\сек (максимум 21 по даташиту). Нужно убрать 2 (0ом) резистора на шине spi на корпус (плата от чип-дипа)

Ини spi заключается в трехкратном изменении состояния вывода SS.
oid iniSPI_ADAU1467(void) {
    uint8_t a = 0;
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
    HAL_SPI_Transmit(&hspi3, (uint8_t *) &a, 1,50);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
    HAL_Delay(1);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
    HAL_SPI_Transmit(&hspi3, (uint8_t *) &a, 1,50);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
    HAL_Delay(1);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
    HAL_SPI_Transmit(&hspi3, (uint8_t *) &a, 1,50);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
   HAL_Delay(10); // задержка обязательна , иначе будет звук как удар по барабану
}

Например включение шумодава с помощью переключателя выглядит так:
   uint8_t sw[] = {0x0, 0x03, 0x97, 0x01, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
    HAL_SPI_Transmit(&hspi3, sw, 11, 50);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);


Что бы работал программатор, необходимо на MOSI шины SPI резистор на землю 13к прилепить. Это задает адрес I2C шины. Без него программатор не работает.
« Последнее редактирование: Январь 27, 2021, 10:26:28 am от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #457 : Январь 27, 2021, 09:58:30 pm »
Запустил SPI через ДМА для отправки данных.
Возня с кэшем покоя не дает.
Написал программку для отправки.

Помаленьку готовлюсь к отправке коэффициентов для FIR фильтра.

void SPI_DMA_SEND_TO_ADAU1467_ARRAY(uint16_t adress, uint8_t *data, uint16_t lenth8){

    lenth8+=3;
    uint16_t x=0;
    for(int i=3;i<lenth8;i++) {
        dspSentToAdau[i]=data[x];
        x++;
    }

    dspSentToAdau[0] =0;
    dspSentToAdau[1] =adress>>8;
    dspSentToAdau[2] =adress & 0xff;
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
    SCB_CleanDCache_by_Addr((uint32_t *) dspSentToAdau, lenth8);

    HAL_SPI_Transmit_DMA(&hspi3, dspSentToAdau, lenth8);
}

void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
{
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);

}
« Последнее редактирование: Январь 27, 2021, 10:00:20 pm от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #458 : Январь 28, 2021, 11:20:50 am »
Оказывается, напрямик нельзя кидать данные в память адау. Он конечно работает, но через некоторое время возникает коллизия и узел зависает. Оказывается, адау имеет специальную функцию SafeLoad которая вставляет данные между сэмплами.
Смысл ее в том , что в определенном участке памяти есть участок 32 байта. Первые 5 слов (5*4байт) - это данные. Потом адрес куда закинуть эти данные и последние пара слов отвечают за количество слов от 1 до 5 и за разные страницы этой памяти. И адау сам кидает куда и как ему надо без коллизий.

Так вот, после записи данных через SafeLoad, выше описанного процесса вкл\выкл шумодава, за 40 минут ни одного сбоя. Работает и работает. А в прошлом варианте могло 1минуту отработать и сбой, а может 5 мин отработать и снова сбой и сбой был в любом случаи, вопрос через сколько минут.

0x6000 data_SafeLoad[0] Safeload Data Slot 0
0x6001 data_SafeLoad[1] Safeload Data Slot 1
0x6002 data_SafeLoad[2] Safeload Data Slot 2
0x6003 data_SafeLoad[3] Safeload Data Slot 3
0x6004 data_SafeLoad[4] Safeload Data Slot 4
0x6005 address_SafeLoad Target address for safeload transfer
0x6006 num_SafeLoad_Lower Number of words to write/safeload trigger if on Page 1 lower memory
0x6007 num_SafeLoad_Upper Number of words to write/safeload triggerif on Page 2 upper memory

void SPI_DMA_SEND_TO_ADAU1467_SAFELOAD(uint16_t adress, uint8_t *data, uint8_t lenth32){

    //5 слов максимум по 4 байта
    uint8_t lenth=3+lenth32*4;
    uint16_t x=0;
    uint8_t * dd=(uint8_t *) data;

    dspSentToAdau[0] =0;
    dspSentToAdau[1] =0x6000>>8;
    dspSentToAdau[2] =0x6000 & 0xff;

    for(int i=lenth;i<32+3;i++) {
        dspSentToAdau[i]=0x0;
    }

    for(int i=3;i<lenth;i++) {
        dspSentToAdau[i]=dd[x];
        x++;
    }

    //0x6005 address_SafeLoad Target address
    dspSentToAdau[22+3]=adress>>8;
    dspSentToAdau[23+3]=adress & 0xff;

    dspSentToAdau[27+3]=lenth32; //0x6006 num_SafeLoad_Lower Number of words


    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
    SCB_CleanDCache_by_Addr((uint32_t *) dspSentToAdau, 32+3);
    HAL_SPI_Transmit_DMA(&hspi3, dspSentToAdau, 32+3);
}

« Последнее редактирование: Январь 28, 2021, 11:46:58 am от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

Оффлайн Relayer

  • Hero Member
  • *****
  • Сообщений: 1006
  • UR5FFR
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #459 : Январь 28, 2021, 01:40:27 pm »
Я напрямую кидаю и ниче так - все работает без зависания :) SafeLoad неудобен тем что кидает только 5 слов и заточен под простые фильтры. Кроме этого один SafeLoad - один такт семплрейт. Если что большое им грузить - много времени может уйти. У меня чебышевы 20го порядка так там 50 коэффициентов надо грузануть. Я долго долбался с загрузкой чтобы минимизировать артефакты на выходе - пробовал стопить полностью дсп, но он почему-то стартует потом через раз. Вобщем пошел по самому простому пути - отключаю выход dac при загрузке.
В любой схеме есть как минимум одна ненужная деталь :)

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #460 : Январь 28, 2021, 02:03:30 pm »
У меня чебышевы 20го порядка так там 50 коэффициентов надо грузануть.
А их можно как то посчитать , что б не грузить  таблицами память?

Я напрямую кидаю и ниче так - все работает без зависания
один раз пролезит. Я тоже на 1701 кидал и не парился и тоже выход глушил. Но вот в цикле вылазит такая фигня иногда. А если она вылезла один раз, то вылезет и в другой. Как раз фильтрами сейчас и занимаюсь
« Последнее редактирование: Январь 28, 2021, 02:08:37 pm от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

Оффлайн Relayer

  • Hero Member
  • *****
  • Сообщений: 1006
  • UR5FFR
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #461 : Январь 28, 2021, 02:40:09 pm »
А их можно как то посчитать , что б не грузить  таблицами память?
Ну наверное можно. Только инфы нет от адау что они там считают. Я просто написал прожку которая выковыривает коэффициенты из экспорта и формирует массив. И сгенерировал что мне нужно с шагом
В любой схеме есть как минимум одна ненужная деталь :)

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #462 : Январь 28, 2021, 04:58:31 pm »
Алгоритм загрузки через SafeLoad уже несколько часов работает. 1999
Смена переключателя каждые 2 секунды.
1767 и ЦАП потребляют 650ма  adm
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #463 : Январь 29, 2021, 11:44:04 am »
Запустил управление фильтром. Эти "красавчики" умудрились в адресах все перепутать. Теперь почему-то адреса идут не последовательно

const uint8_t dsp_adr_lpf[] = //фнч cheb2-20-90 адреса НЕ ПОСЛЕДОВАТЕЛЬНЫЕ
        {
                2,
                1,
                0,   // Первый адрес!!!!!
                4,
                3,
                7,
                6,
                5,
                9,
                8,
                12,
                11,
                10,
                14,
                13,
                17,
Умники , просидел вчера весь вечер пока нашел эту хрень.
Зато теперь через SafeLoad грузится без артефактов и ресетов и глушений выхода.

Да да, я знаю, у меня ничего не получится )))

Оффлайн Relayer

  • Hero Member
  • *****
  • Сообщений: 1006
  • UR5FFR
Re: Птеродактиль трансивер (аналог+DDC)
« Ответ #464 : Январь 29, 2021, 11:51:46 am »
Эти "красавчики" умудрились в адресах все перепутать. Теперь почему-то адреса идут не последовательно
Это где именно? В сгенерированном сигмастудией коде? Вроде всегда последовательно по адресам шли коэффициенты
В любой схеме есть как минимум одна ненужная деталь :)