Игорь 2

Трансиверы, передатчики, РПУ => Трансиверы самодельные => Тема начата: ra0ahc от Июнь 09, 2019, 07:39:11 pm

Название: si5340A
Отправлено: ra0ahc от Июнь 09, 2019, 07:39:11 pm
Значит будем все миром разбираться как ее запустить

Владимир начал тут и .....
Хотя за исходники спасибо конечно, но сдается мне что там только малая часть совместима с si5351 по регистрам и вообще по структуре.
http://www.cqham.ru/forum/showthread.php?36110-Si5340A/page13&highlight=si5340
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 09, 2019, 07:40:35 pm
1.8 вольта стаб у меня есть и на 3.3 вольта тоже, в нормальных корпусах.
Время есть маленько, надо начинать, и микруху запаял уже в переходник.
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 09, 2019, 07:41:35 pm
сюда
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 09, 2019, 07:43:29 pm
схема от туда же, но проверю завтра по даташиту
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 10, 2019, 08:09:05 pm
Скидал платку по этой схеме
потребление 370ма
i2c работает, но зависает на 61 регистре по счету должно быть 326
опора 80 мгц

кстати, эта у меня тестовая stm32  и там реализован анализатор спектра. Так вон там палка опоры пролазит 80 мгц , крутил 1-30мгц на генераторе - нормальную палку показывает . Края Найквеста рулят!
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 10:31:42 am
После прокуривания даташита , пришел к выводу что сишка зависла после установки  выходных регистров. То есть регистров отвечающих за выхода (амплитуды, напряжения и тд). Попробую сегодня разбить на участки по заливки этих регистров.
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 10:52:19 am
Да, интересно, что же в результате выйдет... lllol
Как я понимаю, 10...20 МГц она сможет выдать с дискретностью полгерца?  pl33
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 10:56:07 am
0.00000...Гц и тд
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 10:56:48 am
Нормально... lol22
Название: Re: si5340A
Отправлено: Relayer от Июнь 11, 2019, 03:56:30 pm
На 150МГц даташит дает фазовый шум -124dBc при отстройке в 1кГц. Деление на 4 опустит фазовый до -136dBc (это для супера с ПЧ в 10МГц и диапазона 10м). Для 40ки еще поделим на 2 и 6дб накинем - получим фазовый -142dBc. Как то так получается имхо
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 04:11:29 pm
Для 40ки еще поделим на 2 и 6дб накинем - получим фазовый -142dBc.

Ну, если ещё забыть про спуры, и, плюс ведь ещё нюанс, к примеру, мои DDS Риголы как выходят на -130дБ/Гц на расстоянии килогерц, так эти же 130 у них и при бОльших отстройках.  56511
Так что, никогда ни DDS, ни SI в качестве первого гетеродина даже среднего аппарата не воспринимал... dontt44
А вот мои синтезы, тактируемые Риголом, при отстройке 20 кГц на 16 МГц уже -153 дБ/Гц. lol22
Название: Re: si5340A
Отправлено: Relayer от Июнь 11, 2019, 04:30:01 pm
А вот мои синтезы, тактируемые Риголом, при отстройке 20 кГц на 16 МГц уже -153 дБ/Гц.
Если верить даташиту (37я страница верхний график) то при 156MHz на выходе -137dBc на 20kHz отстройки. Делим на 8 - улучаем еще на 18db фазовый до -155dBc. Это при тактировании кварцев 48MHz :)

По спурам инфы нет. Но это ж не ддс, тут же принцип в том что ГУН системы ФАПЧ работает на частоте 14ГГц и далее делится до нужной частоты на выходе. Причем делить можно целочисленно, что улучшает шумовые характеристики
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 04:41:51 pm
Опять же два нюанса. Первый - есть ли уверенность в том, что картинка фазовых шумов будет столь же красивой при частотах, отличных от приведённой? Не взял ли производитель наименее шумные?  no88
Ну, и второй - а со спурами-то что делать? В последнем синтезе у меня их нет вообще в ближней зоне, самые ближние находятся на расстоянии частоты сравнения, т. е., 10...20 МГц.. pl33
Предыдущий вариант с частотами сравнения и опоры 158...316 кГц имел спуры в ближней зоне, но там самые сильные то ли под 130, то ли под 140 дБ были - я на ve3kf картинки точно давал.  1yep
В сущности, пока писал, Вы сами же про спуры и ответили... lol22
Название: Re: si5340A
Отправлено: Relayer от Июнь 11, 2019, 05:19:56 pm
есть ли уверенность в том, что картинка фазовых шумов будет столь же красивой при частотах, отличных от приведённой?
Я думаю что скорее всего будет т.к. производитель нормирует джиттер для диапазона генерируемых частот
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 05:59:26 pm
Я запустил сишку !!!! lol22
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 06:05:58 pm
 
Я запустил сишку !!!!
lol22
Даёшь опору к синтезу!  cr123
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 07:29:40 pm
Чуда не случилось
частота 12Мгц
выход через фнч 24мгц срез (осталась макетка)

на фото : маркер 10, 20 , 100 кгц от основной частоты
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 07:31:17 pm
Грязь здесь есть

ну  и 0-100мгц (непонятно почему 3 гармоника фнч не срезал nea33 )
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 07:34:03 pm
Ну что...... по сравнению с 5351 .....5340 просто красавец!
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 07:35:53 pm
Игорь, ваше мнение в студию пожалуйста!

(на фотках все основные настройки видно отчетливо)
Название: Re: si5340A
Отправлено: Relayer от Июнь 11, 2019, 07:41:14 pm
по сравнению с 5351 .....5340 просто красавец
Его надо сравнивать не с 5351 у которой частота ГУН 600-900МГц, а с Si570 в которой 4-6ГГц. И обязательно запускать делитель ГУНа в целочисленном режиме.
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 07:45:15 pm
да там много вопросов еше
я пока CLK просто через резистор 750 ом подключил  к сишке
В любом случаии, судя по моему прибору у 5340 шумовая дорожка -90дб а у 5351 =-705дб
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 07:47:52 pm
частота 12Мгц
выход через фнч 24мгц

Ну, тут сразу непонятка - то ли у Вас сама сишка такая шумная, то ли прибор.
Поэтому, попробуйте снять аналогичную картинку с кварцевого генератора, тогда всё станет на свои места... 1yep

Грязь здесь есть

Вижу грязь по уровню - -87 дБ, а основной сигнал сколько?  dontt44
Ну, а по поводу гармоник - это фигня, ни на что не повлияет... 1yep

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

Ничего невозможного нет.. 123123 lllol lol22
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 07:49:48 pm
основной сигнал -17дбм хотя что то я  сомневаюсь.... но уже все выключил
грязь на 2.5 мгц от сигнала . Это важно?
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 07:52:59 pm
основной сигнал -17дбм

А, так палку -70 дБ успешно съест мой синтез.  lllol
Гляньте у Саши на сайте, там я указывал допустимый уровень мусора в сигнале. По-моему, при расстоянии до основного тона более 20 кГц, допустима безобразно большая цифра, чуть не -30 дБ... 123123
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 07:53:52 pm
грязь на 2.5 мгц от сигнала . Это важно?

На -70 смело можно забить. Это точно. А конкретную цифру гляньте на ve3kf, сам не помню.... pl33
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 11, 2019, 07:54:28 pm
допустима безобразно большая цифра,
дык нету тут, сигнал в ближней зоне чистый
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 07:55:31 pm
сигнал в ближней зоне чистый

Да Вы для дальней посмотрите - мне самому интересно, а искать неохота.  cr123
-70 гарантированно проходит.  lol22
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 07:58:00 pm
Завтра три новых синтеза будут... cr123
Название: Re: si5340A
Отправлено: Relayer от Июнь 11, 2019, 10:41:12 pm
пока CLK просто через резистор 750 ом подключил  к сишке
Через резистор это не есть хорошо. А чего кварц не поставить?
судя по моему прибору у 5340 шумовая дорожка -90дб а у 5351 =-70дб
Не в курсе что у вас за прибор, но исходя из общих принципов работы современных цифровых анализаторов спектра у вас FFT работает с маленьким количеством точек, поэтому каждая точка на спектрограмме (bin) соответствует не одному герцу, а некоторой полосе частот в которой интегрируется амплитуда сигнала. Поэтому вы можете увидеть достаточно большие палки на спектре, но в ближней зоне вы фазовые шумы не увидите, только их среднюю температуру по больнице некую интегральную оценку. Почитайте мануал на прибор - там это все по идее должно быть.
Кстати не мешало бы посмотреть и чт  у вашего прибора с собственными фазовыми шумами. А то может оказаться что их слегка больше чем мы собрались измерять :)
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 11, 2019, 10:52:37 pm
Через резистор это не есть хорошо.

А я это упустил. В принципе, действительно, при работе на пределе срабатывания из-за этого может быть повышенный уровень фазовых шумов. Фиг знает, как они там внутри работают, я бы убедился, что есть хотя бы двукратный запас по напряжению.  123123
А по поводу прибора и его шумов - полагаю, что Сергей с одними и теми же его установками перил обе сишки... pl33
Лично я малые фазовые шумы анализаторами не меряю категорически - погрешность запредельная получается.  dontt44
Подключаю синтез как гетеродин к монстру, а на вход приёмника - кварцевый генератор. Дальнейшее, полагаю, вполне очевидно, и погрешность мизерная.  lol22
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 12, 2019, 06:42:01 am
Да согласен, этим прибором максимум -90 дБ можно измерить . Хотя я смотрел собственную шумовую  дорожку при полосе 40 кГц она составила -116 дБ , при широкой полосе более мгц -90 дБ. Так что надо смеситель делать и смотреть звуковой платой .
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 12, 2019, 07:26:01 am
вот к сдр
через атт -10дб

мне кажется оса уже дурить начинает
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 12, 2019, 07:27:34 am
атт -20дб

грязь летит от LM1117 и от навесного монтажа
все греется
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 12, 2019, 07:28:36 am
мне кажется опора идеальная для синта
так?
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 12, 2019, 10:45:02 am
мне кажется опора идеальная для синта

Картинки-то неплохие, но, всё-таки, я бы у себя его проверил. На те же фазовые шумы было бы интересно. Больше трёх дней общий прогон не займёт.  123123
Как раз, в паре с собранными синтезаторами... cr123
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 12, 2019, 10:51:38 am
Без процессора это кусок железа  cry333
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 12, 2019, 10:57:34 am
Без процессора это кусок железа

Естественно. В принципе, можно пробовать и на одной частоте - к примеру, я меряю при опорной частоте DDS 16057 кГц - это 20 кГц от частоты приёма 7036 кГц, на которой у меня и работает кварцевый генератор, который я ставлю на вход монстра... lllol
Ну, а со спурами, полагаю, и у Вас всё получится, там, наверное, и Осы хватит... lol22
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 12, 2019, 08:42:24 pm
Сегодня осилил только гуны.
Плата получается "не детская" - это расплата за сервис и универсальность.
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 12, 2019, 09:44:12 pm
Сегодня осилил только гуны.

Смотрите, сигнальные провода там не размахайте, как образец, может быть, взять Пикад от ГУНа 0844, я выложил его в ветке про синтез, он гарантированно без всяких заморочек. 123123
 Это не потому, что что-то у Вас увидел, так, мысли вслух... lol22
Название: Re: si5340A
Отправлено: vikr от Июнь 12, 2019, 10:05:45 pm
У меня вот так получилось. Плата 100х100мм.  Три ГУНа настроил без проблем, как говориться в лёт,  а самый вч пока в процессе.  самое хреновое что диптрассеровский исходник куда то сгинул, а на этой плате две ошибки.
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 12, 2019, 10:10:59 pm
У меня вот так получилось.

Ну, 100*100 - вообще круто, у меня сейчас ГУНы - 85*65, ЧФД - 50*65, вся плата пустая.  lllol
Тоже думал объединить, но, пока решил, что для экспериментов лучше раздельные иметь... pl33
А настраивается всё влёт - я уже и сам запутался, сколько через меня плат пролетело, катушки уже к концу подходят... lllol pl33 lol22
Название: Re: si5340A
Отправлено: vikr от Июнь 12, 2019, 10:24:43 pm
100х100 потому что у китайцев так дешевле. ЧФД планировалось отрезать и делать этажерку. Сейчас думаю кинуть жесткие медные коаксиалы 2мм диаметром с обратной стороны.
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 12, 2019, 10:47:57 pm
Сейчас думаю кинуть жесткие медные коаксиалы 2мм диаметром с обратной стороны.

А почему во множественном числе? У меня при линейном расположении коаксиал только один - с выхода делителя ГУНов на вход ЧФД.. cr123
Название: Re: si5340A
Отправлено: vikr от Июнь 12, 2019, 11:03:45 pm
А выход чфд  на варикапы, можно не надо?
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 12, 2019, 11:47:56 pm
А выход чфд  на варикапы, можно не надо?

Конечно же надо, но у меня там внешний соединительный проводок длиной 2 см. при варианте с линейным расположением плат, и 5 мм. при бутерброде.
В обоих случаях никаких наводок нет, никакой экранировки провода не требуется... dontt44
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 13, 2019, 07:03:32 am
У меня вот так получилось. Плата 100х100мм. 
Я посмотрел вашу плату внимательно. Вы ее уже заказали? Я нашел много важных нюансов.
Если не заказали, подождите мою, посмотрите отличия в подходе. Сделаете доработки и тогда....
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 13, 2019, 07:05:49 am
вот например критическая ошибка.
Это сигнальная магистраль , же ? Тогда здесь серьезная ошибка.
Сами скажите или показать? 123123
Название: Re: si5340A
Отправлено: vikr от Июнь 13, 2019, 10:23:49 am
Да, это выход синтеза . Вы через это уже прошли, мне ещё предстоит. Хотя я придерживался топологии Игоря.
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 13, 2019, 12:27:18 pm
Продолжаем...
решил сделать как автор  lllol
платы одна над другой (по необходимости)
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 13, 2019, 12:46:44 pm
решил сделать как автор

Очень правильное решение.  1yep Потому, что топология уже проверена неоднократно.  cr123
Риск получить лажу при иной разводке при условии соблюдения элементарных правил, не сильно велик, но он есть... lol22
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 13, 2019, 08:04:19 pm
Вот так я уже делал и сейчас сделал.
Можно догадаться, где магистраль
Название: Re: si5340A
Отправлено: ra0ahc от Июнь 14, 2019, 07:11:03 am
Вот так будет наверное...
Название: Re: si5340A
Отправлено: Игорь 2 от Июнь 14, 2019, 10:24:58 am
Нормально вроде... lllol cr123
Название: Re: si5340A
Отправлено: ra0ahc от Июль 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);

}
этот код не работает, оставлен для истории
Название: Re: si5340A
Отправлено: ra0ahc от Июль 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);
    };


}
этот код не работает, оставлен для истории
Название: Re: si5340A
Отправлено: ra0ahc от Июль 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);

}
этот код ПОЧТИ не работает, оставлен для истории
Название: Re: si5340A
Отправлено: Relayer от Июль 08, 2019, 01:50:50 pm
Это чтож на каждую смену частоты PLL дергать и ресетить?
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 01:55:58 pm
Схема, печатная плата и тестовая прошивка для проверки работоспособности модуля. С кварцевым генератором 80 мгц, микросхема выдает на выходе OUT2 20 мгц. Печатная плата предусматривает возможность установки генератора (в прямоугольном корпусе) или кварца. Это то, что было под рукой. Но прошивка для генератора. Это все, конечно, пока только макет, для изучения микросхемы и отработки программы.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 02:04:30 pm
Для проверки модуля написал небольшую программку. Программа пишет в регистры микросхемы, затем читает и выводит прочитанное на экран компьютера. Для вывода на экран используется терминальная программа Terminal 1.9. Проект можно открыть и изменить в программе AVR Studio 4.19 или старше. HEX файл прошивки в папке проекта "default". Это только для проверки правильности записи.. Больше ничего.
Кроме того, при первом включении? может оказаться полезной программа для Ардуино "ScanerI2C". Скетч программы можно найти в интернете. Запустить программу, в меню "Tools" - Serial Monitor. Микросхема должна ответить 74. Это ее адрес (при замкнутых на землю A0 и А1.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 02:15:01 pm
буду пробовать....так
Наверное вот так надо:
/********************* Загружаем Num  ************************/

void  WriteNUM (uint8_t page_1, volatile  uint64_t P1, char reg)

 {
 WriteByte_1 (page_1, reg);

   i2cByteSend ((P1 & 0x00000000000000FF));

     i2cByteSend ((P1 & 0x000000000000FF00)>>8);

       i2cByteSend ((P1 & 0x0000000000FF0000)>>16);

        i2cByteSend ((P1 & 0x00000000FF000000)>>24);

          i2cByteSend ((P1 & 0x000000FF00000000)>>32);

             i2cByteSend ((P1 & 0x0000FF0000000000)>>40);
         
               i2cByteSend ((P1 & 0x00FF000000000000)>>48);

                i2cByteSend ((P1 & 0xFF00000000000000)>>56);     
   
                          i2cStop();
  }

Сначала загружаются регистры с меньшим адресом, затем адрес увеличивается на 1 автоматически.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 02:29:59 pm
Это чтож на каждую смену частоты PLL дергать
Ответа на этот вопрос я так нигде и не нашел. Но, думаю, правильно будет задать параметры делителя в PLL один раз, при инициализации микросхемы и больше туда вообще не соваться. При смене диапазона можно менять значения выходных делителей R, а изменение частоты производить только делителем N. Причем, возможно, не считать тупо все, да еще и с делениями, а ограничиться сложением. Просто к значению Numerator добавлять дельту. Будет, конечно отклонение частоты, но возможно оно будет в пределах погрешности кварцевого генератора. 
У Вас опыт большой, что посоветуете? Ну и конечно, проблема с кварцем или генератором. Сдается мне, ширпотребом, все параметры микросхемы можно им угробить...
Ну и еще одно. При использовании шины I2C, надо уходить от ожидания срабатывания модуля TWI. То есть диспетчер нужен или флаговый автомат? В которых я пока не разобрался...
А может вообще уйти от I2C и использовать SPI.
Странная штука. В предыдущем сообщении вместо 8 подставлен смайлик... Я не виноват lol22,
Название: Re: si5340A
Отправлено: Relayer от Июль 08, 2019, 02:47:08 pm
У Вас опыт большой, что посоветуете?
Ничего пока не посоветую. Вот дойдут руки - тогда будет рабочий код.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 03:07:32 pm
Сначала загружаются регистры
В сообщении я зарапортовался.. В пошаговом режиме отлаживал, число 64 разрядное, вот и впер туда 64 разрядное.. Поэтому надо изменить с учетом разрядности, то есть нижние 2 строчки убрать.. Но оно и так работает 123123. Работает потому, что при записи Num затираются регистры Den. А потом Den восстанавливаются, так как Dеn пишется позже.  Но, конечно же, лишнее писать нет смысла. И так по времени получается критично.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 07:39:56 pm
Владимир, пока ваш алгоритм не работает.
Вы просто загнали регистры и получили красивую частоту. Но алгоритм пересчета здесь вообще другой. Пока я не могу ладу дать с этим алгоритмом. Но расчет DEn NUM от 5351 не катит.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 07:42:09 pm

пробовал ...пока фигня полная. частота прыгает от 1 мгц до 80 мгц в хрен знает каком алгоритме.
сейчас у нас уже поздно ...завтра еще раз посмотрю
походу как обычно всё с начала придется.

и пошаговый режим тоже ....
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 07:50:06 pm
Тув вообще по другому написано

3.1 Basic Procedure for Using the Si5341/40 as a DCO
1. Create a starting frequency plan using ClockBuilder Pro. Note the N dividers that are connected to the output clocks that you want
to control as a DCO. When an individual N divider value is changed, all output clocks connected to that N divider will change by the
same percentage amount.
2. Make sure that the N dividers that you are going to change have their fractional mode enabled.
a. The setting name, PIBYP[4:0], controls the integer or fractional mode, PIBYP[N4 N3 N2 N1 N0]. When the respective bit of
PIBYP is set to 0 the N divider is in fractional mode. If all N dividers are to be used as DCO's then set PIBYP = 0x00. A soft
reset is required after changing any bit of PIBYP to a 0. Note that a soft reset will cause all outputs to glitch. CBPro sets PIBYP
as needed for all N dividers that have DCO enabled.
3. Compute the Nx_NUM_delta for your required frequency step size.
4. Write the new Nx_NUM word. New Nx_NUM = old Nx_NUM +- Nx_NUM_delta.
a. Add Nx_NUM_delta to Nx_NUM to decrease the output frequency and subtract Nx_NUM_delta from Nx_NUM to increase the
output frequency.
b. Write the new Nx_NUM value.
c. Write the Nx_UPDATE bit to cause the change to take effect.




3.1 Основная процедура для использования Si5341 / 40 в качестве DCO
1. Создайте начальный частотный план с помощью ClockBuilder Pro. Обратите внимание на N делителей, которые подключены к выходным тактовым сигналам, которые вы хотите
контролировать как DCO. При изменении значения отдельного делителя N все выходные часы, подключенные к этому делителю N, изменятся на
такая же процентная сумма.
2. Убедитесь, что для N делителей, которые вы собираетесь изменить, включен их дробный режим.
а. Имя настройки, PIBYP [4: 0], управляет целочисленным или дробным режимом, PIBYP [N4 N3 N2 N1 N0]. Когда соответствующий бит
PIBYP установлен в 0, делитель N находится в дробном режиме. Если все N делителей должны использоваться в качестве DCO, тогда установите PIBYP = 0x00. Мягкий
Сброс требуется после изменения любого бита PIBYP на 0. Обратите внимание, что мягкий сброс приведет к сбоям всех выходов. CBPro устанавливает PIBYP
по мере необходимости для всех N делителей, у которых включен DCO.
3. Вычислите Nx_NUM_delta для требуемого размера шага частоты.
4. Напишите новое слово Nx_NUM. Новый Nx_NUM = старый Nx_NUM + - Nx_NUM_delta.
а. Добавьте Nx_NUM_delta к Nx_NUM, чтобы уменьшить выходную частоту, и вычтите Nx_NUM_delta из Nx_NUM, чтобы увеличить
выходная частота.
б. Напишите новое значение Nx_NUM.
с. Запишите бит Nx_UPDATE, чтобы изменения вступили в силу.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 07:58:43 pm
Владимир, пока ваш алгоритм не работает.
Где Вы его увидели, мой алгоритм?
 
И давно так?
Если нравится по-другому, никто не возражает. 
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 08:01:07 pm
Сначала загружаются регистры с меньшим адресом, затем адрес увеличивается на 1 автоматически.
Да, вы правы, это я ступил.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 08:01:35 pm
здесь нашел
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 08:02:20 pm
Где Вы его увидели, мой алгоритм?
Вы сами на cqham кидали. вот его я и кручу.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 08:03:01 pm
Create a starting frequency plan using ClockBuilder Pro.
Это для фиксированной частоты. Программа выдаст коэффициенты с учетом минимального джиттера. Для нас это актуально для опорника. Для синтезатора с изменением частоты эта программа (ClockBuilder) мало что дает.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 08:07:28 pm
Вы сами на cqham кидали
Несколько раз писал, что то были только начальные шаги и неудачные. Сразу было видно, что надо переделать плату, а потом ковыряться в программе. Там в программе даже адреса остались от Si5351A.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 08:08:41 pm
Время экономит здорово.
Я сделал там частоту ...получил дамп ...загнал в сишку , а дальше надо NUM менять и только его. PLL (как вы и писали) трогать не надо, 10-20 мгц я думаю можно и без изменений плл сгенерить, но надо проверить.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 08:11:28 pm
там вроде только это
Название: Re: si5340A
Отправлено: ra0ahc от Июль 08, 2019, 08:22:56 pm
Кстате, сегодня сишка не запустилась и я начал пропаивать  контакты, а потом вообще снял микруху феном и назад поставил. Много издевательств с паяльником (320гр)  итак 3 часа  lol22
Потом полез в программу, оказалось не ту версию заливал ...тактирование ни туда подал, блин.

Крепкая она оказалась.Выдержала все мои издевательства.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 08:51:19 pm
10-20 мгц я думаю можно и без изменений плл сгенерить, но надо проверить.
Наверняка можно. Есть же еще выходные 24-разрядные делители R. Там можно еще кучу делений получить, на 2, 4 и т.д.  И значение этого делителя можно менять в зависимости от диапазона. То есть, при вызове функции расчета частоты, в параметре функции укажите диапазон, а там условие, например, если диапазон 1, то делитель 16 , второй - 8 и т.д. Таким образом диапазон изменения N делителей будет меньше. Хотя, может что и вылезет.. Кроме того, у PLL всего вроде 10% изменение частоты максимум. Поэтому его, я думаю, вообще трогать не нужно. Один раз загнать при инициализации и на этом ограничиться.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 08, 2019, 10:40:47 pm
Ну и вот, что нам пишут:
It is possible for a PLL to become unresponsive (i.e., lose lock indefinitely) when it is dynamically reprogrammed or changed via the
serial port. Reprogramming/changing the N divider does not affect the PLL. Any change that causes the VCO frequency to change by
more than 250 ppm since Power-up, NVM download, or SOFT_RST requires the following special sequence of writes. Changes to the
following registers require the following special sequence of writes:
А это означает примерно, что при изменении частоты генератора более чем на 250 ppm, возможен срыв частоты.
А вот еще более конкретно:
Changes to
output frequencies without changing the PLL settings are desired.
То есть,  изменение частоты желательно производить без изменения частоты PLL. Так что соваться туда скорее всего не следует.
Ну и алгоритм.  Скажем частота PLL 13200000000, которую мы успешно задали.   А нужно получить на выходе например 20 мгц. И как это сделать? Есть делитель, состоящий из числителя N_NUM и знаменателя N_DEN. И имеем два неизвестных. Придется одно значение, например знаменатель взять " с потолка", ну например - 536870912. Почему такое значение? Потому что это 20000000 в 16-ричной системе. Тогда числитель должен быть (13200000000/20000000)*536870912=354334801920. Имеем N_DEN=536870912, а N_NUM=354334801920. Дальше все просто.. Вот так это примерно выглядит:

/**************************** Функция управления частотой   *****************************************/

void si5340aSetFrequency(unsigned long z)
{
   //Определение переменных: pllFreq, XTALFreq, l, f, mult, num, denom, divider
     uint64_t xtalFreq = XTAL_FREQ;    
        volatile uint64_t mult;
         volatile uint64_t num;
                 volatile uint32_t denom=2147483648;
                volatile uint64_t divider_1;
          volatile uint64_t m_num;               
             volatile uint32_t m_denom = 201326592;            
               volatile uint64_t pllFreq = 13200000000;    


divider_1 = pllFreq/xtalFreq;           // Определяем значение делителя  Pll.
                                  
  if ((divider_1 & 1) != 0) divider_1--;   //  (короче делаем четным)

   pllFreq = divider_1 * xtalFreq;           // Считаем настоящее значение частоты, так как в значении делителя отброшены числа после запятой, кроме того, сделали значение четным.

      m_num = pllFreq/ m_denom;       //Значение числителя делителя PLL.          

             num=(pllFreq/z)*denom; //Значение числителя N_NUM.
             
                     setup_div(num, denom);

                      WriteByte (0x03, 0x0C, 0x01);      // Update N0
      
                        setupPLL(m_num, m_denom);

                          WriteByte (0x02, 0x3F, 0x01);      // Update M

Спать надо, может что напутал..  Завтра скорее всего буду в пути... Да, прикинул еще раз на калькуляторе.. lol22 Вроде что-то напутал. Но думаю идею поняли.
Название: Re: si5340A
Отправлено: Relayer от Июль 08, 2019, 11:09:11 pm
То есть,  изменение частоты желательно производить без изменения частоты PLL. Так что соваться туда скорее всего не следует.
Ну и алгоритм.  Скажем частота PLL 13200000000, которую мы успешно задали.   А нужно получить на выходе например 20 мгц. И как это сделать? Есть делитель, состоящий из числителя N_NUM и знаменателя N_DEN. И имеем два неизвестных. Придется одно значение, например знаменатель взять " с потолка", ну например - 536870912. Почему такое значение? Потому что это 20000000 в 16-ричной системе. Тогда числитель должен быть (13200000000/20000000)*536870912=354334801920. Имеем N_DEN=536870912, а N_NUM=354334801920.
Фтопку такое решение. ГУН делить надо ЦЕЛОЧИСЛЕННО. А вы предлагаете использовать дробный коэф.деления. Ну вот и получите фазовые шумы выше чем надо.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 12:46:39 am
А вы предлагаете
А Вы что предлагаете? Пример в студию lol22.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 07:34:22 am
Генератор легко меняет и плл и делители.
Название: Re: si5340A
Отправлено: Relayer от Июль 09, 2019, 08:49:46 am
Генератор легко меняет и плл и делители
При чем тут это? Использовать этот кипятильник только затем, чтобы дробными коэффициентами довести его до уровня 5351 - это нонсенс.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 09:07:39 am

я проверил у меня целочисленное использование генератор ставит.
 * 0x0A04[4:0]   N_PIBYP              1                  0x01

Если нужно все коэфф менять то нужно ставить дробное.

Информация набирается.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 09:08:47 am
Использовать этот кипятильник только затем

он теплый. правильная печатка и всё ок )))
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 09:51:27 am
Генератор легко меняет и плл и делители.
То, что Вы выделили красным, это делители PLL, а оппонент очевидно (хотя не уверен) имел ввиду N-делитель.
 
Приведенное  мной выражение в 77 посту не годится, а именно вот эти строки:
m_num = pllFreq/ m_denom;       //Значение числителя делителя PLL.
num=(pllFreq/z)*denom; //Значение числителя N_NUM.
 
Это так, экспромтом выдал. Это годится для "красивых" чисел.  Надо уходить от деления.. А так оно работает, но есть серьезная погрешность. И еще один момент учтите. При расчете делителей PLL однажды пропал сигнал. Частота PLL по расчету тогда была 13120000000, да плюс погрешность генератора. И думается мне, что я попал на частоту на которой генератор не запустился (нет захвата или что там может быть). Поэтому загрузил  значение M_NUM и M_DEN напрямую.  Может генератор вовсе не 80 мгц, а далеко, может погрешность при расчете коэффициентов. Возможно проще  вычислить для каждого диапазона дельту для N_NUM. Потом ее прибавлять или вычитать от какой-то центральной частоты. В общем, пока не совсем очевиден путь. Кстати есть и еще один режим - увеличивать или уменьшать частоту в микросхеме можно дергая одну ногу...
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 10:13:43 am
При расчете делителей PLL однажды пропал сигнал
Это превышен ppm, там об этом написано что генерация срывается .

Я тут начитался.... при SOFT_RST вообще вся генерация срывается на короткий промежуток (щелчок будет если напрямую использовать без синтезатора) 

Я тут провел эксперимент (пока в экселе) если изменять N0_NUM на одну единицу, Fout меняется на... 11999999,9999898Гц с 12МГц
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 10:37:08 am
Я тут начитался.... при SOFT_RST вообще вся генерация срывается
Такие щелчки я наблюдал в синтезаторе на Si5351A. Там в библиотеке был Reset PLL. Когда его убрал щелчки прекратились, на работу синтезатора не повлияло.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 10:52:39 am
Владимир, я не могу понять, NUM  в каких пределах менять можно?  0..44бит? Тогда Fout может от 0.1..13.5ГГц при изменении только NUM и при этом NUM  не должна быть меньше чем 10*DEN
Название: Re: si5340A
Отправлено: Relayer от Июль 09, 2019, 10:58:34 am
Такие щелчки я наблюдал в синтезаторе на Si5351A. Там в библиотеке был Reset PLL. Когда его убрал щелчки прекратились, на работу синтезатора не повлияло.
PLL надо ресетить если меняется коэф. деления в петле PLL. Если меняется выходной делитель - то не надо. Поэтому код должен быть "умным" и ресетить PLL только тогда кода надо (у меня для 5351 и 570 к примеру так и сделано)
оппонент очевидно (хотя не уверен) имел ввиду N-делитель
Да, оменно о нем и идет речь. Он должен быть целочисленный
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 11:29:11 am
Владимир, я не могу понять, NUM  в каких пределах менять можно?  0..44бит?
Да нет, почему только 0..44. Сколько угодно в пределах разрядности числа. Главное не уйти от частоты на которой способен генерить PLL. То есть, это зависит от тактовой частоты. Исходя из нее надо считать делитель так чтобы частота на выходе PLL, была где-то в районе 13200000000 (честно говоря я не нашел в даташите сколько точно и в каких пределах, но кто-то на CQHam вроде привел цифры 10%, но мне кажется это много). Короче говоря, я нигде не видел, чтобы было сказано, что частота PLL, была например 14000000000....12000000000. Ну и еще. Как я понял из даташита, нельзя резко менять частоту PLL. То есть при однократном изменении на 250 pmm и более. Для захвата нужно время, хотя не знаю, что там за структура. Скорее обычный LC? Опять же -есть такое понятие как полоса захвата (если к этой структуре ее можно прицепить, хотя наверно можно...)
Как я писал выше, с рассчитанной программой частотой PLL 13120000000 сигнала на выходе не было. То есть, очевидно я ушел в сторону. Может из-за частоты кварцевого генератора. В Si5351A таких случаев не было, там работа генератора была возможна от 600 до 900 мгц, то есть пределы большие были.
надо наверное поиграться с программой ClockBuilder. Что он там выдает, при разных заданных значениях?
В м/с есть еще одна фишка - мониторинг узлов (например LOS XAXB, то есть отсутствие тактовой частоты на входе фазового детектора). Таким образом, можно запрограммировать микросхему так, что она будет выдавать признак (флаг) в регистре, где именно пропал сигнал. Причем можно вывести не только в регистр (мне проще туда, так как дорожки от нужного вывода у меня на плате нет), но и на ножку микросхемы. Но это я особенно не изучал. Так мельком. Думал воспользоваться если не будет выхода, но оно не понадобилось. Да и так времени много уходит. Я не могу заниматься программированием ради самого программирования. Хотя это занимательно, но не более того.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 11:57:41 am
Минутку, давайте разберемся.
Там два вида регистров,
пара за ПЛЛ отвечает (если не прав поправьте) это:
* 0x0235[43:0]  M_NUM                283467841536       0x04200000000
 * 0x023B[31:0]  M_DEN                2147483648         0x80000000

А есть регистры делителя:
 * 0x0302[43:0]  N0_NUM               1181116006400      0x11300000000
 * 0x0308[31:0]  N0_DEN               2147483648         0x80000000

ПЛЛ выставили разок и всё, пусть стоит.
А вот с N0_NUM стоит поиграться. (он 44 бита) и N0_DEN (32 бита)

Frequency Plan
 * ==============
 * Priority: OUT0 is lowest jitter output
 *
 * Fpfd = 100 MHz
 * Fvco = 13.2 GHz [ 13 + 1/5 GHz ] <--- это M_NUM, M_DEN
 * Fms0 = 24 MHz
 *
 * P dividers:
 *    P0  = Unused
 *    P1  = Unused
 *    P2  = 1
 *    P3  = Unused
 *    Pxaxb = Unused
 *
 * M = 132 <---- это что за хрень
 * N dividers:
 *    N0:
 *       Value: 550 <-это походу N0_NUM/N0_DEN
 *       Skew:  0.000 s
 *       OUT0: 12 MHz
 *    N1:
 *       Unused
 *    N2:
 *       Unused
 *    N3:
 *       Unused
 *
 * R dividers:
 *    R0 = 2 <- это выходной делитель (классная штука для синта)
 *    R1 = Unused
 *    R2 = Unused
 *    R3 = Unused
 *
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 12:06:56 pm
* M = 132 <---- это что за хрень
M_NUM/M_DEN=132
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 12:16:27 pm
Или Fvco/xtal=13200000000/100000000=132
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 12:23:23 pm
Вот нашел !

Допустимый диапазон N делителей - от 10 до 4095, а значение N делителя = N_NUM / N_DEN, где N_NUM - 44-битное значение, а N_DEN - 32-битное значение.

вот здесь и должно быть целочисленное деление.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 12:49:14 pm
воооооот уже что-то
это значит, что в целочисленном изменении шаг может быть (от 10 до 4096 = NUM/DEN) 2178Гц -что очень мало. Теперь надо добавить R выходной делитель.  Номер не пройдет, не хватит стартовой частоты чтобы сделать изменения хотя бы на 2Гц  выходными делителями.
В принципе у меня нет цели сделать  чистый сигнал ведь у нас опора для синта, а там ...пофиг на фазовый шум и палки.

А если замарочится и сделать чистый сигнал то придется двигать плл, а там что-то с калибровкой....300мс (может и не надо его калибровать) но SOFT_RST придется делать, а он останавливает генерацию.
Короче своеобразный тупик. Хотя если всетаки менять плл то можно все красиво сделать ...наверное.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 12:57:36 pm
Допустимый диапазон N делителей
Я это не заметил.. Ну для наших целей вполне.. 13200000000/10 = 1320000000, или 1320 мгц, вряд ли понадобится, да и микросхема не выдаст. 13200000000/4095=примерно 3,2 мгц. То же нормально, а если много, есть еще R.
быть целочисленное деление.
Ну давайте прикинем..
Например надо 21,0 мгц. 13200000000/21000000=628 с копейками. Если возьмем 628, то частота на выходе будет 13200000000/628=21,019,108 мгц. Устроит 19 кгц уход в сторону? Попробуем 629, имеем 13200000000/629= 20,985,691. Те же 15 кгц.  Так что придется объявить конкурс на лучшее решение. В качестве приза - пиво, виртуальное 123123.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 02:46:57 pm
Хотя если всетаки менять плл то можно все красиво сделать ...наверное.
Вот что выдал ClockBuilder. Частота опорника 80 мгц, частота выхода 20,00404 мгц. Ну и где здесь целочисленное деление?
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 05:05:41 pm
Приращение 20 Гц не получится, Вы же сами посчитали выше
Только через float
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 06:28:07 pm
Полностью рабочие процедуры!!! 123123 123123 123123 123123
 lol22 lol22 lol22 lol22


void saveReg5340A(void) {//ini 5340


    char buf[20];
    uint8_t x[2];//3
    uint8_t y[2];

    for (int i = 0; i < SI5340_REVD_REG_CONFIG_NUM_REGS; i++) {
        x[0] = 0x01;
        x[1] = (uint8_t) (si5340_revd_registers.address >> 8);

        y[0] = (uint8_t) (si5340_revd_registers.address & 0x00ff);
        y[1] = si5340_revd_registers.value;

        if (i == 6) HAL_Delay(500);

        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);
        };
//
//        sprintf(buf, "%06d", i);
//        BSP_LCD_DisplayHStringAt(0, 80, (uint8_t *)buf, LEFT_MODE);

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


    }


    //N_PIBYP

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

    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] = 0x04;
    y[1] = 0;
    while (HAL_I2C_Master_Transmit(&hi2c3, 0b11101000, (uint8_t *) &y, 2, 500) != HAL_OK) {
        BSP_LCD_DisplayHStringAt(0, 20, "err wr 5340 filling", LEFT_MODE);
    };


    //Write SOFT_RST = 1 (0x001C).

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

    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] = 0x1c;
    y[1] = 1;
    while (HAL_I2C_Master_Transmit(&hi2c3, 0b11101000, (uint8_t *) &y, 2, 500) != HAL_OK) {
        BSP_LCD_DisplayHStringAt(0, 20, "err wr 5340 filling", LEFT_MODE);
    };


}



void si5340aSetFrequency_1(uint32_t freq) {

    uint64_t num;
    uint32_t denom=2147483648;
    uint64_t pllFreq = 13200000000;
    num=(uint64_t)(pllFreq*((float)denom/freq));

    send5340(0x03, N0_NUM, N0_DEN, num, denom);

}

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[6] = (uint8_t) ((P1 & 0xFF0000000000) >> 40);
    y[5] = (uint8_t) ((P1 & 0x00FF00000000) >> 32);
    y[4] = (uint8_t) ((P1 & 0x0000FF000000) >> 24);
    y[3] = (uint8_t) ((P1 & 0x000000FF0000) >> 16);
    y[2] = (uint8_t) ((P1 & 0x00000000FF00) >> 8);
    y[1] = (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);
    };




}
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 06:32:07 pm
Игорь, принимайте работу  123123

10мгц 20мгц и 17.....мгц

(холмики от БП)
Название: Re: si5340A
Отправлено: Relayer от Июль 09, 2019, 06:38:17 pm
Вобщем покопался в мануале по диагонали. В reference manual (Si5341-40-D-RM.pdf) на 32й странице написано вот что
Цитировать
7.2 Using the M Divider for DCO Applications
The VCO can be treated as a DCO by changing the value of the M feedback divider. By changing the M divider, all the output frequencies will change by the same amount in ppm. Changing the M divider is only valid for small changes in the output frequencies. Contact Silicon Labsfor assistance in the implementation of this capability.
Собственно этот M-feedback задает коэф.деления в петле ФАПЧ и определяет на какой частоте работает ГУН. Так как ГУН у нас только один (в 5351 например их два) то сформировать с низким ФШ сигнал мы сможем только один (с целочисленным делителем в MultiSynth). Остальные частоты будут с более высоким уровнем ФШ т.к. придется использовать дробные делители.
Дальше в принципе все понятно. Для требуемой частоты выбираем целочисленный делитель (при этом ГУН на максимум надо выводить). При плавной перестройке меняем в небольших пределах делитель M - он всегда дробный. Вопрос в каком диапазоне вы его можем менять без ресета ФАПЧ и не будет ли там каких артефактов пока остается открытым
Название: Re: si5340A
Отправлено: Игорь 2 от Июль 09, 2019, 06:55:26 pm
Игорь, принимайте работу

По мусору - вполне, по фазовым шумам смотреть нужно, но получить их хуже -130 дБ/Гц, полагаю, вряд ли возможно, а этого хватит для моих синтезов... cr123
А шаг какой получился? Полгерца есть?   123123
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 07:29:20 pm
0.0002гц
Название: Re: si5340A
Отправлено: Игорь 2 от Июль 09, 2019, 07:32:35 pm
Более чем... 1yep pl33 lol22
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 08:33:29 pm
num=(uint64_t)(pllFreq*((float)denom/freq));

С Вашим кодом дает большую ошибку, а вот так:
num=(uint64_t)((float)pllFreq/(float)freq)*denom;    получается правильный результат (хотя возможно чудит компилятор, такое с ним бывает...)
Все же проверьте калькулятором.. Причем не только в симуляторе дает ошибку, но и в железе.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 08:40:49 pm
Это уже исправленный вариант. В начале вообще приведение не делал так на 20 мгц ошибка 1 мгц была  44443
А так нормуль. Он uint переделал в float и поделил на uint , результат float. Ну частотомером проверял - все точно .
Вы запустили?
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 08:44:36 pm
У вас ошибка
Uint64_t нужно весь результат приводить , а не только результат деления
Это у вас ошибка из-за округления в промежуточном результате будет . Так не стоит делать . Только итоговый результат нужно по итогу обрезать . Я кстати на калькуляторе прогнал и получил тот же num что сам буилдер посчитал
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 09:04:25 pm
Uint64_t нужно весь результат приводить , а не только результат деления
Вы что скобок не заметили? Подставьте не "круглое" значение. Я вводил несколько цифр частоты. Ведь по своей сути формулы абсолютно одинаковы. Но Вы делите маленькое число "denom" на  частоту, которая почти равна ему, и здесь будет погрешность. И потом эту погрешность Вы умножаете на очень большое число. Вот скрин экрана симулятора с Вашей строкой. Прикиньте на калькуляторе. Частота задана 39000000.
А вот с исправленной строкой. Сравните результат..
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 09:09:18 pm
У вас denom за пределами приведения к uint64
Хорошо. Я проверю. Делов то на 5 минут. Только попозже. Но так для справки - изменение num на 49000 даёт изменение выхода на 1 гц всего лишь.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 09:14:14 pm
У вас denom за пределами приведения к uint64
Не может он быть за пределами. Это не я его взял "с потолка". Это Clockbuilder выдал такое значение.
Все же такая погрешность меня смущает... Боюсь это компилятора глюки. Когда Atmel ушла от AVR Studio, сейчас ейной занимается Microsoft. Они заменили полностью компилятор, убрали поддержку Avrdude. В общем много неприятностей доставили. Конечно сейчас много новых, типа 5,6 7 версий, но там много свистопер...ок . Да и тормознутые.. А Вы в чем пишете для STM. Coocos?
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 09:17:58 pm
Вы не поняли
Поставьте скобку не после деления а за denom))))  в вашем примере . Вы обрезали промежуточный результат а потом умножили его  на denom
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 09:27:48 pm
Я пишу в CLion платный
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 09:31:51 pm
Поставьте скобку не после деления а за denom
Поставил и получил то же значение, что и с Вашей строкой и оно ошибочное. Ну ладно, не будем толочь воду. У нас разные среды, потому спор беспочвенный. Мне важно получить правильный результат.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 09, 2019, 09:32:19 pm
Я пишу в CLion платный
Не, жаба давит.. lol22. Обхожусь бесплатной.. Меня сейчас беспокоит другое.. Сколько он будет считать контроллер с этими Float. Одна строчка с Float  добавила почти 5 кб программы.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 09, 2019, 09:53:33 pm
В stm32 стоит сопроцессор для float. Исполнение мгновенное 18 тактов чтоли , а без fpu 800 тактов  .
Ну смотрите по примеру что у вас :
Х=(Uint )(10.9)*10
И
X=(Uint)(10.9*10)
Есть разница ?
Название: Re: si5340A
Отправлено: Владимир_К от Июль 10, 2019, 08:35:04 am
Есть разница ?
Да, согласен.. Но у меня тут еще хуже ситуация. По моей формуле считает не правильно.  Тут Вы правы. Цифра, которую считает компьютер - 725849473024, а должно быть 726840619323. А по Вашей формуле, выдает  вообще 549755813760. Причем, число это какое-то заколдованное. Задал другую частоту - изменил на 500 кгц, а цифра эта осталась неизменной. Вот я и устроил полемику.. Вчера провозился часа три, так ничего и не добился. Примерно такая же формула (как Ваша) присутствует в расчете для Si5351A. И там мой компилятор выдает верный результат. Хрень какая-то..
Название: Re: si5340A
Отправлено: ra0ahc от Июль 10, 2019, 08:48:10 am
Разбейте на переменные. Тогда точно ошибки не будет.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 11, 2019, 08:25:42 pm
У вас denom за пределами приведения к uint64
Именно так.. Я ошибочно посчитал, что в Си для AVR есть два формата чисел с плавающей запятой. Float и double. Вот тут например информация:
https://avrlab.com/node/35
Но это оказалось вовсе не так. Случайно  при пошаговой отладке в окне со значениями переменных увидел, что и Double и Float в AVR Studio занимают 4 байта. Понятно, что из 4 байтов (32 бита) 44- разрядное число никак не получится. Потом еще где-то нашел, что в этом компиляторе эти форматы равноценны.
Но то уже мелочи. Покумекаю, если нормального решения не найду, перенесу программу на STM32.  Валяется модуль от китайцев..
Название: Re: si5340A
Отправлено: ra0ahc от Июль 12, 2019, 09:57:53 am
Посмотрите, есть у вас такая библиотека
#include <stdint-gcc.h>
она отвечает за размерность переменных.

А вообще нам такая точность не нужна. Там 4 знак после запятой Гц получается на единицу. Поэтому и 4 байта тоже хватит разрядности (в разумных пределах).
Если есть сомнения ставите long.... один пример не тормазнет систему.
Название: Re: si5340A
Отправлено: ra0ahc от Июль 12, 2019, 11:00:15 am
Под синтезатор Игоря (деление на 4) . Это значит, что выходная частота на сишке будет в 4 раза ниже нормальной частоты- это в пределах 10..20 МГц на сишке
Функции выглядят так.....


void saveReg5340A(void) {//ini 5340


//    char buf[20];

    for (int i = 0; i < SI5340_REVD_REG_CONFIG_NUM_REGS; i++) {
        if (i == 6) HAL_Delay(500);
        sendByte5340(si5340_revd_registers.address,si5340_revd_registers.value);
    }


    //N_PIBYP - дробный режим
    sendByte5340(0x0A04,0);
    //Write SOFT_RST = 1 (0x001C). -ресет
    sendByte5340(0x001c,1);

    //выходной делитель
    //The R dividers are with the output drivers and are even integer dividers.
//0x024A-0x024C R0 Divider
//24-bit Integer Number. Divide value = (R0_REG+1) x 2 !!!!!!!!!
//To set R0 = 2, set OUT0_RDIV_FORCE2 = 1, and then the R0_REG value is irrelevant.
//Setting R0_REG=0 will disable the divider.
    //Write SOFT_RST = 1 (0x001C). -ресет

//    0x0108 bit-2 R/W
//    OUT0_RDIV_FORC E2
//    0 R0 divider value is set by R0_REG
//    1 R0 divider value is forced into divide by 2

//при деление на 2 :
//    * 0x0112[0]     OUT0_PDN             0                  0x0 Output driver 0: 0 to power up the driver, 1 to power down the driver. Clock outputs will be weakly pulled- low.
//    * 0x0112[1]     OUT0_OE              1                  0x1 Output driver 0: 0 to disable the output, 1 to enable the output
//    * 0x0112[2]     OUT0_RDIV_FORCE2     1                  0x1

// при делении на 4 и выше  OUT0_RDIV_FORCE2 =0,  R0_REG=1......
//по этой формуде Divide value = (R0_REG+1) x 2



//ставим делитель на 4
//    * 0x0112[2]     OUT0_RDIV_FORCE2=2
    sendByte5340(0x0112,0);
 //0x024A R0_REG=1
    sendByte5340(0x024a,1);

}


void si5340aSetFrequency(uint32_t freq) {

    uint64_t num;
    uint32_t denom = 2147483648;
    uint64_t pllFreq = 13200000000;
    num = (uint64_t) ((double)denom * ((float) pllFreq / freq));

    send5340(0x03, N0_NUM, num);
}

void send5340(uint8_t page, uint8_t reg,  uint64_t P1) {
    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[6] = (uint8_t) ((P1 & 0xFF0000000000) >> 40);
    y[5] = (uint8_t) ((P1 & 0x00FF00000000) >> 32);
    y[4] = (uint8_t) ((P1 & 0x0000FF000000) >> 24);
    y[3] = (uint8_t) ((P1 & 0x000000FF0000) >> 16);
    y[2] = (uint8_t) ((P1 & 0x00000000FF00) >> 8);
    y[1] = (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);
    };
}

void sendByte5340(uint16_t add, uint8_t val){
    uint8_t x[2];
    uint8_t y[2];

    x[0] = 0x01;
    x[1] = (uint8_t)(add>>8); //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] = (uint8_t)(add & 0xff); //adress
    y[1] = val; // value
    while (HAL_I2C_Master_Transmit(&hi2c3, 0b11101000, (uint8_t *) &y, 2, 500) != HAL_OK) {
        BSP_LCD_DisplayHStringAt(0, 20, "err wr 5340 filling", LEFT_MODE);
    };

}
Название: Re: si5340A
Отправлено: Владимир_К от Июль 14, 2019, 09:10:01 pm
Для требуемой частоты выбираем целочисленный делитель (при этом ГУН на максимум надо выводить). При плавной перестройке меняем в небольших пределах делитель M - он всегда дробный. Вопрос в каком диапазоне вы его можем менять без ресета ФАПЧ и не будет ли там каких артефактов пока остается открытым
Попробовал сегодня такой алгоритм.. Делитель N вычисляется также как и в библиотеке для Si5351A.
Т.е.
 divider = pllFreq/freq;                   // PLL freq, принимаю равным 13200 MHz
   if ((divider & 1) != 0) divider--;      // Здесь делитель делаю четным. Это делитель N.
     pllFreq = divider * freq;   // Определяю новую pllFreq.  Она меняется в небольших пределах, обусловлено это округлением делителя. При этом делитель всегда целочисленный

Затем в программу ввел инкремент частоты каждый раз на 1 кгц, То есть что-то вроде ГКЧ. При изменении частоты от 30 мгц до 40 мгц на экране осциллографа картинка не стабильна. В начале развертки видно, что частота устанавливается с задержкой. В целом картинка как и при наблюдении сигнала с ГКЧ, но в начале есть какие-то неприятные моменты. Похоже, что захват частоты происходит с задержкой. Печально это, но сдается мне,  такой вариант не годится. Так это всего 1 кгц. Скорее всего PLL дергать нельзя. Сейчас попробую менять частоту только N- делителем, не трогая PLL.
Есть хорошая новость и плохая.. 123123
Хорошая, это та, что при изменении частоты только делителем N, не трогая PLL, картинка на моем осциллографе также дергается в начале развертки.
Плохая - придется искать причину 123123. Надо бы конечно, засинхронизировать развертку от стороннего генератора. Самый раз было бы от опорника 80 мгц, но плата уже покрыта лаком и ковырять не хочется..  В процессе изготовления второй вариант, с задающим генератором на небуферированной логике (sgk рекомендовал), продолжу эксперимент на ней.
И еще одна ложка дегтя.. Перестройка по частоте от 30 мгц до 40 мгц, с шагом 10 кгц происходит за 8 сек примерно. То есть расчет частоты и запись в регистры составляет примерно 8 ms. Это много, по сравнению с тем, что было на Si5351A. Надо что-то серьезно менять.
Хотя и возможностей не мало. Первое - PLL можно вообще никогда не менять, только при включении. Знаменатели делителей можно считать и загонять в регистры только при смене диапазона.. Сейчас это происходит при каждом шаге.
Название: Re: si5340A
Отправлено: Владимир_К от Июль 14, 2019, 10:36:15 pm
Вот тут видео:
https://www.youtube.com/watch?v=Cez3cH1hTDQ&feature=youtu.be
Название: Re: si5340A
Отправлено: Relayer от Июль 14, 2019, 11:08:24 pm
Срыв генерации лучше всего смотреть на цифровом ослике при очень медленной развертке делать стопкадр и растягивать анализируя переходной процесс уже в статике. Если ослик аналоговый то тут будет сложно имхо. Можно попробовать прослушать генерируемый сигнал на приемник - при срывах генерации по идее будут артефакты в виде щелчков и тп
Название: Re: si5340A
Отправлено: ra0ahc от Июль 15, 2019, 10:57:07 am
В даташите на эту сишку написано, что при изменении NUM только на очень больших перестройках может немного фаза сбиваться, а так -это самый классный режим для изменения частоты без щелчков. 
Название: Re: si5340A
Отправлено: ra0ahc от Июль 15, 2019, 10:59:12 am
картинка на моем осциллографе также дергается в начале развертки.
мне кажется это проблемы синхронизации "ослика" ))) ,а не сишки
Название: Re: si5340A
Отправлено: Владимир_К от Июль 15, 2019, 11:49:07 am
В даташите на эту сишку написано, что при изменении NUM только на очень больших перестройках может немного фаза сбиваться
Я пробовал два варианта. Картинка на осциллографе одинаковая, поэтому, скорее всего это осциллограф.
мне кажется это проблемы синхронизации "ослика"
Да там даже дело не в синхронизации. Там в начале развертки видно, что меняется скорость развертки (или частота на входе осциллографа). Но, скорее всего, это нестабильна скорость развертки в самом начале, после запуска. Может банальные пульсации питания. Осциллограф уже с почтенным возрастом.
В общем, на сегодня основная задача - ускорить работу программы.
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 19, 2019, 09:44:45 am
А кто-нибудь может что-нибудь умное задвинуть по поводу SI5351, как там валкодер прицепить, чтобы через полгерца шагала в диапазоне 10...20 МГц?  123123
И реально ли это вообще сделать, в смысле полгерца?
Это в связи вот с этим http://analogtrx.com/SMF/index.php?topic=6.msg6199#msg6199  lol22
Название: Re: si5340A
Отправлено: RadioPapa от Ноябрь 19, 2019, 10:41:35 am
Конечно можно! Ессно нужен МК , ну и перестройка возможна до 14097100,01, получается до сотки ;) единственно посмотреть по делителям, какой шаг они могут дать. Но 1.46гц разницы между двумя частотами я получаю,при установке кварца 27мгц
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 19, 2019, 12:17:38 pm
Но 1.46гц разницы между двумя частотами я получаю,при установке кварца 27мгц

У меня сейчас 25 МГц, но, полагаю, сути это не меняет. А 1.47 Гц шаг при какой синтезируемой частоте?  cr123
Название: Re: si5340A
Отправлено: Владимир_К от Ноябрь 19, 2019, 04:37:04 pm
А кто-нибудь может что-нибудь умное задвинуть по поводу SI5351, как там валкодер прицепить
Я бы посоветовал Вам купить простенькую Ардуино Nano. Вот такую например:
https://ru.aliexpress.com/item/33007308914.html?spm=a2g0o.productlist.0.0.54311a9b1SSMcS&s=p&algo_pvid=4c5c1c1a-00e1-4c4d-9b52-9176d1719104&algo_expid=4c5c1c1a-00e1-4c4d-9b52-9176d1719104-4&btsid=76646f13-d381-4b1c-9815-5c7b3752a466&ws_ab_test=searchweb0_0,searchweb201602_7,searchweb201603_52
Конечно не в Китае, долго добираться будет..
Почему именно ее? Плата имеет на "борту" преобразователь СН340, таким образом обычным USB  шнурком Вы соединяете ее с компом и загружаете файл прошивки в контроллер (там Atmega 328P). Вам только надо найти в сети драйвер для СН340, ссылку, при необходимости, я дам, и программу Xloader. С помощью этой программы Вы будете прошивать Ваш контроллер.  Тут все просто, открываете файл прошивки в программе Xloader, жмете кнопочку и все... А файл прошивки я Вам сброшу, в ближайшее время, только  лишнее уберу из программы, индикатор, кнопки и пр. Хотя это не обязательно, оно и так будет работать. Но надо изменить шаг, сейчас 1гц. Тут надо лезть в программу. Так как 1 гц это целое число, а 0,5 уже float. Можно проще - менять частоту не в пределах 10-20 мгц, а 20-40 Мгц и поделить триггером. Хотя, пардон dontt44, поделить можно и в Si5351A, там на выходе делители есть..
Вот например синтезатор простенький. Оставляем только валкодер..
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 19, 2019, 04:57:35 pm
Я бы посоветовал

Интересная мысль. А индикатор нужно отдельно покупать? Какой?
Зависов и щелчков при перестройке нет?
Название: Re: si5340A
Отправлено: Владимир_К от Ноябрь 19, 2019, 04:58:09 pm
Кстати, вроде есть Ардуино, которые питаются от 3,3 вольта (на плате вместо 5,0 вольтового стабилизатора установлен 3,3 вольтовый. тогда не надо заморачиваться с преобразованием уровней и 2N7002 не нужны. Обычными делителями на резисторах тут не обойтись, по шине SDA обмен в обоих направлениях.
Название: Re: si5340A
Отправлено: Владимир_К от Ноябрь 19, 2019, 05:04:19 pm
Какой?
Если он Вам нужен - любой двухстрочный на контроллере HD44780. Они почти все именно с этим контроллером, но иногда попадается другой..
Вот примерно такой.
https://ru.aliexpress.com/item/32897651120.html?spm=a2g0o.productlist.0.0.156b2b04BwNEWJ&s=p&algo_pvid=6c7d088c-ea0f-40d1-b50c-3b1ab1498b0d&algo_expid=6c7d088c-ea0f-40d1-b50c-3b1ab1498b0d-3&btsid=628f5ea9-01be-419f-907f-63c42945f509&ws_ab_test=searchweb0_0,searchweb201602_7,searchweb201603_52

Название: Re: si5340A
Отправлено: Владимир_К от Ноябрь 19, 2019, 05:07:01 pm
Зависов и щелчков при перестройке нет?
Нет, ничего такого я не замечал.. Но валкодеры у меня все оптические, честно говоря с механикой я не пробовал. Там дребезг, в программе я не боролся с ним, но, как правило пару конденсаторов это устраняют.
Пока не забыл.. Если Ардуино будет 3,3 вольтовый, надо озаботиться, чтобы и индикатор такой был (если они есть такие, из двухстрочных).
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 19, 2019, 05:09:16 pm
Кстати, вроде есть Ардуино, которые питаются от 3,3 вольта

Да, это интересней.... 1yep
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 19, 2019, 05:10:57 pm
Но валкодеры у меня все оптические

Да механику никто и не собирается ставить, прекрасно знаю, что это такое - портативки приходилось разрабатывать.  444tom
Название: Re: si5340A
Отправлено: Владимир_К от Ноябрь 19, 2019, 05:18:03 pm
это интересней
Да, но надо уточнить (я писал "вроде есть"), есть ли они? Там может быть проблема в том, что тактовая частота 16 мгц для контроллера 16 мгц (это вроде обусловлено связью с компом), будет ли контроллер работать от 3,3 вольта с тактом 16 мгц.
Ну вот.. есть и на 3,3 вольта. Кварц на плате 8 мгц. Но, к сожалению эта плата не имеет преобразовалеля USB. Для ее прошивки нужна дополнительная "примочка"
https://ru.aliexpress.com/item/32413050538.html?scm=1007.23534.124000.0&pvid=c6514ec0-a089-4373-a0d2-f22f98fc9175&rmsg=do_not_replacement&aff_platform=api&cpt=1574173850280&sk=3tWOnpAs&aff_trace_key=fccb3f95aa4e4339898382a77d9cae15-1574173850280-06980-3tWOnpAs&terminal_id=7ad9a07f406141b99ddd7113c9216653
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 19, 2019, 05:26:10 pm
Ладно, думаю... pl33
Название: Re: si5340A
Отправлено: veso74 от Декабрь 20, 2019, 09:33:05 am
Сколько реальное потребление чипа Si5340 по 3,3V и 1,8 шинах?

Задумал 12V->5V(Arduino)->3,3V->1,8V, но по корпус SOT-223 нисковольных стаб. (выход  ???) вероятно придется припоять объемный радиатор, как продолжение шины.

Total Power Dissipation Pd Si5340 - 680 .. 875 mW
Название: Re: si5340A
Отправлено: ra0ahc от Декабрь 20, 2019, 11:18:15 am
340 ма
Название: Re: si5340A
Отправлено: veso74 от Декабрь 20, 2019, 11:20:24 am
tnx, Сергей :).
А на двух шинах отдельно возможно измерить?
Нагревается ли стаб? Вероятно да ..., а кроме 1117 не нахожу другие скоро.

Будут конструктивные трудности у меня, я знаю с сначала ... трудности начались с поиска переходной плати, неточный заказ с моей стороны, затем с пайки ... ;) 44 вывода на 7 по 7 мм ...
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 20, 2019, 11:54:38 am
Будут конструктивные трудности у меня, я знаю с сначала ... трудности начались с поиска переходной плати, неточный заказ с моей стороны, затем с пайки
Первая плата моя была неудачной. Грелась сильно, так как размеры были маленькие. Я ее сделал практически по размерам модуля с Si5351A, который купил у QRP LAB. Делал так, чтобы просто заменить платы в трансивере. Сейчас плату переделал. Вы можете воспользоваться файлом в Layout и доработать. Но, конечно, надо бы заводскую плату.. И паять наверное удобнее  феном.
Название: Re: si5340A
Отправлено: veso74 от Декабрь 20, 2019, 12:17:25 pm
Вы можете воспользоваться файлом в Layout и доработать. Но, конечно, надо бы заводскую плату.. И паять наверное удобнее  феном.
Да, спасибо, есть в Вашем архиве :) . А платы уже не делаю, ни хим. реакт. есть, ни желание :PP Платы делаю только "резаком" - микро-дрель и сверло 0,5-0,7 мм, для теста и для удовольствия. А заводские платы хороши, но не "мой путь" в хобби :) .
Цитировать
.. Грелась сильно, так как размеры были маленькие....
Я не раз смотрел фотографии, думал даже меньше размером. Я буду иметь в виду. Мне нравятся мосты на нижней стороне и разрезанный квадрат для теплопередача. Будем копировать идеи ;) . Только чип через адаптер припоен, но металлизация есть хорошая.
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 20, 2019, 12:58:54 pm
Мне нравятся мосты на нижней стороне и разрезанный квадрат для теплопередача.
Там на фотографии мосты выполнены проволочками. На второй плате - просто 2 полоски жести, согнутая под прямым углом. Так удобнее и красивее. Но, конечно лучше на такой плате  как на Вашей фотографии. Но я в наших магазинах не нашел..
Название: Re: si5340A
Отправлено: ra0ahc от Декабрь 20, 2019, 01:09:29 pm
С 5 вольт на 3.3 и с 3.3 на 1.8 в ничего не греется . Греется очень сильно с 12 на 5 вольт.
Название: Re: si5340A
Отправлено: lamobot от Декабрь 21, 2019, 02:40:25 pm
А в чем смысл всех этих si перед dds ad98/99? Возможно я что-то пропустил.
Название: Re: si5340A
Отправлено: rtty от Декабрь 21, 2019, 04:49:46 pm
А в чем смысл всех этих si

5351 очень дешева и получше ад98хх.
5340 дорогая и в неудобном для наколенных плат и паяльников корпусе, но лучше 5351 или ад98. Лучше ли 5340, чем ад99хх - вроде прямо никто пока не сравнил.
Название: Re: si5340A
Отправлено: Relayer от Декабрь 21, 2019, 06:22:31 pm
Есть 570я которая и доставабельна и програмить ее просто. Да и опыт эксплуатации наработа приличный
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 21, 2019, 11:49:20 pm
Есть 570я которая и доставабельна
Si5340A мне прислали Silab, совершенно бесплатно, курьер домой принес. Поэтому и возник к ней интерес. Si570,  в использовании конечно проще, но ее у меня нет.
Название: Re: si5340A
Отправлено: veso74 от Апрель 08, 2020, 11:08:32 pm
Я также хвастаюсь ;):
И мой модуль с Si5340A заработал (ур-р-ра, "большая борьба" была с SMD корпусом 44QFN! :) ).
Для експеримента: с SMD-кварцевым резонатором 25 MHz, TSX-3225, для универсальности: с I2C 5V/3,3V конвертер.

Не обошлось без ошибок:
- неправильное подключение питания (5V-3,3V-1,8V-GND я включил как GND-1,8V-3,3V-5V!). Наверное из-за мое последовательно добавленого (защитного) резистора, я перестал уменьшать его значение до 13 Ом и чип "выжил" 123123.

- после 2 дня тестов без ответа по I2C (i2c_scanner) (hi! :) думал уже, что чип "сгорел" из-за ошибки питания), но перепаял с большим количеством флюсов. Чип начал отвечать по адресу 0x74 (А1 = GND, А0 = GND).

Сегодня добавил управление: Arduino UNO: на данный момент загрузка 326 регистров из файла Si5340-RevD-Registers.h, сгенерирован с помощью ClockBuilder-Pro для кварц к XA-XB (XTAL = 25 MHz), один выход (OUT0 = 10 MHz). На сегодня экспериментировал только с добавлением коррекции кварцевого кристалла (reg. 0x0205..0x0202).

Ток: 12V (через диод): 260 mA (+ Arduino UNO), радиатор нормально тёплый, могу держать там свои пальцы.
---
Мой вопрос (в частности: к Владимир_К) для последующего написания кода:

Владимир, как Вы уменьшили количество регистров до 27 при инициализации?
(напр. из ClockBuilder-Pro для одна частота есть 326 регистров). Это где-то задокументировано? Пример из нета есть (для инициализации)?

Я могу выбирать в инициализации только те регистри, которые нужны напр. с тестами, но хочу сократить варианты (могу преписать Ваши, но  "буквальное переписывание" данни - не "мой путь". А что каждая строка в документации должна быть проанализирована - это ясно - и ето часть удовольствия в хобби :) )

(Частично я использую гугл-переводчик).
Название: Re: si5340A
Отправлено: Владимир_К от Апрель 09, 2020, 12:30:54 pm
Владимир, как Вы уменьшили количество регистров до 27 при инициализации?
Нужно смотреть при сбросе чипа, в какое значение сбрасываются регистры. Если положение после сброса Вас устраивает, то и менять их нет смысла. Я где-то, возможно здесь (скорее на CQHam), исходник выложил. Но там пока ничего, кроме того, что чип генерирует качающуюся частоту от 5 до 30 мгц. А как Вы решили проблему с разрядностью. Там некоторые числа 44 разряда, а в AVR Studio 4.19 только 32 разрядные. Может в IDE Ардуино есть 64 разрядные? Правда с IDE Ардуино я мало занимался, толком не знаю ее.
Название: Re: si5340A
Отправлено: veso74 от Апрель 09, 2020, 12:40:49 pm
Я нашел давно Ваш код. Спасибо, что поделились! Вероятно, как Вь подсказали, буду читать содержимое при запуске, чтобы попытаться оптимизировать инициализацию. Но pages: 9, regs 256 - доступно много данных, даже официально объявленных в pdf.

Я в начале - сгенерирован .h файл с софта и загружаю содержание в чип. Проблема с Arduino нет, с uint/int64_t нормално работает (без обработки в некоторых функциях, напр Serial.print()). А и иначе числа можно побитово частично обрабатывать.

А сам чип оч. интересный.  Думаю, с прецизной кварцевым кристаллом (5..10 ppm) темп. х-ка удовлетворяет мне для КВ. Вчера например уход при вкл/через 30 мин бил ок. 17 Hz (на 10 000 000 Hz). Oставлю вероятно так. Мне нравится, что каждая возможная комбинация ввода/вывода отработана, необходимо или подключать что-то (хардуерно) или управлять (софтуерно).
Название: Re: si5340A
Отправлено: ra0ahc от Апрель 09, 2020, 01:03:51 pm
Уже научились плавно частоту менять? У меня не получилось , точнее получилось , но для радио не пойдёт . Сброс после смены частоты не подходит.
Название: Re: si5340A
Отправлено: veso74 от Апрель 09, 2020, 01:09:14 pm
Нужен reset, который делает помехи в радио?
Название: Re: si5340A
Отправлено: ra0ahc от Апрель 09, 2020, 01:26:07 pm
Да, частота в момент сброса улетает на десятки мегагерц и потом восстанавливает на нужную.
Название: Re: si5340A
Отправлено: Владимир_К от Апрель 09, 2020, 04:29:04 pm
Вероятно, как Вы подсказали, буду читать содержимое при запуске, чтобы попытаться оптимизировать инициализацию.
Нет, немного не так. Я имел ввиду другое.  Я просто посмотрел в документации. Там указано в каком состоянии находится каждый регистр при включении микросхемы, т.е. при старте. Во время
 инициализации Вы лишь настраиваете параметры, которые не нужно будет менять в дальнейшем.
Ну или посмотреть в файле, который выдает Clock Builder Pro. Если там в регистрах нули, то в эти регистры не надо ничего писать. Там же во время включения так и будут нули. Во-всяком случае, я не заметил, что там может быть какой либо мусор.
 
Я в начале - сгенерирован .h файл с софта и загружаю содержание в чип.
Я этого никогда не делал, да и не знаю как это делать. Я просто оттуда беру информацию, пример как нужно поступать.
но для радио не пойдёт .
Что-то этот момент я не понял. Если можно сделать генератор качающейся частоты, то в чем проблема для радио?
Название: Re: si5340A
Отправлено: ra0ahc от Апрель 09, 2020, 04:48:09 pm
Анализатором смотрители? Скачков не было? Может код покажите ? Мы вроде с вами обсуждали и у вас на тот момент не было качалки.
Название: Re: si5340A
Отправлено: veso74 от Апрель 09, 2020, 05:10:31 pm
Я этого никогда не делал, да и не знаю как это делать.
"Строка за строкой" цикл берет данные из файла и отправляет по I2C в ИС.
(заменитье ардуиновские функции I2C с те в AVR и готово).
#include "Si5340-RevD-Registers.h"
...
void setup {
for (uint16_t i = 0; i < 329; i++)
 write_reg(si5340_revd_registers[i].address, si5340_revd_registers[i].value);
}
...
void write_reg(uint16_t addr, uint8_t data) {
  Wire.beginTransmission(0x74);
  Wire.write(0x01);
  Wire.write(0xFF & addr >> 8 ;
  Wire.endTransmission();

  Wire.beginTransmission(0x74);
  Wire.write(0xFF & addr);
  Wire.write(data);
  Wire.endTransmission();
}
---
Цитировать
Там указано в каком состоянии находится каждый регистр при включении микросхемы, т.е. при старте.
Спасибо, посмотрю, нравится идея. Просто чтение/запись регистров с этими pages и 0x01: Set Page Address показалось мне "особенным", и на этот момент я не читал их еще.
Название: Re: si5340A
Отправлено: Владимир_К от Апрель 09, 2020, 07:23:25 pm
Анализатором смотрители? Скачков не было? Может код покажите ?
"Качалку" я сделал только лишь для того, чтобы определить время перестройки чипа на другую частоту. Сейчас уже не помню, сколько получилось, а макет сейчас разобран. У меня, к сожалению, на то время не получилось с STM. Две платы и ни с одной не смог заставить работать I2C. Потом вроде разобрался, поупражнялся с м/с памяти. Писал в нее, читал, вроде нормально работает шина. Но с Si5340 так и не проверил.
Анализатора у меня нет. Смотрел лишь осциллографом. Вроде нормально... А может не заметил. Но у меня нигде Resetов нет. Исходник и прошивку прицепил. Прошивка (hex-файл) в папке проекта default. Малость я запамятовал, качалка от 30 до 40 мгц.
Название: Re: si5340A
Отправлено: veso74 от Апрель 10, 2020, 12:20:32 pm
Для буква "D" в типа в .h есть что непонятные команды, но пока без них чип не сработал.
  /* Start configuration preamble */
  { 0x0B24, 0xC0 },
  { 0x0B25, 0x00 },
  /* Rev D stuck divider fix */
  { 0x0502, 0x01 },
  { 0x0505, 0x03 },
  { 0x0957, 0x17 },
  { 0x0B4E, 0x1A },
  /* End configuration preamble
  /* Delay 300 msec */
  /*    Delay is worst case time for device to complete any calibration */
  /*    that is running due to device state change previous to this script */
  /*    being processed. */  */
Необходимо и задержка напр. 300 ms.

Как и в конце:
  /* Start configuration postamble */
  { 0x001C, 0x01 },  - Ето SOFT_RST
  { 0x0B24, 0xC3 },
  { 0x0B25, 0x02 },
  /* End configuration postamble */
Недокументированные строки? ;) .
Название: Re: si5340A
Отправлено: veso74 от Апрель 10, 2020, 02:19:05 pm
Странным для меня является расчет из софта:
Для OUT1 = 10 MHz при XTAL = 25 MHz

M = 528, FVCO = 13.2 GHz, N0 = 660, R0 = 2 -> 13 200 000 000 / (660 * 2) = 10 000 000, все ОК

Но N0 = N0_NUM / N0_DEN -> 660 = 1 417 339 207 680 / 2 147 483 648
зачем не сократили дробь на 660 = 660 / 1 с N0_NUM = 660 и N0_DEN = 1?

То же самое относится к M = M_NUM / M_DEN -> 528 = 1 133 871 366 144 / 2 147 483 648
---
К код управления для ADF4351 и Si5351 у меня были те же вопросы. Я просто применил сокращение дроби (reduce the fraction to lowest terms) (когда это возможно, если нет - то масштабирования), вместо использования только максимального значения (или близко к макс. значения) в знаменателя и масштабирования.
--
P.S. С 660 и 1 попробовал к N0_NUM и N0_DEN. Работает, OUT0 = 10 MHz.
Название: Re: si5340A
Отправлено: veso74 от Апрель 10, 2020, 08:19:01 pm
Я запустил код к Si5430A с очень простым расчетом регистров для OUT0.
FVCO const = 13,2 MHz, при расчет только на N0_NUM и N0_DEN, без SOFT_RST(только один раз при инициализации, где и M_NUM и M_DEN установлены).
расчет N0_NUM и N0_DEN: без дополнительных действии по оптимизации, N0_DEN = 0x1FFFFFFF (при 0xFFFFFFFF, 0x7FFFFFFF - переполнение), с uint64_t, без fliat/double, с N0 divider update bit после загрузки данных.

Я не слышал ничего смущающего при изменении частоты ни как передатчик, ни как первой VFO на 80m и на 20m (IF = 9 MHz, UP).

Пытался видеть по крайнем мере пики, трещины при freq sweep. Картина на того, что я имею в качестве приемника, ниже. Частота 14..15 MHz, шаг 100 Hz, время переключения после изменении шага: 10 ms.

Для моих требований чип работает пока хорошо. Продолжаю писать.

uint32_t f = 14000000;
...
  set_freq(f);
  delay(10);
  f += 100;
  if (f > 15000000)
    f = 14000000;
Название: Re: si5340A
Отправлено: ra0ahc от Апрель 10, 2020, 08:22:58 pm
Круто Веселин ! Дадите потом свой расклад и последовательность действий?
Название: Re: si5340A
Отправлено: veso74 от Апрель 10, 2020, 08:50:02 pm
Нет проблема. Начин ничем не отличается от кода напр. Владимира или Вашей, и QRP-labs для Si5351. Только что загрузил некоторые регистры из .h файла из софта в инициализации. Есть много о чем подумать, напр. сейчас R неизменяемый и = 2 (не будет только с 2 работать на НЧ), FVCO должен выяснить для себя нужно ли перечислять и когда (FVCO = 13500..14256 MHz, но без четкой границы). Напр. ClockBuilder предлагал FVCO = 13,2 GHz, вне диапазона, и я написал так. Наверное поэтому потребление ниже? (260 mA)).

Попробуйте не трогать FVCO, без SOFT_RST и только вычислять N0_NUM и N0_DEN в узком частотном диапазоне, например один диапазон.
Меня почти не волнует, что PLL работает с fractional коефициентов. Разница в выходние х-ки, показанни в PDF, очень мала, и в очень далекой области, несколько dB. А такие примерно и в Si570, а знаем какой у его сигнал.

void set_freq(uint32_t freq) {
  uint32_t R_DIV = 2;
  uint64_t FVCO = 13200000000;
  uint64_t num = (FVCO * 0x1FFFFFFF) / (R_DIV * freq);

  write_reg(0x0302, num);
  write_reg(0x0303, num >> 8);   // N0 numerator N0_NUM[7:0]
  write_reg(0x0304, num >> 16);  // N0 numerator N0_NUM[15:8]
  write_reg(0x0305, num >> 24);  // N0 numerator N0_NUM[23:16]
  write_reg(0x0306, num >> 32);  // N0 numerator N0_NUM[39:32]
  write_reg(0x0307, num >> 40);  // N0 numerator N0_NUM[43:40]

  write_reg(0x0308, 0xFF);  // N0 denominator N0_DEN[7:0]
  write_reg(0x0309, 0xFF);  // N0 denominator N0_DEN[15:8]
  write_reg(0x030A, 0xFF);  // N0 denominator N0_DEN[23:16]
  write_reg(0x030B, 0x1F);  // N0 denominator N0_DEN[31:24]

  write_reg(0x030C, 0x01);  // N0 divider update bit
}
Название: Re: si5340A
Отправлено: veso74 от Апрель 11, 2020, 12:13:03 am
При FVCO = 14,2 GHz консумация тока также 260 mA при тот же OUT0 = 10 MHz. Ето хорошо. Но неиспользованные неисключенные делители в других каналах (reg 0x0A03, 0x0A04, 0x0A05) влияет прямо на консумация тока (до 320 mA достиг).
Название: Re: si5340A
Отправлено: veso74 от Апрель 13, 2020, 01:13:11 pm
Владимир_K, да, нашел я вариант чтобы избежать переполнение.
Без ULL расчет работал 1 разред меньше (до 0x7FFF FFFF FFFF FFFF). С ULL - значение до UINT64_MAX.
Значит Arduiono нормально работает с 64-битовие переменные, как uint64_t, так и int64_t. (Лично успокоился :) ).

Теперь к Si5340A масштабирование с максимальным знаменателем:
void set_freq(uint32_t freq) {
  uint32_t R_DIV = 2;
  uint64_t num = (FVCO * 0xFFFFFFFFULL) / (R_DIV * freq);
  uint8_t N_reg[11];

  N_reg[0] = (uint8_t)num;          // N0_NUM[7:0]
  N_reg[1] = (uint8_t)(num >>;   // N0_NUM[15:8]
  N_reg[2] = (uint8_t)(num >> 16);  // N0_NUM[23:16]
  N_reg[3] = (uint8_t)(num >> 24);  // N0_NUM[31:24]
  N_reg[4] = (uint8_t)(num >> 32);  // N0_NUM[39:32]
  N_reg[5] = (uint8_t)(num >> 40);  // N0_NUM[43:40]

  N_reg[6] = 0xFF;                  // N0_DEN[7:0]
  N_reg[7] = 0xFF;                  // N0_DEN[15:8]
  N_reg[8] = 0xFF;                  // N0_DEN[23:16]
  N_reg[9] = 0xFF;                  // N0_DEN[31:24]

  N_reg[10] = 0x01;                 // N0_UPDATE

  write_regs(0x0302, N_reg);        // page, start reg, data array
}
---
"Не трогаю" FVCO вчера (13,2 GHz), отправив частоту по серийному порту, получил с Si грубо 3..310 MHz. 99% моих требований к чипам удовлетворены. Я даже думаю о том, чтобы не пересчитывать М-divider, но R-divider можно добавить (2..8..32?)в расчете, напр. 500 kHz - "хорошая частота" напр. для теста с ЕМФ-ов ;) .
Название: Re: si5340A
Отправлено: veso74 от Апрель 13, 2020, 07:15:17 pm
Есть некоторое ограничение :/ 64b переменная не переполняется, но когда я отправляю к чипе при макс знаменатель, чип не работает. Помощь?

Оставляю на данный момент с 0x20000000, так умножение равносилно перемещение.

Другое: динамическое изменение М-divider не нравится: кроме необходимость мягкого сброса, так и по отношении калибрационного кварцегого коефициента: при изменение М-divider, XAXB_FREQ_OFFSET также должно изменяться пропорционально (если отличается от нуля, а калибрация всегда есть). Будем думать и собирать дальше. Для меня важно, чтобы основания функция заработала.
Название: Re: si5340A
Отправлено: ra0ahc от Апрель 13, 2020, 07:31:00 pm
Если я правильно понял у вас разрядности переменной не хватает?
Вы тогда сперва разделите, а то что получите умножите на .... fffff .... я так делал и тогда разрядности хватало double long.

  uint64_t num = (FVCO * 0xFFFFFFFFULL) / (R_DIV * freq);

FVCO * 0xFFFFFFFFULL это тяжелое умножение.

  uint64_t num = FVCO * (double long)( 0xFFFFFFFFULL/ (R_DIV * freq));
Так можно попробовать.
Название: Re: si5340A
Отправлено: veso74 от Апрель 13, 2020, 07:44:18 pm
long double у меня нет. long double с плавающей точкой? 
long double ->3.4E 4932 ... 1.1E 4932. ухуууу :)

Только float = double есть в Arduino Nano-UNO (6-7 знака после запетаи), мало, а и не хочу использовать с пл. запетаю.
Xватает разрядности в Arduino, в Serial данни ОК. Предположение: некоторой беспорядок происходит с делителям или с их загрузки
---
Остаются таким пока: uint64_t num = (FVCO << 29) / (R_DIV * freq);
Название: Re: si5340A
Отправлено: veso74 от Апрель 16, 2020, 01:25:47 am
расчет и зарядка одной частоты OUT0, по I2C 100 kHz -> 1576 us, по I2C 400 kHz -> 664 us
Название: Re: si5340A
Отправлено: ra0ahc от Апрель 16, 2020, 04:37:05 am
Время забыть про ардуину и перейти на stm32
Название: Re: si5340A
Отправлено: VA7KL от Апрель 16, 2020, 07:45:14 am
STM32F745 записывала в AD9959 по QuadSPI за 400 наносекунд. Теперь работаем над H747...
Название: Re: si5340A
Отправлено: veso74 от Апрель 16, 2020, 09:58:55 am
I2C на 100 kHz не как QuadSPI. Задержка из-за спецификации шины, а не из-за Arduino :) . Расчет примерно за 96 us.
А и не спешу нигде :) .
Название: Re: si5340A
Отправлено: veso74 от Апрель 23, 2020, 10:32:06 pm
Потребляемый ток при 4 выхода: 320 mA (изм. в 12V шина перед стабилизаторами, с Arduino UNO на 5V шини):
OUT0 = 20 000 000 Hz
OUT1 = 10 000 000 Hz
OUT2 = 7 500 000 Hz
OUT3 = 5 000 000 Hz
при установлены их соответствующими делителями: N0, N1, N2, N3, с FVCO const = 13,2 GHz

"Горячий синтезатор", и интересен. Кроме тока не вижу ничего негативного при использовании (даже как первой гет.). 
Управление относительно простое: регистры расположены один за другим. Все, что мне нужно сделать еще: автоматизировать расчет коэффициентов и для других трех выходов: OUT1, OUT2, OUT3.
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 23, 2020, 03:23:37 pm
Всем привет! Коллеги, прошу помощи в решении проблемы. Сейчас занимаюсь с Si5340A. Стал вопрос в выборе опорного генератора. У меня два модуля с микросхемой. В одном опорник на 80 мгц, фирмы Jauch, второй модуль - опорник Geyer на 100 мгц. Спектр от второго модуля на 100 мгц опорнике - шумы почти на 10 дб выше. Ну решил, что Jauch круче, прикупил пару генераторов на 100 мгц от этой фирмы.  Сегодня запаял один - шум на 30 дб стал еще выше. Причем, что интересно, по мере прогрева шум снижается, примерно на 5 дб.
В  общем вопрос такой, что применить, может кто имел дело с хорошим вариантом. Сейчас попробую спаять на небуферированной логике, на 5 гармонику.
Название: Re: si5340A
Отправлено: Игорь 2 от Декабрь 23, 2020, 03:46:51 pm
В  общем вопрос такой, что применить, может кто имел дело с хорошим вариантом.

Собирается свой отдельный генератор, к примеру тот же 3001 у меня давно уже работает (вторая электрическая гармоника), опять же, никто не мешает выходить и на третью электрическую гармонику.
Кварцы, не предназначенные для механической гармониковой работы, я бы не рискнул использовать, там есть скользкие места, тем более, при работе на частотах выше 30 МГц.  123123
Если нужны сотни мегагерц опоры при минимуме шума, опять же решение однозначно - множите снаружи, и вливаете в SI.
Есть, к слову, масса монолитных копеечных фильтров на сотни мегагерц, можно ими подчищать мусор после умножения... lol22
Название: Re: si5340A
Отправлено: ra0ahc от Декабрь 23, 2020, 04:15:44 pm
У меня сишка эта испод зуется в приборе сдр от Игоря , но там и синт стоит Игоря и с шумами там проблем нет. Сишку  я третировал 120 МГц  генератором обычным смд. Увод частоты не проверял. Для прибора эта микруха  перебор . Да и греется она... хотя вы в курсе
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 23, 2020, 04:18:57 pm
Спасибо, попробую.. Но придется добавлять  на плату что-то, поэтому попробую затактировать просто от кварца. Время поджимает. Думал по-быстрому  вопрос решить. Вчера заказал генераторы, сегодня получил... фуфло.
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 23, 2020, 04:24:39 pm
У меня сишка эта испод зуется в приборе сдр от Игоря , но там и синт стоит Игоря и с шумами там проблем нет.
Наверное будут проблемы, если шум на 30 дб выше, чем имеет копеечная Si5351A.
Видел Вашу плату синтезатора. Впечатляет. Сам бы собрал такую, но вопрос печатки... Вы тоже писали, что генераторы плохие у китайцев купили?
Название: Re: si5340A
Отправлено: Игорь 2 от Декабрь 23, 2020, 04:25:25 pm
Да, как раз, когда первые DDS пошли, где-то в конце 90-х по-моему, ко мне Сергей Макаркин часто с ними приезжал фазовые щумы мерить при тактировании от готовых генераторов.  1yep
Смотрел, грустил, уезжал, приезжал с новыми, опять грустил, а потом плюнул и говорит - любителям и так пойдёт, или, что-то, типа того...
 44443 lllol
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 23, 2020, 04:46:05 pm
а потом плюнул и говорит - любителям и так пойдёт
Вот так оно и идет, до сих пор..
Название: Re: si5340A
Отправлено: Игорь 2 от Декабрь 23, 2020, 04:52:55 pm
 1yep cr123 44443 pl33 lol22
Название: Re: si5340A
Отправлено: Ut1lw от Декабрь 23, 2020, 05:17:05 pm
, а потом плюнул и говорит - любителям и так пойдёт, или, что-то, типа того...
Помню лет двадцать тому, Сергей продвигал их в эфире. И я договаривался, но не сложилось. Он убедительно их освещал. Про Игоря не упоминал. dontt44
Название: Re: si5340A
Отправлено: Игорь 2 от Декабрь 23, 2020, 05:24:35 pm
Про Игоря не упоминал.

Да я ж и не участвовал в процессе - только шумы мерил.  cr123 Он упоминал меня, как одного из купивших.  1yep
По совместной договорённости, чтобы двинуть его бизнес - реально я не покупал, нафига мне нужна пародия на синтез, у меня тогда шли UMA1014T с кучей ГУНов, там с различными наворотами более-менее нормально всё выходило... cr123 lllol
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 23, 2020, 05:35:47 pm
По совместной договорённости, чтобы двинуть его бизнес - реально я не покупал
А Чубайс участвовал  в компании? Вон откуда ноги растут cr123.
Название: Re: si5340A
Отправлено: Игорь 2 от Декабрь 23, 2020, 05:39:26 pm
А Чубайс участвовал  в компании?

Да фиг знает, с кем он там ещё договаривался... cr123
Название: Re: si5340A
Отправлено: Владимир_К от Декабрь 23, 2020, 06:30:46 pm
у меня тогда шли UMA1014T с кучей ГУНов
Наверное и сейчас бы нашла микросхемка применение. Вместо опорного кварца - ДДС. Ну и Гуны. Остальное на борту все есть.
Название: Re: si5340A
Отправлено: Игорь 2 от Декабрь 23, 2020, 08:16:40 pm
Наверное и сейчас бы нашла микросхемка применение.

Да, наверное.  1yep Оно раньше так и было - частоту сравнения под максимум загоняли, и опору водили туда-сюда, чтобы непрерывность сделать. Довольно сложно было заставить правильно делить - на низких частотах (в районе 50...100 МГц) при синусе цепляла непойми что, как, впрочем, и большинство подобных синтезаторов более позднего периода, приходилось искусственно искажения вводить отдельным каскадом... dontt44
Название: Re: si5340A
Отправлено: rtty от Май 18, 2021, 12:27:27 pm
Попалась информация об еще одной мелко-смдшной СИшке - SI5328 , обещают на 150МГц @10kHz -128дбн/Гц.

На 10МГц по данным одного человека, кто применяет ее в с генераторах, синхронизированных по gps:
http://www.leobodnar.com/files/LBE-GPS-clock-10MHz-phase-noise.png

-125 dBc/Hz at 100 Hz
-143 dBc/Hz at 1 kHz
-150 dBc/Hz at 10 kHz
-152 dBc/Hz at 100 kHz
-155 dBc/Hz at 1 MHz



Название: Re: si5340A
Отправлено: Игорь 2 от Май 18, 2021, 12:36:00 pm
Ну да, пересчёт 150 МГц 10 кГц -128 дБ/Гц, как раз, и даёт на 15 МГц -148, что примерно, как и у меня (я до -150 у себя видел при 16 МГц), там проблема в том, что спуры лезут, а у себя я их ближе частоты сравнения (10...20 МГц) от основной частоты физически получить не могу, да и там они не менее чем на 100 дБ (?) подавлены - где-то картинки и данные моноплаты выкладывал ... cr123
Название: Re: si5340A
Отправлено: rtty от Май 18, 2021, 12:38:36 pm
Понятно, что фапч фильтрует дальнее.
Все равно интересно, что такие мс начали появляться и вполне подойдут в средний-средне+ класс аппаратуры уже.
Название: Re: si5340A
Отправлено: RC3U от Ноябрь 03, 2021, 08:13:09 am
подойдут в средний-средне+ класс аппаратуры уже.
1999
Название: Re: si5340A
Отправлено: Владимир_К от Ноябрь 03, 2021, 11:51:32 am
Понятно, что фапч фильтрует дальнее.

А я всегда думал, что как раз - ближнее. А дальнее определяется ГУНом.
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 03, 2021, 12:07:16 pm
А я всегда думал, что как раз - ближнее. А дальнее определяется ГУНом.

Пожалуй, именно так. По мере расширения полосы петли, у меня мусора в самой ближней зоне точно прибавляется, в измерительном генераторе на моём синтезе я в 20 раз поднял ёмкости в ООС операционника, качающего варикапы, и, хотя потерял в скорости перестройки, ближнюю зону почистил - см. жёлтый трек, оранжевый - с оригинальными номиналами... 1yep dontt44
Название: Re: si5340A
Отправлено: Владимир_К от Ноябрь 03, 2021, 12:46:37 pm
По мере расширения полосы петли, у меня мусора в самой ближней зоне точно прибавляется,
Меня тут "достают" наводки от сети. У Вас на оранжевом треке, насколько я понял, именно они также присутствуют. Причем, иногда вроде ничего нет, иногда появляются.. Хрен знает, вроде даже от расположения макета зависит.  Возможно в этом и причина, так как именно пока на макете.
Название: Re: si5340A
Отправлено: Игорь 2 от Ноябрь 03, 2021, 01:10:11 pm
Да, там именно сетевые помехи. Устраняется экранированием и тщательной фильтрацией всех питающих напряжений. Не исключаю, что для того, чтобы их побороть полностью, потребуется пермалоевый экран... cr123