Has anyone written asm code for Windbond’s ISD1700 ChipCorder series?
I am migrating from the ISD2500 series (because of the end-of-life of that series) and am learning how to code the ISD1700 SPI commands. I have successfully managed to single step several commands and can watch the SS, SCLK, MOSI, and MISO action on LEDs monitoring the SX’s registers.
But I also have some questions and problems to resolve in getting other commands to function properly and getting multiple commands to work together.
I built a programmer board for this chip and have successfully stored and played various sound messages using the push buttons in stand-alone mode. I have also used stand-alone mode under control of the SX28 (controlling the button inputs). But my real need is to become fluent with each command in SPI mode.
SPI mode offers seamless transitions between sound messages (using a buffer) which is the feature I require in my application. (I have played with two ISD1740s in stand-alone mode under control of the SX28 manipulating sounds in the Circular Memory Architecture. While one ISD1740 was playing, the SX program set up the other ISD1740. When the current sound completed, the other ISD1740 picked up seamlessly. It worked, but required two ISD1740 chips, lots of PCB real-estate, and just wasn’t very elegant.
I have poured through the (below) documentation numerous times, always picking up something I didn’t quite understand on a previous read.
But after several weeks of trial and error, always making slow progress, I want to see if anyone else “has arrived” or is at least on the path to writing SX asm code to make this chip function in SPI mode.
I have searched the SX forum and the web in general with no hits on this subject.
I have attached my simple code that works for STEPPING a few commands INDIVIDUALLY. But for some reason, I have difficulty putting commands together (single-stepping to observe register results).
The PU command will return a MISO with SR0, bit 2 = 1 (power up).
The RD_STATUS command will return a MISO with SR1, bit0 = 1 (ready).
The DEVID command will return a MISO with Data Byte 2, bits <7:3> = 10110 (Device ID for an ISD1740).
The RD_APC command will return a MISO with Data Bytes 2 & 3 = (the default: D6 and D10 both = 1).
When I put them together the expected results fail. It seems that I will often see what looks like SR0 with the Power Up (bit 2 =1) instead of the DEVICE_ID or SR1 STATUS.
Thanking you for having read this far…and hoping you might be further up the trail. I would appreciate anyone’s thoughts or suggestions.