Si570 Set Frequency
Alfredo Mendiola Loyola
Hello:
I have found this Arduino code to set the Frequency on a si570 oscillator but it has a max frequency of 157 Mhz (#define ULIMIT 157000000UL), Is there a way to modify the source code to make it work until 440 Mhz ? I would like to set frequencies from 430 to 440 mhz. http://pages.suddenlink.net/wa5bdu/Si570_New.ino Regards Alfredo Mendiola OA4AJP
|
|
Try it:
Where did you see #define ULIMIT 157000000UL replace to #define ULIMIT 440000000UL The last band starts on 135MHz. You might need to change this value too on this code: uint32_t SiBandTable[24] = {10000000, 11000000, 12000000, 13000000, 15000000, 17000000, 19000000, 21000000, 23000000, 25000000, 28000000, 32000000, 36000000, 41000000, 47000000, 54000000, 61000000, 70000000, 81000000, 90000000, 101000000, 111000000, 128000000, *135000000*}; Try to replace the values of the bands to values of your goal. 73. On Sun, Apr 14, 2019 at 2:59 PM Alfredo Mendiola Loyola via Groups.Io <mendiola_loyola=yahoo.com@groups.io> wrote: Hello:-- QRZ: http://www.qrz.com/db/PU2CLR Skype: ricardo_caratti Mobile: +55 61 81442296
|
|
For this program it might take a bit of work. The program is set up to have
pre-calculated register values for all frequency ranges within the specified limits, so the amount of calculation required for a small change within a band is minimized. So you would need to expand the tables of values all the way up to your desired 440 MHz limit to continue with that method. There's no reason you couldn't do it, but you'd have to study the code (and/or the AA0ZZ QEX article) a bit to understand how the tables are constructed. I have expanded this basic program to one that includes display, rotary encoder, TX/RX offset and so on, but I haven't expanded the frequency limits because the version of the Si570 that I'm using is only specified to 160 MHz. Good luck with it. 73- NIck, WA5BDU On Sun, Apr 14, 2019 at 12:59 PM Alfredo Mendiola Loyola via Groups.Io <mendiola_loyola=yahoo.com@groups.io> wrote: Hello:
|
|
wb6ogd
The Si570 is a tricky beast!
toggle quoted messageShow quoted text
Craig AA0ZZ conquered the programming using pre-calculated tables like Nick said. Silicon Labs has an app note that has C code for one of their microcontroller chips. I was able to port that to a PIC using Microchip's free C compiler but it took up almost all the memory :( BUT Arduino's run C and pretty efficiently. I would get the app note and port it to Arduino. The actual code that sets the frequency is only a few lines. It is probably not as fast as the integer calculation/table method. If you could use the Si5351, there are Arduino libraries available to do it. Is easy, I have been using the Etherkit library and board for a few years now. I have both an AD9851 (DDS-60) and Si5351 in my PHSNA using modified Nick code with LCD and encoder for local standalone. It is my favorite piece of test equipment, thanks to Nick and PHSNA group!! Code is posted in the Files area. 73, Gary WB6OGD
On 4/14/2019 1:55 PM, Nick Kennedy wrote:
For this program it might take a bit of work. The program is set up to have
|
|
Alfredo Mendiola Loyola
I found this library sarfata/radiono, I think I can use it to set the frequencies on the si570.
toggle quoted messageShow quoted text
| | | | | | | | | | | sarfata/radiono Minima's Arduino software. Useful for controlling a homebrew Si570 based superhet transceiver/receiver. - sarfat... | | | 73sAlfredo Mendiola LoyolaOA4AJP
On Monday, April 15, 2019, 9:04:36 AM GMT-5, wb6ogd <garywinblad@...> wrote:
The Si570 is a tricky beast! Craig AA0ZZ conquered the programming using pre-calculated tables like Nick said. Silicon Labs has an app note that has C code for one of their microcontroller chips. I was able to port that to a PIC using Microchip's free C compiler but it took up almost all the memory :( BUT Arduino's run C and pretty efficiently. I would get the app note and port it to Arduino. The actual code that sets the frequency is only a few lines. It is probably not as fast as the integer calculation/table method. If you could use the Si5351, there are Arduino libraries available to do it. Is easy, I have been using the Etherkit library and board for a few years now. I have both an AD9851 (DDS-60) and Si5351 in my PHSNA using modified Nick code with LCD and encoder for local standalone. It is my favorite piece of test equipment, thanks to Nick and PHSNA group!! Code is posted in the Files area. 73, Gary WB6OGD On 4/14/2019 1:55 PM, Nick Kennedy wrote: For this program it might take a bit of work. The program is set up to have
|
|
Ambro_IW2FVO
Hi Alfredo, this is iw2fvo .
Years ago I got in touch with Nick WA5BDU to have some indication about the si570 control and thank to his suggestion I developed a sketch capable of controlling the SI570 in its whole frequency band ( up to 1.4 GHZ ) I did use this sketch on Arduino Nano as a VFO for my two meters FM receiver and for the APT receiver. The sketch does not requires to enter pre_computed values : it performs the calculation for each one of the required frequencies.I hope this sketch will help since I was able to generate frequencies of about 300 MHz due to the limited frequency range of my si570 chip. I will try to attach the sketch here ! Thanks Nick ! I am sorry for my bad English !!! 73, IW2FVO, Ambrogio
|
|
Alfredo Mendiola Loyola
On Wed, Apr 17, 2019 at 07:38 AM, Ambro_IW2FVO wrote:
Thank you very much Ambrogio. I will test the code. Can I share it in a GitHub repository? Regards Alfredo Mendiola OA4AJP
|
|
Ambro_IW2FVO
yes of course: mention Nick ( WA5BDU ), P.Talacchini and IW2FVO .
regards, 73 iw2fvo Ambrogio
|
|
Alfredo Mendiola Loyola
QSL
toggle quoted messageShow quoted text
Thank you. Alfredo Mendiola Loyola
On Wednesday, April 17, 2019, 11:19:07 AM GMT-5, Ambro_IW2FVO via Groups.Io <iw2fvo=yahoo.com@groups.io> wrote:
yes of course: mention Nick ( WA5BDU ), P.Talacchini and IW2FVO . regards, 73 iw2fvo Ambrogio
|
|
Alfredo Mendiola Loyola
Ambrogio,
Do I have to define this value: #define IFO_FRQ 10700000ULL // = 10.7 MHz ? If so, How Can I calculate the IFO_FRQ ? Regards Alfredo Mendiola OA4AJP
|
|
Ambro_IW2FVO
IF_offset is simply the value of the Intermediate frequency ( IF ) of your receiver .
If you want to receive 432.000 MHz and your receiver IF is 21.4 MHz then your SI570 shall output 432.000 MHz - 21.4 MHz for low side injection or it shall output 432.000 MHz+ 21.4 MHz if you use the top side injection. If you set the IFO_FRQ=0 in the code then the SI570 will output the frequency value received through the serial link ( from the IDE monitor ) without any offset. 73, iw2fvo
|
|
Alfredo Mendiola Loyola
I got it.
toggle quoted messageShow quoted text
Thank you for your help. Alfredo Mendiola Loyola
On Wednesday, April 17, 2019, 2:31:00 PM GMT-5, Ambro_IW2FVO via Groups.Io <iw2fvo=yahoo.com@groups.io> wrote:
IF_offset is simply the value of the Intermediate frequency ( IF ) of your receiver . If you want to receive 432.000 MHz and your receiver IF is 21.4 MHz then your SI570 shall output 432.000 MHz - 21.4 MHz for low side injection or it shall output 432.000 MHz+ 21.4 MHz if you use the top side injection. If you set the IFO_FRQ=0 in the code then the SI570 will output the frequency value received through the serial link ( from the IDE monitor ) without any offset. 73, iw2fvo
|
|
Alfredo Mendiola Loyola
Ambrogio,
What is the purpose of these variables: #define MIN_FRQ_DCO 4850000000ULL // = 4850MHz #define MAX_FRQ_DCO 5670000000ULL // = 5670MHz They are used in the method CalcRFREQ() Can I remove those variables from the logic of the code? Thank you. 73 Alfredo Mendiola OA4AJP
|
|
Ambro IW2FVO
Alfredo,
the DCO must stay in the frequency range provided in the si570 specification.... NO, you should not remove the limits from the code. regards, Ambrogio
|
|
Bob V
Hi Alfredo -
First off, let me admit to zero knowledge about the Si570. I think it unlikely that the device could get anywhere near to 4850MHz (=4.85 GHz). I suspect that is a typo. I do note from https://ko7m.blogspot.com/2014/04/si570-programming.html <https://ko7m.blogspot.com/2014/04/si570-programming.html>that the start up frequency of the device is 56.320MHz, roughly a factor of ten off of this number. I suspect these numbers are critical but should really be 45500KHz to 56700KHz. Those would realistically reflect the frequency range of the DCO. 73 Bob WA2I
|
|
Jim Smith
Hi Bob/Alfredo,
Further down the KO7M link you provided he states: "The internal DCO is constrained to 4.85 to 5.67 GHz determined by the internal crystal frequency multiplied by a reference frequency." So not a typo, and not to be ignored. 73 Jim - G3ZQC
|
|
Ambro IW2FVO
I do suggest to read this document:
https://www.silabs.com/documents/public/data-sheets/si570.pdf at page 14 figure 3. I confirm that there is no errors:> the DRO must stay in the 4.8 GHZ to 5.6 Ghz frequency range. As i told before the sketch is loaded on Arduino Nano and it is working as a VFO for my Two Meters FM receiver and for the APT ( around 137 MHz ) receiver. The tuning information is provided to the Arduino Nano through a serial link : >> you could use the Arduino IDE Monitor to set the desired frequency. I do really suggest to load the sketch as is, >> run it >> and then introduce the modification you need. 73, iw2fvo ciao.
|
|
Ambro IW2FVO
for a better explanation have a look at this part of the code:
//--- First checks for N1=1 and HS_DIV between 4 & 11 i=1; for (j = 0; j <= 5; j++) { f_dco = (uint64_t)Fout * (uint64_t)HS_Div_Vect[j]; if ( (f_dco >= MIN_FRQ_DCO) && (f_dco <= MAX_FRQ_DCO) ) { found = TRUE; N1 = 1; HS_Div = HS_Div_Vect[j]; HS_Div_Reg = HS_Div-4; //the value to write in Si570reg must be subtracted by 4 break; } } I do attach a spread sheet (if could be useful) . 73, iw2fvo, Ambrogio North Italy
|
|
Ambro IW2FVO
Alfredo,
I do remember you that the sketch does not use any pre_computed value to generate any output frequency. Just plug your Arduino to the Arduino IDE Monitor and command the frequency you want to have ! Of course your SI570 "type number" has to be able to generate it: >> look at the max frequency limit of your 570 . You could have it by looking at the full part number printed on the chip. 73, iw2fvo Ambrogio North Italy
|
|
Alfredo Mendiola Loyola
On Fri, Apr 19, 2019 at 04:27 AM, Ambro IW2FVO wrote:
Ambrogio, I found the information about the DCO frequency range in the si570 Datasheet. I understand how it works. I created a repository with the Version 5 of the software at: https://github.com/oa4ajp/Si570_v5 Thank for your helps. Alfredo OA4AJP
|
|