NASR-M board bring-up, TCXO adventures II
Yesterday’s TCXO drama was resolved in a more elegant way than surgery. I have always been a fan of conservative treatment, and decided to try one last option before attempting rework. That option was an AC termination of the TCXO’s signal. The datasheet doesn’t explicitly mention single-ended AC termination of the reference input, so it’s kind of a gray area, but it’s perfectly fine for bootstrapping the board. Long story short, I replaced the termination resistor R127 with a 1uF capacitor, and LMK03328 magically passed my reference signal to the output. This might not be the optimal solution in terms of stability, phase noise, e.t.c, but it kind of works for now. In the next board revision, I’ll reserve another footprint for a TCXO with a CMOS output and then compare which one performs better. I’m rooting for an existing clipped sine wave TCXO because of fast rise and fall times, but let’s see. Now I have to work on the Zephyr driver for LMK03328 to correctly configure all the dividers and multipliers for proper PLL operation. This may take some time... Schema with correction is under the cut.
NASR-M board bring-up, TCXO adventures
People who have never done a board bring-up would not understand the adrenaline rush of finding yet another bug. It’s a wild ride, just like an extreme sport. Despite your butt being glued to the chair, you get a kick just before pressing the power button on a freshly assembled circuit or when the device is finally doing what it’s supposed to do, responding perfectly to I2C control. Fasten your antistatic wrist bands, ladies and gentlemen. Our next adventure is TCXO.
NASR-M board bring-up, Zephyr driver for TCA6416 GPIO
My love for Zephyr OS grew bigger after the successful driver adventure. A few days ago, I realized that the TCA6416 I2C GPIO expander isn’t supported by Zephyr, which was a setback. The TCA6416 GPIO controls the PLL clock on the NASR-M board. I need it to configure the clock. The good news was that Zephyr supports its bigger brother, TCA6424, which has 3 GPIO cells and 24 IO’s.
NASR-M board bring-up, onboard PSU
I’ve just achieved a major milestone in board bringup. ADP5052 works! Initially, the SW2 channel wouldn't start, and I wasn’t able to fix it for quite a long time. There were no short circuits, and the load capacitance was adequate. I chased the cold joints for a while, but haven’t found any. The VREG pin was outputting 5.1V, so there was some hope I hadn’t fried the chip.
Wisdomshow WDS-420, First Blood
Once upon a time, the company that contracts me decided to speed up my work and gifted me a BGA rework workstation. But while that BGA station was in transit, an evil witch cursed it, and instead of turning on nicely, it began emitting a horrible sound like an angle grinder cutting through a stainless steel plane. Then I discovered a multitude of Chinese factories that do BGA soldering in-house, and the station sat quietly on a shelf until the mighty hero decided to fix it...
NASR-M board bring-up and Zephyr for a base controller
Zephyr firmware for the base controller is now working. I’ve spent some time setting up a device tree overlay to detect the I2C mux and the underlying devices. It works amazingly! The first thing I did after the firmware compiled initially was a shell module. Actually, it was one of the reasons behind switching to Zephyr. You can access the shell via UART, USB, or even Telnet. It’s extendable with user commands, supports tab completion, and offers many debugger features, such as I2C discovery and memory dumps. Zephyr has many advanced features, such as different schedulers, power management, and an IP stack, but what makes it attractive to me (besides the Apache 2 license) is its extensibility and hundreds of device drivers. It feels like moving away from Borland CRT to Turbovision back in the days. I was able to hook up a temperature sensor via the I2C mux with absolutely no effort. Nice, isn’t it?
New microscope, or goodbye neck pain
Today I’ve received my new microscope. It’s a Chinese trinocular branded as Eakins. It has arrived very fast and was exceptionally well packaged. Overall, I’m very content with it. The picture quality is decent, it allows interpupillary distance adjustment, and has a long boom, so long that I had to drill two holes in a pedestal and screw it to the table for stability. The seller includes an x0.5 lens in the package, providing about 25cm of space between the board and the objective. I’ve seen a lot of negative feedback on cheap Chinese microscopes on Aliexpress, but I’ve been lucky. Mine is sturdy and works like a charm. I haven’t tested the camera yet, hoping it would work with no issues. I wish that LED ring had a polarized filter, but I’ll make one myself with a cheap polarizing film.
NASR-M base controller works!
I’ve started populating the board, and the base controller worked. Although my long-term plan is to use a Zephyr, for simplicity, I resorted to a quick stub firmware written with STM32Cube that activates the ATX PSU and blinks the status LED. I’ve got the (primary) power!
The ever-growing “lessons learned” list has been updated with the following: