Для одной частоты поиграв коэффициентами и частотой кварца можно мусор до -100 дБ опустить .
Но для полосы частот это почти нереально .
Мало кому нужен синтез с перестройкой 10 кГц .
Просчитать спуры не возможно . В своё время экспериментировал с 9850 , изменение температуры микрухи
вызывало появление пораженки .
Si5351
525778 просмотров, 472 ответов — стр. 22 из 32
20 декабря 2019 г. в 05:04#316
20 декабря 2019 г. в 05:42#317
Другой софт для SDR RTL (SDRSharp), другая "красота".
Si5351, CLK0, -20 dB ATT, NT7S lib, 36 762 000 Hz, 2 mA
Si5351, CLK0, -20 dB ATT, NT7S lib, 36 762 000 Hz, 2 mA
20 декабря 2019 г. в 06:03#318
Si5351, CLK0, -20 dB ATT, файл Игорья: Si5351A-RevB-Registers.h из Si5351 ClockBuilder Pro, 36 762 000 Hz
---
Уменьшайте уровень до 2 mA.
---
Уменьшайте уровень до 2 mA.
20 декабря 2019 г. в 06:10#319
Si5351, CLK0, -20 dB ATT, UR5FFR lib, 36 762 000 Hz, 2 mA
20 декабря 2019 г. в 06:12#320
Si5351, CLK0, -20 dB ATT, упр. QRP-Labs, 36 762 000 Hz
20 декабря 2019 г. в 06:18#321
Si5351, CLK0, -20 dB ATT, LZ2WSG lib, 36 762 000 Hz
20 декабря 2019 г. в 06:22#322
Веселин, да у Игоря рыгол просто глючит :):)
PS Если не сложно сделайте еще прогон с самой свежей версией моей либы https://github.com/andrey-belokon/UR5FFR_Si5351 - там расширен диапазон до 225МГц и можно задавать пределы изменения частоты VCO
PS Если не сложно сделайте еще прогон с самой свежей версией моей либы https://github.com/andrey-belokon/UR5FFR_Si5351 - там расширен диапазон до 225МГц и можно задавать пределы изменения частоты VCO
20 декабря 2019 г. в 06:23#323
Я больше тестов о спекта Si5351 не буду делать. Никого не убеждаю. Используйте то, что считаете нужным.
---
Охо
, посмотрел "в спешке" коде в предыдущий день, увидел, что есть изменения, но не попробовал еще.
Спасибо!
Будем использовать библиотеку.
---
Для тест-генератор я дописал serial-управление, необходимо добавит там, так мне легко. Завтра попробую вероятно.
---
там расширен диапазон до 225МГц и можно задавать пределы изменения частоты VCO
Охо
, посмотрел "в спешке" коде в предыдущий день, увидел, что есть изменения, но не попробовал еще. Спасибо!
Будем использовать библиотеку.
---
Для тест-генератор я дописал serial-управление, необходимо добавит там, так мне легко. Завтра попробую вероятно.
20 декабря 2019 г. в 06:40#324
Цитата: RelayerВеселин, да у Игоря рыгол просто глючит
21 декабря 2019 г. в 02:43#325
Где-то здесь я писал, что код управления Si5351A от QRP-Lab выдает целочисленный делитель в цепи PLL и дробный N. Это не так. Это я спутал с Si5340A. Вот там я родил код с дробным N, потому и считал, что так же у меня и все программы с Si5351A. Теперь остается выяснять, чем же код от QRP-Lab отличается от других..
Вот фрагмент:
void si5351aSetFrequency(uint32_t frequency)
{
1. uint32_t pllFreq;
2. uint32_t xtalFreq = XTAL_FREQ;
3. uint32_t l;
4. float f;
5. uint8_t mult;
6. uint32_t num;
7. uint32_t denom;
8. uint32_t divider;
9. i2c_init(); // Initialise the I2C
10. divider = 900000000 / frequency;// Calculate the division ratio. 900,000,000 is the maximum internal
// PLL frequency: 900MHz
11. if (divider % 2) divider--; // Ensure an even integer division ratio
12. pllFreq = divider * frequency; // Calculate the pllFrequency: the divider * desired output frequency
13. mult = pllFreq / xtalFreq; // Determine the multiplier to get to the required pllFrequency
14. l = pllFreq % xtalFreq; // It has three parts:
15. f = l; // mult is an integer that must be in the range 15..90
16. f *= 1048575; // num and denom are the fractional parts, the numerator and denominator
17. f /= xtalFreq; // each is 20 bits (range 0..1048575)
18. num = f; // the actual multiplier is mult + num / denom
19. denom = 1048575; // For simplicity we set the denominator to the maximum 1048575
Вот фрагмент:
void si5351aSetFrequency(uint32_t frequency)
{
1. uint32_t pllFreq;
2. uint32_t xtalFreq = XTAL_FREQ;
3. uint32_t l;
4. float f;
5. uint8_t mult;
6. uint32_t num;
7. uint32_t denom;
8. uint32_t divider;
9. i2c_init(); // Initialise the I2C
10. divider = 900000000 / frequency;// Calculate the division ratio. 900,000,000 is the maximum internal
// PLL frequency: 900MHz
11. if (divider % 2) divider--; // Ensure an even integer division ratio
12. pllFreq = divider * frequency; // Calculate the pllFrequency: the divider * desired output frequency
13. mult = pllFreq / xtalFreq; // Determine the multiplier to get to the required pllFrequency
14. l = pllFreq % xtalFreq; // It has three parts:
15. f = l; // mult is an integer that must be in the range 15..90
16. f *= 1048575; // num and denom are the fractional parts, the numerator and denominator
17. f /= xtalFreq; // each is 20 bits (range 0..1048575)
18. num = f; // the actual multiplier is mult + num / denom
19. denom = 1048575; // For simplicity we set the denominator to the maximum 1048575
21 декабря 2019 г. в 03:11#326
Вот фрагмент:
А в двух словах по-русски для тупых?

21 декабря 2019 г. в 03:20#327
21 декабря 2019 г. в 04:22#328
А в двух словах по-русскиПо-русски. Я пронумеровал строки, чтобы было проще. Итак 1-8 строка. Это определения переменных. Надо растолковать компилятору, что собой представляет каждая переменная, с которой ему надо работать. Например uint32_t pllFreq; uint32_t (иногда пишут так - unsigned integer, то-есть беззнаковое целое). pllFreq32 - разрядность. pllFreq - имя переменной. Для этой переменной в памяти будет зарезервировано место - 4 байта, или 32 разряда. Вот поэтому надо сообщать компилятору, сколько разрядов содержит переменная.
9 строка - настройка модуля I2C.
Дальше основное:
10 строка. Определяем делитель, для чего делим максимальную частоту, на которой может работать ГУН, на частоту, которую должна выдать Si. Так как divider определен как целочисленный, то все, что после запятой будет отброшено. Кроме того, если он окажется нечетным, то вычитаем единицу. Это происходит в 11 строке. Дальше определяем истинное значение частоты, на которой будет работать ГУН (12 строка). Таким образом, видно, что делитель с таким алгоритмом будет целочисленным.
Дальше, в строках 13 и 19 определяем значение делителя в цепи PLL. Он представляет собой целую часть (mult), числитель дроби (num) и знаменатель 1048575. Это с "потолка". Что это за магическое число, почему именно такое. А это не что иное как FFFFF, в 16-ричной системе или 1111 1111 1111 1111 1111.
21 декабря 2019 г. в 04:26#329
Спасибо. 
В принципе, наверное, правильно, работать всё время с максимально возможным знаменателем, чтобы зря не грузить проц.
Оптимально ли это для заливки SI с точки зрения спуров - вопрос, надо будет как-нибудь глянуть.

В принципе, наверное, правильно, работать всё время с максимально возможным знаменателем, чтобы зря не грузить проц.

Оптимально ли это для заливки SI с точки зрения спуров - вопрос, надо будет как-нибудь глянуть.
21 декабря 2019 г. в 04:37#330
работать всё время с максимально возможным знаменателем, чтобы зря не грузить процЧтобы не грузить - лучше вобще не работать
А знаменатель берут максимально возможный чтобы получить максимальную точность при задании дробного делителя.