Автор Тема: si5340A  (Прочитано 87779 раз)

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

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

  • Administrator
  • *****
  • Сообщений: 20748
Re: si5340A
« Ответ #45 : Июнь 12, 2019, 11:47:56 pm »
А выход чфд  на варикапы, можно не надо?

Конечно же надо, но у меня там внешний соединительный проводок длиной 2 см. при варианте с линейным расположением плат, и 5 мм. при бутерброде.
В обоих случаях никаких наводок нет, никакой экранировки провода не требуется... dontt44
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #46 : Июнь 13, 2019, 07:03:32 am »
У меня вот так получилось. Плата 100х100мм. 
Я посмотрел вашу плату внимательно. Вы ее уже заказали? Я нашел много важных нюансов.
Если не заказали, подождите мою, посмотрите отличия в подходе. Сделаете доработки и тогда....
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #47 : Июнь 13, 2019, 07:05:49 am »
вот например критическая ошибка.
Это сигнальная магистраль , же ? Тогда здесь серьезная ошибка.
Сами скажите или показать? 123123
Да да, я знаю, у меня ничего не получится )))

Оффлайн vikr

  • Newbie
  • *
  • Сообщений: 23
Re: si5340A
« Ответ #48 : Июнь 13, 2019, 10:23:49 am »
Да, это выход синтеза . Вы через это уже прошли, мне ещё предстоит. Хотя я придерживался топологии Игоря.

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #49 : Июнь 13, 2019, 12:27:18 pm »
Продолжаем...
решил сделать как автор  lllol
платы одна над другой (по необходимости)
Да да, я знаю, у меня ничего не получится )))

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

  • Administrator
  • *****
  • Сообщений: 20748
Re: si5340A
« Ответ #50 : Июнь 13, 2019, 12:46:44 pm »
решил сделать как автор

Очень правильное решение.  1yep Потому, что топология уже проверена неоднократно.  cr123
Риск получить лажу при иной разводке при условии соблюдения элементарных правил, не сильно велик, но он есть... lol22
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #51 : Июнь 13, 2019, 08:04:19 pm »
Вот так я уже делал и сейчас сделал.
Можно догадаться, где магистраль
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #52 : Июнь 14, 2019, 07:11:03 am »
Вот так будет наверное...
Да да, я знаю, у меня ничего не получится )))

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

  • Administrator
  • *****
  • Сообщений: 20748
Re: si5340A
« Ответ #53 : Июнь 14, 2019, 10:24:58 am »
Нормально вроде... lllol cr123
Ничего невозможного нет

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #54 : Июль 08, 2019, 11:27:50 am »
буду пробовать....так
Процедуры записи частоты в si5340.
(без понимания - работать не будет)

void si5340aSetFrequency_1(uint32_t freq) {

    uint64_t pllFreq;               
    uint32_t xtalFreq = 100000000;//100MHz
    uint64_t l;
    float f;
    uint64_t mult;
    uint64_t num;
    uint32_t denom;
    uint64_t divider;

    divider = (uint64_t) (13200000000 / xtalFreq);
    // PLL frequency: 900MHz
    if ((divider & 1) != 0)
        divider--;        // Ensure an even integer division ratio

    pllFreq = divider * xtalFreq;    // Calculate the pllFrequency: the divider * desired output frequency

    mult = pllFreq / freq;        // Determine the multiplier to get to the required pllFrequency
    l = pllFreq % freq;            // It has three parts
    f = l;                            // mult is an integer that must be in the range 15..90
    f *= 4294967295;                    // num and denom are the fractional parts, the numerator and denominator
    f /= freq;                    // each is 20 bits (range 0..1048575)
    num = (uint64_t) f;                        // the actual multiplier is  mult + num / denom
    denom = 4294967295;                // For simplicity we set the denominator to the maximum 1048575

    setupPLL5340(divider, denom);//

    setupMultisynth5340(N0_NUM, N0_DEN, mult, num, denom);

}
этот код не работает, оставлен для истории
« Последнее редактирование: Июль 08, 2019, 08:17:39 pm от Сергей »
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #55 : Июль 08, 2019, 11:28:48 am »
void send5340(uint8_t page, uint8_t reg, uint8_t reg_1, uint64_t P1, uint32_t P2) {


    uint8_t x[2];
    uint8_t y[7];
    x[0] = 0x01;
    x[1] = page;

    while (HAL_I2C_Master_Transmit(&hi2c3, 0b11101000, (uint8_t *) &x, 2, 500) != HAL_OK) {
        BSP_LCD_DisplayHStringAt(0, 20, "err wr 5340 page", LEFT_MODE);
    };

    y[0] = reg;
    y[1] = (uint8_t)((P1 & 0xFF0000000000) >> 40 );
    y[2] = (uint8_t)((P1 & 0x00FF00000000) >> 32 );
    y[3] = (uint8_t)((P1 & 0x0000FF000000) >> 24 );
    y[4] = (uint8_t)((P1 & 0x000000FF0000) >> 16 );
    y[5] = (uint8_t)((P1 & 0x00000000FF00) >> 8 );
    y[6] = (uint8_t)(P1 & 0x0000000000FF );

    while (HAL_I2C_Master_Transmit(&hi2c3, 0b11101000, (uint8_t *) &y, 7, 500) != HAL_OK) {
        BSP_LCD_DisplayHStringAt(0, 20, "err wr 5340 filling", LEFT_MODE);
    };



    x[0] = 0x01;
    x[1] = page;

    while (HAL_I2C_Master_Transmit(&hi2c3, 0b11101000, (uint8_t *) &x, 2, 500) != HAL_OK) {
        BSP_LCD_DisplayHStringAt(0, 20, "err wr 5340 page", LEFT_MODE);
    };

    y[0] = reg_1;
    y[1] = (uint8_t)((P2 & 0x0000FF000000) >> 24 );
    y[2] = (uint8_t)((P2 & 0x000000FF0000) >> 16 );
    y[3] = (uint8_t)((P2 & 0x00000000FF00) >> 8 );
    y[4] = (uint8_t)(P2 & 0x0000000000FF );

    while (HAL_I2C_Master_Transmit(&hi2c3, 0b11101000, (uint8_t *) &y, 5, 500) != HAL_OK) {
        BSP_LCD_DisplayHStringAt(0, 20, "err wr 5340 filling", LEFT_MODE);
    };


}
этот код не работает, оставлен для истории
« Последнее редактирование: Июль 08, 2019, 08:18:04 pm от Сергей »
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #56 : Июль 08, 2019, 11:29:05 am »
void setupMultisynth5340(uint8_t N_NUM, uint8_t N_DEN, uint64_t mult_2, uint64_t num_2, uint32_t denom_2) {
    uint64_t P3;                    // Synth config register P1
    uint32_t P4;                    // Synth config register P2

    P3 = (mult_2 * denom_2 + num_2);  //
    P4 = denom_2;

    // * 0x0302[43:0]  N0_NUM               1181116006400      0x11300000000
    // * 0x0308[31:0]  N0_DEN               2147483648         0x80000000
    send5340(0x03, N0_NUM, N0_DEN, P3, P4);

}

void setupPLL5340(uint64_t divider_1, uint32_t denom_1) {
    uint64_t P1;                    // PLL config register P1
    uint32_t P2;                    // PLL config register P2

    P1 = (divider_1 * denom_1);        //
    P2 = denom_1;


    //* 0x0235[43:0]  M_NUM                354334801920       0x05280000000
    // * 0x023B[31:0]  M_DEN                2147483648         0x80000000
    send5340(0x02, M_NUM, M_DEN, P1, P2);

}
этот код ПОЧТИ не работает, оставлен для истории
« Последнее редактирование: Июль 08, 2019, 08:18:50 pm от Сергей »
Да да, я знаю, у меня ничего не получится )))

Оффлайн Relayer

  • Hero Member
  • *****
  • Сообщений: 1006
  • UR5FFR
Re: si5340A
« Ответ #57 : Июль 08, 2019, 01:50:50 pm »
Это чтож на каждую смену частоты PLL дергать и ресетить?
В любой схеме есть как минимум одна ненужная деталь :)

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #58 : Июль 08, 2019, 01:55:58 pm »
Схема, печатная плата и тестовая прошивка для проверки работоспособности модуля. С кварцевым генератором 80 мгц, микросхема выдает на выходе OUT2 20 мгц. Печатная плата предусматривает возможность установки генератора (в прямоугольном корпусе) или кварца. Это то, что было под рукой. Но прошивка для генератора. Это все, конечно, пока только макет, для изучения микросхемы и отработки программы.

Оффлайн Владимир_К

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #59 : Июль 08, 2019, 02:04:30 pm »
Для проверки модуля написал небольшую программку. Программа пишет в регистры микросхемы, затем читает и выводит прочитанное на экран компьютера. Для вывода на экран используется терминальная программа Terminal 1.9. Проект можно открыть и изменить в программе AVR Studio 4.19 или старше. HEX файл прошивки в папке проекта "default". Это только для проверки правильности записи.. Больше ничего.
Кроме того, при первом включении? может оказаться полезной программа для Ардуино "ScanerI2C". Скетч программы можно найти в интернете. Запустить программу, в меню "Tools" - Serial Monitor. Микросхема должна ответить 74. Это ее адрес (при замкнутых на землю A0 и А1.
« Последнее редактирование: Июль 08, 2019, 02:10:12 pm от Владимир_К »