New? Sure Electronics ADAU1701 Module

Thank you Neil for your very quick reply.
ASD is a great tool but it does not fit my requirement (one speaker with 4 independent channels).

SigmaStudio is good enough for designing and my design works with AD MiniZ evaluation board.

Now the final step is : how to load the code in the EEPROM in the Sure DSP Board. Up to now no success, no communication between SigmaStudio and the board.

I continue to search and will post if I find !

See you.

GB
 
Member
Joined 2004
Paid Member
one speaker with 4 independent channels.

You might be able to use the 4-way mono configuration in ASD.

The current ASD software uses a SigmaStudio load with 8 channels of 8 biquads each, with delay and volume controls on each channel, plus 8 common biquads for overall EQ. It is a fairly robust architecture--it uses about 2/3 of the Program RAM.

But even if you don't use the ASD GUI to control the design, you can still use the SigmaStudio tools such as the EEPROM programmer. But they do require the Arduino board running the ASD companion software to do the actual programming. But of course, once the EEPROM is loaded, neither ASD nor the Arduino board is needed.

The ADAU1701 debugger is another nice tool in ASD--lets you peek into the Program RAM, Parameter RAM and Register memory. Absolutely essential for reverse-engineering other people's designs :eek: . It can also read the EEPROMs. I use it to debug Arduino programs to make sure the right data is getting written into the Parameter RAM.
 
Last edited:
Member
Joined 2004
Paid Member
I'll probably have something that will work in about month. I have a project where I will be using the ASD software and an Arduino Redboard board to control the Sure DSP. ​

Whoops--scratch that. I forgot about this board not having voltage translators for the I2C lines, and the Redboard is +5V. This will eventually "fry" the ADAU1701 -- been there and done that.

But there are other solutions. I use ASD to read the SigmaStudio compiler output and create an include file for the Arduino IDE. The micro loads that code into the Arduino at power-up. There are serial EEPROM libraries, so there won't be much code needed to put that program into EEPROM. So you can use a 3.3V Arduino like the Teensy--just need a cable to control the I2C pins on the Sure board.

I've also got a local GUI for the Arduino that I will be adapting to work with the Sure board. It's got a pretty cool "dial-a-crossover" feature, with EQ, BSC, delay and volume control.

Menu.jpg
 
A brief update on my progress, in case it helps others avoid my mistake.

I had my first shot at programming the sure board from sigma studio. At this stage I am not ready to commit the design to EEPROM, so all I want is to download and run my draft designs into the DSP.

I simply tied SELFBOOT low, and everything worked a treat ..... except I spent an hour working out why nothing seemed to work ...... sigmastudio starts the ADC in mute .... so remember to enable them in the hardware configuration tab.

And if you are a newbie to this particular subject (like me), I have found it useful to drop level meters in all the strategic points in my design. That way I can see in real time what is happening to the signal. (I must look at the I2C that sigmastudio uses for this, it might be handy to have metered points in the final design)
 
Hi Psynapse,

What driver did you install for the Cypress CY7C68013A board in Win10 and to install it ?

Win10 does not recognized my Cypress board (same as yours).

Thank you.
GB

Same problem here - the red power LED is on and I also tried the reset switch. I then followed the freeDSP information to force deactivation of driver signature on restart, but no change. Nothing shows up in Device Manager. Does it matter whether the jumper in on or off? I have just the Cypress board connected.

Thanks....
 
GB and Neil,

Sorry about the delay, Windows spent 5 hours last night on a mis à jour (update)..

OK, installing the driver was not straightforward and so why it finally worked is perhaps not 100% clear. First the easy points.
yes, the jumper must be off. Your eeprom will either have self boot code, or at least a USB user and product code identifier in it. For the analog devices drivers to work, the cypress board must identify itself as a naked processor.
a key part of the driver install is to ensure that the boot loader code for the cypress is correctly installed as per the freeUSBi instructions. Remember that the sequence is, board plugged in, windows recognises USB id, windows invokes cypress driver, cypress driver downloads to the cypress its code into cypress ram, the cypress reboots. The cypress invokes a new identity recognised by sigma studio. So many steps to go wrong.
yes, you do have to go through the freeusbi procedure to tell windows to accept unsigned drivers.

I had huge difficulty getting windows to use the correct driver ... it kept loading its own null driver, which I had to uninstall. Automatic driver install also did not work. For me i had to "update driver" and select manually. This gave three choices and ultimately i just went with the flow.

pay particular attention to reboots, of both windows and the cypress.

i will try and reproduce the install on a clean machine when I get the chance .... if either of you get it running before me, perhaps you could document the sequence (I am afraid that I am by nature a linux man)
 
Neil,

some cool code going down there. Are you in a position to share some of it? Had you thought of loading the adau1701 directly from the arduino (or pi , or..) rather than programme its eeprom? If you have a permanent link between the two it gives a more flexible approach. I am pretty certain that is how minidsp do it, a small microcontroller that loads the dsp at boot (and takes the real time data and squirts it out on USB). Of course you may already do that.
it would be also possible to do that with the cypress board that many of us are using, but it would require a fair bit of code.

On the redboard/arduino to adau connection, the USBi freeUSBi and my simple circuit will all accomodate voltage level conversion, so you idea rests a good one, I think
 
Last edited:
GB and Neil,

First the easy points.

- yes, the jumper must be off.

- Your eeprom will either have self boot code, or at least a USB user and product code identifier in it. For the analog devices drivers to work, the cypress board must identify itself as a naked processor.

- Remember that the sequence is, board plugged in, windows recognises USB id, windows invokes cypress driver, cypress driver downloads to the cypress its code into cypress ram, the cypress reboots.

Thanks for the information. My problem is that Windows doesn't recognize the board when I plug it in. No Windows response and it doesn't appear in Device Manager. From what I can tell it fails early in the USB identification process and is never assigned a USB device ID. So it must not be sending its vendor and product ids.

I'm running Windows 10 64-bit, but also tried it on another machine running Windows 7 64-bit. Same result.

I read the Cypress application note AN15456 (Guide to a Successful EZ-USB® FX2LP™ Hardware Design) and verified that CLKOUT has the expected 12 MHz output and the board's 3.3V is correct. Currently at a loss of what to do other than buying another Cypress board.
 
Hi all, I was happy to find this thread since I have one of these on order and the "instructions" for it appear to leave many questions unanswered. Hopefully we can collectively figure it all out. I don't know where mine is at the moment since the tracking system they use has not updated its status in several days. I assume there will be no updates until it goes out for final delivery, if then! I did order a little, cheap, USB to I2C interface from Digikey but until my unit shows up I won't know for sure if it will connect all the bits together and allow me to use SigmaStudio with the Sure board. If I make any progress with that I will be sure to let you know.

I am an older RF hardware engineer by trade who also plays bass guitar for a church band. My interest in the device is to see if I can use it to do some very flexible on board filtering for a bass and to just get a little exposure to the DSP world in the process. Should be fun once we solve the communication issues!
 
ern,
Not sure I can help you as much as I would like. I am a linux man, forced to use Windows for sigmastudio. Under linux I would look at the log in order to see the ident process. Know any linux freaks?
I do remember seeing something about enumeration problems when plugged into USB3. Buying another will not cost a lot, but is very irritating! Putting the jumper back on and reconnecting might be worthwhile, perhaps it will enumerate as something else
 
Last edited:
Ern,

For what it is worth, on a Linux system, the Cypress shows up like this on power on

kernel: [ 2113.908539] usb 1-3: new high-speed USB device number 4 using ehci-pci
kernel: [ 2114.040600] usb 1-3: New USB device found, idVendor=04b4, idProduct=8613
kernel: [ 2114.040613] usb 1-3: New USB device strings: Mfr=0, Product=0, SerialNumber=0
kernel: [ 2114.045570] usbtest 1-3:1.0: FX2 device
kernel: [ 2114.045584] usbtest 1-3:1.0: high-speed {control bulk-in bulk-out} tests (+alt)
mtp-probe: checking bus 1, device 4: "/sys/devices/pci0000:00/0000:00:12.2/usb1/1-3"
mtp-probe: bus: 1, device: 4 was not an MTP device

I guess if syslog does not show this you have a dead board, a dead port or a dead cable (I have plenty of these, power but no data)
 
Member
Joined 2004
Paid Member
Neil... are you in a position to share some of it?

You mean, like bending over ? :usd:

Had you thought of loading the adau1701 directly from the arduino (or pi , or..) rather than programme its eeprom?

Yes--I've made quite a few different ADAU1701 boards, and on all of them the micro loads the DSP on power-up and provides real-time control. In order for the micro to load the ADAU1701, you need to compile the code with an image of the Program RAM. That part is easy, because SigmaStudio provides a properly formatted file for the C complier. The harder part is figuring out how SigmaStudio has assigned the Parameter RAM for the processing blocks. You need to scan through one of the SigmaStudio output files and pull out that information--the cell names and the associated I2C addresses. That's what the code in ASD does for you.

There are actually 3 groups of software involved, and some will get shared and some might not:

1) The ASD code. This is a fairly comprehensive loudspeaker design program written for .NET. The source code probably won't get shared, although the executable will probably be free. And I will probably share the source code for that small portion of it that processes the SigmaStudio output.

2) The USB interface and start-up code in the micro. I've got a lot of versions of this code for different DSP's (TAS3004, STA308a/STA328, ADAU1701, etc.), and up until recently this code was written in assembly language for an HCS08-series micro. Just recently it got ported over to the Arduino IDE. This code will allow you to control the ADAU1701 in real time from the ASD program, to interactively design multi-way loudspeakers. I don't know whether to share this code or not--still thinking about it.

3) The stand-alone GUI and underlying controller for the Arduino to control the ADAU1701. You can see the GUI in that picture I posted: it lets you select between 6 different crossover types and 7 different frequencies, and it has and 11-band EQ, along with BSC control and delay. With this code, you don't need a PC to configure the DSP--just select what you need from the GUI, and the Arduino will save the state in EEPROM and boot up from that stored configuration. This code actually calculates all of the filter coefficients on demand using the micro. It's a bit slow with the standard 8-bit 16MHz Arduino, but it works. I'll probably be sharing the source code for this, but I still want to do some refactoring to make a well thought out ADAU1701/ADAU1452 library. That will take some time.
 
Neil,
Thanks for all of that. A very useful steer. And a very impressive CV.

It encourages me to get on with a Raspberry Pi interface to the ADAU1701, using I2C and I2S interfaces .... which returns to the master clock problem. I cannot decide whether to hack my minidsp (to access the i2c bus) or the sure board (to give external mclk).

Again many thanks
 
Right, I have done a second fresh install, and it was not straightforward, but I think it did highlight where my problem was.

For info, this means that I have successfully installed to both 32 and 64 bit versions of W10.

The freeUSBi instructions are correct, but perhaps need augmentation.

First an easy one. For those that do not know, the quick way to get windows to reboot into the debug mode that allows turning off driver signature verification is to hold the shift key down when clicking on restart in the menu bottom left. (page 9-10 of the manual)

I have now twice found that downloading the individual files that are needed gives rise to major problems. When I have downloaded the complete, zipped, GIT repository and used that, the problems have gone away.

And allowing windows to navigate through the sub-directories for the driver also did not work. I had to navigate to the lowest level in the directory structure.

Don't forget to install ADI_USBi.spt before trying to install the driver (page 8).

If I had to backtrack, I uninstalled the driver and deleted it. Which meant going back through the process of installed unsigned drivers.

Good Luck
 
Hi everyone,

My PC never recognize my Cypress board and it is impossible to install the drivers.

So I tested another solution with Arduino.

Tera Term displays that the EEPROM received the informations I sent.

An externally hosted image should be here but it was not working when we last tested it.


https://dl.dropboxusercontent.com/u/8513408/Test 4 volumes/Tera Term Prgm Capture.PNG

The Sure board does not work anymore, so the original code has been replaced by my code (probably...).

With Sigmastudio I designed a simple circuit : L/R input, 4 output R/R/L/L, each out channel adjusted with a volume control.

An externally hosted image should be here but it was not working when we last tested it.


I attached two screen captures and the .dspprojet file.

With Tera Term, I sent :
- the original EEPROM file generated by SigmaStudio, it seems loaded in the EEPROM (see the attached screen capture).
- the modified EEPROM file (I deleted all the "0x" and all the "," and I save it in intel format using HXD) : no file is sent. (see the attached screen capture).

All the used file are attached with this post in a zip file

Any help will be appreciated.

Thank you very much.

GBDA
 

Attachments

  • Test 4 volumes.zip
    52.1 KB · Views: 129