¿ªÔÆÌåÓý

Re: Spurious RF at beginning of CW transmission in the uBitx


 

The "glitchless frequency changes" thing means that when clocking digital logic you don't get a runt clock pulse.
As it turns out, for small frequency changes it's a smooth transition, and a vfo sweep using an si5351?
sounds about as good as an analog vfo.? Large frequency changes will be very abrupt.?
When?transitioning to CW transmit,? clk2 is jumping? from 45mhz + operating_frequency to operating_frequency.
The si5351's internal vco remains at a constant 875mhz when using the si5351bx routines
since si5351bx_setfreq() is only messing with the output dividers.
I'd expect the output divider ratio change to be instantaneous.?

However, it does take a couple milliseconds to load all those i2c registers at 100khz for each clock.
So if the transmitter is getting turned on and then the call to si5351bx_setfreq(clk2, operating_freq) is made,
you will have an initial burst of energy for a few milliseconds at 45mhz + operating_frequency.

Here's the original firmware for the uBitx as it was shipped from hfsignals.
Note that the transmitter gets turned on with??digitalWrite(TX_RX, 1);
before any calls to si5351bx_setfreq() get made.? That's clearly wrong.
?

void startTx(byte txMode){
? unsigned long tx_freq = 0;
? digitalWrite(TX_RX, 1);
? inTx = 1;
?
? if (ritOn){
? ? //save the current as the rx frequency
? ? ritRxFrequency = frequency;
? ? setFrequency(ritTxFrequency);
? }
?
? if (txMode == TX_CW){
? ? //turn off the second local oscillator and the bfo
? ? si5351bx_setfreq(0, 0);
? ? si5351bx_setfreq(1, 0);
?
? ? //shif the first oscillator to the tx frequency directly
? ? //the key up and key down will toggle the carrier unbalancing
? ? //the exact cw frequency is the tuned frequency + sidetone
? ? if (isUSB)
? ? ? si5351bx_setfreq(2, frequency + sideTone);
? ? else
? ? ? si5351bx_setfreq(2, frequency - sideTone);
? }
? updateDisplay();
}
?

The calls to turn off clk0 and clk1 should happen pretty quick because with a frequency of 0
the only i2c register write that happens is this:??
? ??i2cWrite(3, si5351bx_clken); // Enable/disable clock
On returning to receive mode we could restore clk0 and clk1 by again only writing to the clken register,
but the extra few ms of delay incurred by writing to all those i2c registers doesn't really matter then.

Clearly, we should turn the transmitter off with
? ??? digitalWrite(TX_RX, 0);
before restoring the clocks for receive mode.

So I think the extra delay incurred by turning on the transmitter after clk2 has moved?
will be on the order of 2ms.? ?At 40 WPM, a dot takes 33ms.

I have no idea what the other firmware releases are doing,
but a good chance they are doing the same thing.
?
Jerry, KE7ER



On Mon, Jul 30, 2018 at 01:59 AM, <n1kw@...> wrote:
That seems unlikely as the Si5351 itself is very fast. As the data sheet indicates, it has "glitchless frequency changes" in the microsecond range. That is why I suspect an issue with the firmware.

Join [email protected] to automatically receive all group messages.