Can custom SigmaStudio communication plugins be created?

My project has an ADAU1701 and an STM32 microcontroller with USB device support. At the moment, I am using an USBi module to connect SigmaStudio to my board's I2C bus via exposed header pins, which does work and allows me to quickly iterate on DSP designs. However, since my microcontroller firmware would typically be using the I2C bus to do communications with other devices on the board (a display, for example), I am forced to place the micro into a state where it is NOT communicating over the I2C bus if I want to have SigmaStudio be able to successfully talk to the ADAU1701. This project is meant to be a development board for a later product, and ideally I would be able to just plug it directly into my PC and be able to iterate on the DSP design, no additional hardware required.

So here's my question: is it possible to create a custom communication plugin for use with SigmaStudio, where I could set it up to communicate to the ADAU1701 through my microcontroller via USB? Are there API headers available anywhere that would allow me to provide SigmaStudio with a DLL containing the necessary functionality for communicating directly with my custom board?

Parents
  • 0
    •  Analog Employees 
    on Apr 12, 2021 12:28 PM

    Hello Dylan,

    We do not have DLLs or other SDKs for communicating directly to the USBi. However, your micro can communicate with the DSP, as you know, so all you need to do is communicate with your microcontroller using a USB to RS232 or some other similar format that your microcontroller supports. This could be built into your board so that all you need is a USB cable. 

    After all, the USBi is simply a USB to I2C/SPI interface. We just do not give out all the control info and the design of the USBi. It uses a Cypress part and there are copyright issues etc. 

    So if you use a generic USB to RS232 converter then you can develop your own command library between the PC program and your microcontroller so it would work perfect for your appllication and in the end you will have something proprietary. 

    Dave T

  • Thanks for the reply, Dave! What you have described is exactly what I am already doing, but with the added extra step of having to export the system files from SigmaStudio and then run them through my custom PC software to transfer the data to my board. What I was hoping to be able to do is cut out the middleman - I basically want to have a custom MyDevBoard communication channel node that I can place inside SigmaStudio and then have everything work exactly as if it were hooked up via USBi, just using my own custom communication protocols. Obviously the end result would still be I2C/SPI commands being sent to the DSP, but this would allow me to remove the USBi hardware and simplify my setup.

    Note that there are already all of the evaluation boards listed in that Communication Channels group, which implies that this, or something very similar, is already being done for those boards.

    A little bit of sleuthing around in the innards of the ADIUSBi.dll shows there's a nice interface already that has functions for ReadData, WriteData, WriteByteAddressData, ResetDevice, etc. I'd simply need to know what is required to develop a plugin that SigmaStudio can load, and I could provide custom implementations of these functions that would communicate with my board using whatever proprietary communication channel I desire (USB, in this case, but maybe the next one will be Bluetooth? Or WiFi? The sky's the limit!).

    The end goal here is to allow me to keep using SigmaStudio as I am right now with the USBi hardware, just without the USBi hardware. I want to be able to do the live updating of parameter values, uploading the compiled DSP program with the click of a button, read back values, all of it. As I said in the original post, I can currently do all of those things with the USBi hardware, but I have to manually configure (or disable) my microcontroller to ensure that it is not fighting with the USBi for control over the I2C bus. Having a custom communication channel plugin would allow me to have all of the SigmaStudio commands routed through my microcontroller, which would remove any source of I2C bus contention.

Reply
  • Thanks for the reply, Dave! What you have described is exactly what I am already doing, but with the added extra step of having to export the system files from SigmaStudio and then run them through my custom PC software to transfer the data to my board. What I was hoping to be able to do is cut out the middleman - I basically want to have a custom MyDevBoard communication channel node that I can place inside SigmaStudio and then have everything work exactly as if it were hooked up via USBi, just using my own custom communication protocols. Obviously the end result would still be I2C/SPI commands being sent to the DSP, but this would allow me to remove the USBi hardware and simplify my setup.

    Note that there are already all of the evaluation boards listed in that Communication Channels group, which implies that this, or something very similar, is already being done for those boards.

    A little bit of sleuthing around in the innards of the ADIUSBi.dll shows there's a nice interface already that has functions for ReadData, WriteData, WriteByteAddressData, ResetDevice, etc. I'd simply need to know what is required to develop a plugin that SigmaStudio can load, and I could provide custom implementations of these functions that would communicate with my board using whatever proprietary communication channel I desire (USB, in this case, but maybe the next one will be Bluetooth? Or WiFi? The sky's the limit!).

    The end goal here is to allow me to keep using SigmaStudio as I am right now with the USBi hardware, just without the USBi hardware. I want to be able to do the live updating of parameter values, uploading the compiled DSP program with the click of a button, read back values, all of it. As I said in the original post, I can currently do all of those things with the USBi hardware, but I have to manually configure (or disable) my microcontroller to ensure that it is not fighting with the USBi for control over the I2C bus. Having a custom communication channel plugin would allow me to have all of the SigmaStudio commands routed through my microcontroller, which would remove any source of I2C bus contention.

Children