1) since XMOS features the same diode on the XTAG3, in theory it should work. If the same setup is working with the XMOS ref design then so should your version of the custom design. As a rule, just prefer to use real logic gates for such tasks.
2) For sure the CPU is XCORE-200 based with custom internal mods for voice processing but you are correct, it is a canned solution and do not see this CPU listed inside the toolchain from XMOS. That is a mixed blessing. In theory, great that you can just apply their proven firmware onto your PCB but not so great to test with simple custom code.
1) Ok
2) We understood going in that it is a canned chip, and somewhat kneecapped, but that's ok. We don't have the resources right now for custom firmware, so the chip with just the audio recording and AEC is all we really need.
3) Great choice on the target QSPI flash - you are using what they have proven already to be compatible. However, it is quite possible that they have enabled the QSPI bit at the factory (Atmel / Microchip) or @ XMOS and then applied the firmware. That is, your blank may be with the QSPI bit = "0" so you are stuck in SPI mode.
Thanks. I tried to keep as many parts the same as the reference design.
4) However, suspecting that this is not the show stopper at this time. When you power up, do you see activity on the QSPI CLK pin? The XMOS CPU is the SPI bus master so it will drive the CLK pin to clock out data from the external QSPI flash device. Check for this.
I see voltage on the CLK pin, but no pulse. I see 3.6v with my Fluke, and 460mV on my Rigol Scope, which is odd. I have a blue wire onto the CLK pin on the Flash chip, and double checked those numbers.
5) If you feel up to it, consider to flash known good firmware on your XMOS kit -> carefully desolder this QSPI flash off the XMOS kit and transplant onto your custom PCBA. Does this process allow for your custom PCBA to work?
This seems like a bad idea, at least for me. My QFN skills are not that great, and the only working board I have is the XMOS DevKit. I have an updated layout, with 0.5mm longer pins on each QFN, so I can more easily hand solder these into place. I can have new boards printed, mostly assembled and in my hands in a week.
6) One concern that is still active is that you noted that had to manually pulse the #RESET line. That almost indicates that the power sequencing may be a factor. Again, best to follow the preachers @ XMOS as they have gone through all of these stumbling blocks already. Clone what works for them.
I looked again, and I copied their power sequence as far as I could tell.
If the XMOS QSPI flash allows for your custom PCB to work -> then take your fresh Atmel FLASH and apply onto your XMOS kit. Do you follow the same xflash command line procedure on the XMOS kit and the flash is able to be programmed with the passed .xe firmware?
So to rephrase, you can xflash your external flash memory device with the same command line values & XMOS KIT -> the tool does not complain? Then you can power cycle the XMOS kit and it simply works for you? If yes, there is still something kooky with your custom PCBA. The quick check will be to take the programmed flash from XMOS kit and apply on your PCB and test the power up operating mode.
I'm doing the exact same procedure to flash the Devkit as my custom PCB and it works flashing the DevKit. I just tried it again, and it was successful.
Code: Select all
bash-3.2$ xflash --id 0 "XM-013830-SM-F-XVF3510 Adaptive USB Firmware binary.xe"
xflash: Warning: F03148 --quad-spi-clock not given, using default 15.62MHz
Site 0 has finished successfully.
bash-3.2$
I'm using the up arrow in Terminal to run the same code on my flash chip and the DevKit.
7) In comparing to the XMOS ref design, can you clone the resistor values for the 1v0 rail? The values are not the same on your custom PCB. Perhaps the ratios are close enough but again, verify that the 1v0 rail is spot on stable.
My 1v rail is very stable at 1.0v (measures 1.004v on Fluke). In the datasheet for the XVF-3510, they call for 1.5amps on the 1v0 rail. The buck they use on the DevKit only provides 1.0amps. The buck I chose
MP2359DJ-LF-Z provides 1.2amps, is cheaper, and JLCPCB considers it one of their basic parts.