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

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

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

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #60 : Июль 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 автоматически.
« Последнее редактирование: Июль 08, 2019, 02:36:39 pm от Владимир_К »

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

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #61 : Июль 08, 2019, 02:29:59 pm »
Это чтож на каждую смену частоты PLL дергать
Ответа на этот вопрос я так нигде и не нашел. Но, думаю, правильно будет задать параметры делителя в PLL один раз, при инициализации микросхемы и больше туда вообще не соваться. При смене диапазона можно менять значения выходных делителей R, а изменение частоты производить только делителем N. Причем, возможно, не считать тупо все, да еще и с делениями, а ограничиться сложением. Просто к значению Numerator добавлять дельту. Будет, конечно отклонение частоты, но возможно оно будет в пределах погрешности кварцевого генератора. 
У Вас опыт большой, что посоветуете? Ну и конечно, проблема с кварцем или генератором. Сдается мне, ширпотребом, все параметры микросхемы можно им угробить...
Ну и еще одно. При использовании шины I2C, надо уходить от ожидания срабатывания модуля TWI. То есть диспетчер нужен или флаговый автомат? В которых я пока не разобрался...
А может вообще уйти от I2C и использовать SPI.
Странная штука. В предыдущем сообщении вместо 8 подставлен смайлик... Я не виноват lol22,
« Последнее редактирование: Июль 08, 2019, 02:37:50 pm от Владимир_К »

Оффлайн Relayer

  • Hero Member
  • *****
  • Сообщений: 1006
  • UR5FFR
Re: si5340A
« Ответ #62 : Июль 08, 2019, 02:47:08 pm »
У Вас опыт большой, что посоветуете?
Ничего пока не посоветую. Вот дойдут руки - тогда будет рабочий код.
В любой схеме есть как минимум одна ненужная деталь :)

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

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #63 : Июль 08, 2019, 03:07:32 pm »
Сначала загружаются регистры
В сообщении я зарапортовался.. В пошаговом режиме отлаживал, число 64 разрядное, вот и впер туда 64 разрядное.. Поэтому надо изменить с учетом разрядности, то есть нижние 2 строчки убрать.. Но оно и так работает 123123. Работает потому, что при записи Num затираются регистры Den. А потом Den восстанавливаются, так как Dеn пишется позже.  Но, конечно же, лишнее писать нет смысла. И так по времени получается критично.
« Последнее редактирование: Июль 08, 2019, 03:26:28 pm от Владимир_К »

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #64 : Июль 08, 2019, 07:39:56 pm »
Владимир, пока ваш алгоритм не работает.
Вы просто загнали регистры и получили красивую частоту. Но алгоритм пересчета здесь вообще другой. Пока я не могу ладу дать с этим алгоритмом. Но расчет DEn NUM от 5351 не катит.
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #65 : Июль 08, 2019, 07:42:09 pm »

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

и пошаговый режим тоже ....
« Последнее редактирование: Июль 08, 2019, 07:55:48 pm от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #66 : Июль 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, чтобы изменения вступили в силу.
« Последнее редактирование: Июль 08, 2019, 08:04:29 pm от ra0ahc »
Да да, я знаю, у меня ничего не получится )))

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

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #67 : Июль 08, 2019, 07:58:43 pm »
Владимир, пока ваш алгоритм не работает.
Где Вы его увидели, мой алгоритм?
 
И давно так?
Если нравится по-другому, никто не возражает. 

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #68 : Июль 08, 2019, 08:01:07 pm »
Сначала загружаются регистры с меньшим адресом, затем адрес увеличивается на 1 автоматически.
Да, вы правы, это я ступил.
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #69 : Июль 08, 2019, 08:01:35 pm »
здесь нашел
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #70 : Июль 08, 2019, 08:02:20 pm »
Где Вы его увидели, мой алгоритм?
Вы сами на cqham кидали. вот его я и кручу.
Да да, я знаю, у меня ничего не получится )))

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

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #71 : Июль 08, 2019, 08:03:01 pm »
Create a starting frequency plan using ClockBuilder Pro.
Это для фиксированной частоты. Программа выдаст коэффициенты с учетом минимального джиттера. Для нас это актуально для опорника. Для синтезатора с изменением частоты эта программа (ClockBuilder) мало что дает.

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

  • Hero Member
  • *****
  • Сообщений: 1179
Re: si5340A
« Ответ #72 : Июль 08, 2019, 08:07:28 pm »
Вы сами на cqham кидали
Несколько раз писал, что то были только начальные шаги и неудачные. Сразу было видно, что надо переделать плату, а потом ковыряться в программе. Там в программе даже адреса остались от Si5351A.

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #73 : Июль 08, 2019, 08:08:41 pm »
Время экономит здорово.
Я сделал там частоту ...получил дамп ...загнал в сишку , а дальше надо NUM менять и только его. PLL (как вы и писали) трогать не надо, 10-20 мгц я думаю можно и без изменений плл сгенерить, но надо проверить.
Да да, я знаю, у меня ничего не получится )))

Оффлайн ra0ahc

  • Hero Member
  • *****
  • Сообщений: 4872
  • Сергей, RD6AH
Re: si5340A
« Ответ #74 : Июль 08, 2019, 08:11:28 pm »
там вроде только это
Да да, я знаю, у меня ничего не получится )))