Reply 120 of 136, by wiretap
- Rank
- Oldbie
I'll look into that chip when I get a moment to see what the issue could be. That's definitely odd
I'll look into that chip when I get a moment to see what the issue could be. That's definitely odd
I have ordered a few more of these SI5351 ebay units with the "5351M" chips to ensure they programme without issue. It feels like the Mouser chips are somehow locked or need to be initialised before they can be used. It's too bad because I have 10 of them.
Plan your life wisely, you'll be dead before you know it.
It could be the i2c address that needs to be set first. I don't see a difference otherwise. The MS5351M vs Si5351A are shown as a direct substitution for each other, with the M just having some slight improvements in phase noise levels at higher frequencies, however it consumes about 8mA more current.
Edit.. nope they use the same i2c address according to this testing: https://qrp-labs.com/synth/ms5351m.html
The facing issue is certainly peculiar. However, I finally received a few more of the "5351M" chips from China and will assemble a few PCBs to ensure that they are working. Then, I will place the SI5351A chips in place of the 5351M chips to re-check that the units stop working. I'll then update this thread after the testing.
Unfortunately, as often is the case, I am already in the middle of another project that I would like to finish up first.
Plan your life wisely, you'll be dead before you know it.
I managed to get 5 of these guys assembled but there were some setbacks and challenges, listed in no particular order.
1) Finding machine pin leads of the correct length and width so that the final module sits flush with the socket.
2) Assembly took a long time.
3) Don't get too casual with hot air on 0.80 mm thick PCBs. It warps the PCBs.
4) I could not programme the Mouser sourced Skyworks SI5351A-B02075-GT clock generator using two different Arduino Uno's, nor using an ATTINY85. I ordered another set of four SI5351 clock gen PCB's from eBay/China which contain a 5351M chip, which I was able to programme beautifully. I have ten SI5351 chips from Mouser I cannot use, along with ten 3.3V VRMs, twenty MOSFETs, etc. It's the price of experimentation. For subsequent builders, if you order SI5351 PCB's from eBay, they come with most parts already, but you still need to get the step-up voltage level translator chip (IC2), and 0603 caps/resistors.
5) As for programming the ATTINY85's from the Arduino, this has always been hit or miss for me. When programming the original ATTINY85, I would get these random synchronisation errors from the Arduino IDE. Sometimes programming would just work, and at other times, the errors appear. At one point, I thought my Arduino Uno just wouldn't work with ISP programming, and my Arduino EtherTen was fine... until a few days ago when I went to programme my second batch of ATTINY85 microcontrollers. Both Arduino's couldn't programme the ATTINY85 this time, spitting out some synchronisation error. I wondered: Is it because I'm using Ubuntu? Should I try my old XP machine? It then occurred to me that I can read the binary code off the one working unit I had (from several weeks ago).
I wire it up as shown:
and use my TL866II Plus to read the binary. It can read the FLASH and EEPROM fine. As I've already soldered on the ATTINY85's to the PCB, I decided to do the same jumper wire manoeuvre on the remaining 4 units. All programmed fine using the TL866II. Unfortunately, not being able to use the Arduino IDE to programme any future ATTINY85, it means that I cannot easily change the code. As such, we are left with 1 MHz steps for each button press, 300 ms delay in the button loop, 80 MHz reset frequency, an upper limit of 110 MHz, and lower limit of 20 MHz. In fact, I don't recommend going lower than 30 MHz as the waveform starts to develop an extra bump.
I settled on the 300 ms button delay so that it was easier to time the button presses to how much extra MHz you wanted to run at. If you remove the delay, you don't know if your one press would yield 1 MHz up, or 10 MHz up. If you wire the module to a scope and 5 V supply, and hold one button down, you can see how holding the button down changes the waveform. Indeed, you see jumps after about every 300 ms, or 3 MHz per second. I tried the module with 10 MHz and 20 MHz based ATTINY85 chips and both yield about the same step rate, as visible on the scope. I didn't time it - just from eyeballing.
Now that I can no longer use the Arduino IDE for Arduino ISP programming, I could just as well cut off the 4-pin header on the top PCB layer. Does leaving the header in place cause any 'antenna' issues?
Misc. Notes.
1) It would be good to put a mark on the silkscreen to indicate where the top and bottom of the PCB is. These are so easy to get flipped around if you aren't looking at the pinouts on paper when inserting the clock gen module into a motherboard. For the prototypes, I've added some whiteout on the top edge, which is sort of visible in the first images.
2) It would also be of benefit to indicate with silkscreen which button is UP and which is DOWN. The button wiretap marked as 'A' is UP, and 'B' is DOWN.
3) Finally, I found the buttons sourced by wiretap (for CAD layout purposes) to be not so great for pushing. In the right-most module on the above image, you can see the buttons with light red. The darker red taller buttons are the ones I selected. While my buttons seem to work just fine as a substitute, it contains 5 solder pads and has some comment about having one of the pads set to GND in the datasheet.
On my original build, I cut off the lead for the button marked as 'G', but it was difficult not to get solder onto the cut stub. On the next 4 assemblies, I simpled left the 'G' stub as is and wired it to the 'A' stub. The buttons work fine like this, but would it be better to adjust the layout to fit the button? The taller red buttons are way more ideal than the flat pinky button. Less force is required and they are easier to feel with your finger. With the pinky red buttons, you may need to use your finger nail, depending on how fat your fingers are.
The digikey link for the Mitsumi buttons: https://www.digikey.ca/en/products/detail/mit … 667079/11591259
and the Mouser link for the same button: https://www.mouser.ca/ProductDetail/Mitsumi/S … 0U54xXTVA%3D%3D
I've listed both because the datasheets are different and the Mouser link also contains a PCB footprint.
Plan your life wisely, you'll be dead before you know it.
Hi folks,
Just wanted to say very cool project and want to say thanks as it was a great inspiration for my own little project to create a replacement for ICS2494 clock generator on a ET4000AX VGA card I got that had a broken one.
My project is here if it's of any use/interest to folks:
https://github.com/moogway82/ics2494-replacement
It seems to be working good so far, tho I should do more testing of the higher clock speeds and weirder video modes it supports - my 8088 based computer is unlikely to make much use of those tho!
Cheers!
The link you provided says page not found on my browser.
Plan your life wisely, you'll be dead before you know it.
feipoa wrote on 2025-07-09, 07:04:The link you provided says page not found on my browser.
How embarrassing, I still had it set as private, public now 😀
Did you have any problems programming the SI5351A chip? Where did your source yours from? I could not programme the SI5351A chips I ordered from Mouser using an Arduino Uno. I had to use Chinese sourced SI5351A chips.
Plan your life wisely, you'll be dead before you know it.
feipoa wrote on 2025-07-10, 10:24:Did you have any problems programming the SI5351A chip? Where did your source yours from? I could not programme the SI5351A chips I ordered from Mouser using an Arduino Uno. I had to use Chinese sourced SI5351A chips.
I just got it from Mouser, a SI5351A-B-GTR. I also bought a pre programmed one to try out, a SI5351A-B04963-GT, but I haven't tried that yet, was worried whatever frequency it's programmed with might upset the card, but I should give it a go to see how it compares, it was slightly cheaper at the time (Jan 2025)
Amazingly, as I didn't really know what I was doing, it just worked for me, I had to do very little troubleshooting, which was a shock as: I don't really know C very well, was using a random I2C library (which I think is an official one from Atmel/Microchip but took a lot of hunting to find) and used a fairly ancient copy of Clock builder Pro from the previous company (Silicon something) run under WINE to get the registry values! . I really thought I had set myself up for failure not just using Arduino or doing more prototype testing with a breakout board.
Feel free to try out my code to see how it does, very weird that you couldn't program the chips from Mouser, but the Chinese ones were fine, usually it's the other way round!
Happy to help if I can, I might get in touch with my friend who is interested in the clock replacement, he might be able to make up some boards and I could help do some testing with him...
Linux, Wine, and Clock Builder Pro + random IC2 library = straightforward success? Sounds like lady luck was on your side. I'm more shocked at the ability to use Wine with Clock Builder Pro, but less surprised that Clock Builder Pro is able to programme better than the Arduino. Do you recall if there was a setting in Clock Builder Pro to set one-time programmable non-volatile memory?
So you can order the SI5351A with pre-programmed values for CLK0/1/2 directly from Mouser? How do you state this when ordering? How much extra was it? I assume they are programming closed non-volatile memory?
Plan your life wisely, you'll be dead before you know it.
feipoa wrote on 2025-07-11, 07:43:Linux, Wine, and Clock Builder Pro + random IC2 library = straightforward success? Sounds like lady luck was on your side. I'm more shocked at the ability to use Wine with Clock Builder Pro, but less surprised that Clock Builder Pro is able to programme better than the Arduino. Do you recall if there was a setting in Clock Builder Pro to set one-time programmable non-volatile memory?
Ha! Yeah tell me about it - I was doing it more as a learning exercise than actually an effective way to complete the project [is it any wonder I have 1,000,000 half done projects?! 😉] - tho I did bite off more than I can chew when I tried to update simavr to add support for I2C to the USI module for ATTiny85 uC, bogged me down for a few months before I gave up!
No I don't see any setting for programming the OTP NVM from ClockBuilderPro - there is an option to contact SiliconLabs to get a quote for programming and getting a custom part number tho and I would expect that they would use some of the same export types that CBP provides to program the chips. I did look into the OTP option to see if I could do it, and I think I drew a blank on that - I think I left it as technically possible, but would need a lot of hunting for how to do it or would need specialist programmers...
So you can order the SI5351A with pre-programmed values for CLK0/1/2 directly from Mouser? How do you state this when ordering? How much extra was it? I assume they are programming closed non-volatile memory?
I don't really know about that, I didn't specify it on order. I think both Mouser and DigiKey have a service for ordering custom programmed Clock Oscillator chips, so maybe they will also be able to make Si5351A chips? I would expect it to be pricey and need big volumes however. The chips I got were just listed in the usual Mouser results and I grabbed it as I thought it might be re-programmable using the I2C method, and it was cheaper at the time - my guess would be it's just spare stock of pre-programmed chips they need to get rid of. I can see a bunch of the Bxxxx chips on Mouser at the moment, but they are either same price or weirdly more than the blank version:
https://www.mouser.co.uk/c/semiconductors/clo … =y&sort=pricing
[Quite cheap at the moment for me, £1.62 instead of the £2.20 I bought in Jan]
Anyways, best of luck and I'll see if I can rope my friend into making some of these boards up to play with too - should be about to port my code to it? - on that note, what's the best place to get the latest designs of the PCBs for this, I'm a bit out of date now and got a little lost where latest versions were sitting? Is it still wiretap-retros ones:
https://github.com/wiretap-retro/Full-Can-Var … stal-Oscillator
https://github.com/wiretap-retro/Full-Can-Var … able-Programmer
There's a lot of extra suffixes for these 5351A chips on Mouser. Maybe I just grabbed the wrong ones. I wasn't planning on looking into this anymore. I'm on summer house project mode right now.
Yes, I think those are the latest PCB's. Do you have a motherboard which takes a machine pin, DIP-14 pinout like this?
Plan your life wisely, you'll be dead before you know it.
feipoa wrote on 2025-07-12, 08:41:There's a lot of extra suffixes for these 5351A chips on Mouser. Maybe I just grabbed the wrong ones. I wasn't planning on looking into this anymore. I'm on summer house project mode right now.
Yes, I think those are the latest PCB's. Do you have a motherboard which takes a machine pin, DIP-14 pinout like this?
reading the datasheet, any number between the B & GT seems to be a pre programmed part. I've tried finding what the numbers mean wrt frequencies programmed but haven't found anything.
ergo
a SI5351A-B-GTR <- non programmed part
SI5351A-B04963-GT <- a pre programmed one, like mogwaay mentioned previously.
Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port
I had ordered several SI5351A-B02075-GT from mouser, which according to weedeewee, are pre-programmed parts with unknown frequency. I was unable to programme them. Is this the expected behaviour? I thought the OTP NVRAM wasn't a strict setting, but just a start-up setting which can be altered live, just not written to NVRAM. I suppose that anyone assembling these should try a SI5351A-B-GTR part number instead.
Plan your life wisely, you'll be dead before you know it.
Hmm that's interesting, I really should try and make another board up with the Bxxxx chip I have to see if I can get it to work. I was a bit worried that the preprogrammed ones wouldn't program, its why I also ordered a blank 'B' device as-well but I'm surprised that would be the case. The datasheet has a nice little diagram of the NVM being copied to RAM, can't see that it would then lock all the registers? Maybe the Arduino code isn't stopping and restarting the PLLs as recommended in the datasheet? A blank might not need reset as not been started?
mogwaay wrote on 2025-07-12, 14:01:Maybe the Arduino code isn't stopping and restarting the PLLs as recommended in the datasheet? A blank might not need reset as not been started?
That sounds like a reasonable assumption to me.
Plan your life wisely, you'll be dead before you know it.