CSR8675 programming guide w. software and tons of CSR info

Hi, thank you very much for that link, but the software archives are crashed and I can't unpack those archives, could you repack all the software folders?

Thanks.

As stated in the PM, just reuploaded, should work this time around.

I uploaded some QCC ADK stuff to the dropbox below, there is also a newer ADK4.4.0.21 for CSR8675

thttps://www.dropbox.com/sh/h822zmawt4f29we/AACboqTgGtLwINyNvJhwrTFDa?dl=0

Could anybody share ADK4.1 and ADK4.2 with me?

Uploaded the ADK4.2 here:
thttps://www.dropbox.com/sh/h822zmawt4f29we/AACboqTgGtLwINyNvJhwrTFDa?dl=0
 
QCC3008 I2S PCM2

Hi, I'm new here but I've followed the CSR chip status for a long time.

I've just bought a QCC3008 module, is there a way to use the secondary PCM block? (PCM2)

On PCM1 I can get the output frames without issues. But I want to tune the DSP while listening and this is not possible when using SPI at the same time.

When switching the Output resolution to 24 bit the module seems to crash.
Is there a way to troubleshoot this?
 
Hi the internal data path in the 3008 is only 16 bit. Even though the DSP computes at 24. I'm not entirely sure if you can tell the i2s lines to be 24 bit but you certainly cannot configure the pipeline to the internal DACs to be 24 bit otherwise it does, indeed, crash.

To configure the secondary i2s lines, as well as route any other internal module to the PIOs, you have to alter the keys/registers in PSTool. Why they don't have this configurable in the ADK config tool I don't know.
 
NEW QCC3031 Modules

Hi All
so i purchased a bunch of the CSR - QCC 3031 Modules and an SPI programmer . i can connect to the older CSR8645 0 QCC3008 and the csr62415 no problem via the PSTool -- i connect the QCC3031 same way and i get an error detecting chip type SPI chip error and not connecting read error usb-SPi .. looked at the PIN out and cannot see anything obvious and tried the obvious things -- anyone ever played with the QCC3031 ? or manage get one connecting and sorted?
 
Hi All
so i purchased a bunch of the CSR - QCC 3031 Modules and an SPI programmer . i can connect to the older CSR8645 0 QCC3008 and the csr62415 no problem via the PSTool -- i connect the QCC3031 same way and i get an error detecting chip type SPI chip error and not connecting read error usb-SPi .. looked at the PIN out and cannot see anything obvious and tried the obvious things -- anyone ever played with the QCC3031 ? or manage get one connecting and sorted?

I've used the QCC3031, but never with SPI control. When CSR got bought up/merged (whatever) with Qualcomm, they changed some of the work flow etc. The QCC3008 is the last (that I know of) that uses the "old" SPI programmer. The newer QCC30xx, QCC51xx etc does not use the standard 20$ SPI burner, but the "TRI-burner". This is a +100$ gear that does more or less the same as the cheaper SPI burner. Unfortantly the older SPI burner is not compatible with the TRI-burner (at least from what I know).

Good news tho, is that the QCC3031 can be programmed over USB! You need to connect the DP, DN pins, as well as the charge and sense (?) pin to trigger the QCC3031 into USB mode. When this is done, you need to unlock it. I have a .PDF in my QCC3031 folder HERE on how to unlock USB. The file is called "QCC30xx USB debugging setup".

When this is done, you should be able to change all the params and EQ, although the EQ tool (QACT) is somewhat buggy, and not all firmwares doe have the EQ option enabeled.
 
NEW QCC3031 Modules

Hi Erik

Thank you so muck for your reply and information

I have the 3008 but with no line in - Aux circuitry hence why i went to the 3031

We have China Modules -- sure you have seen them with the QCC chip set

What you have said makes sense in the way i have it connected and it not powering up without a strange double + connection

Its weather to go the route of the Tri Programmer or the USB route the dilema

I essentially just want to Set the Name and the normal Tweaks we do with these via the normal tools if possible

i am still learning :) you help and advice is great and appreciated


i will read up on your USB method and maybe give it go see if i can make it work

need to figure out the cable and connection - i have a Clamp connected to the normal - Batt - Grnd - Miso- csb- clk - mosi - blah blah

do you have a picture of how you have connected and your cable ?
 
I got that but I don't know what are the names of the keys I have to edit. And the values I have to set.

I've looked with the search term PIO, PCM and I2S and cannot find anything userful to enable the second PCM bus.

All the bits I've found has already been set for both PCM1 and PCM2.

For example PSKEY_PCM_PULL_CONTROL is configured for both busses.
I have no clue on what to search for. Does someone have a link or documentation about this. On the Datasheet and the docs I have there is nothing about it.
 
Location of the "8675_firmware" folder in dropbox

Thanks a LOT for this great article - I am waiting for the part to come from China. I had NO LUCK doing the equalization programming with other parts. Your article given me hope.

I have a question about the location of the firmware for 8675.
You indicated the folder name to be 8675_firmware. I could not locate that folder. Would appreciate your help.

Avnish
 
Thanks a LOT for this great article - I am waiting for the part to come from China. I had NO LUCK doing the equalization programming with other parts. Your article given me hope.

I have a question about the location of the firmware for 8675.
You indicated the folder name to be 8675_firmware. I could not locate that folder. Would appreciate your help.

Avnish

Good luck, hope it works out.
I've just created another google drive folder. Will add more to it.
For now, go HERE and take a look in the folder called "8675_BA_0115". This is the firmware from tinySine, and should get you up and running.
 
I've looked with the search term PIO, PCM and I2S and cannot find anything userful to enable the second PCM bus.

All the bits I've found has already been set for both PCM1 and PCM2.

For example PSKEY_PCM_PULL_CONTROL is configured for both busses.
I have no clue on what to search for. Does someone have a link or documentation about this. On the Datasheet and the docs I have there is nothing about it.

I'm sorry I figured it was more obvious than this. I presume you've got master mode selected for I2S2, it might be required to turn the pins on. When I first got the 3008 I looked through every setting in PSTool and remembered there being something to enable the second I2S line maybe there isn't specifically one option that turns them on. There are some that specify it containing a 'complex bit-field' where you'd need the register settings in the datasheet for its configuration. Maybe it's one of these.
 
Okay so I've been looking into the secondary I2S stream situation and I cannot get it to work either. I was wanting to use this myself and it's a good thing I looked into it before I laid out a PCB.

As far as I can work out the PSTool key configurations act like a 'default' settings kind of thing for a wide variety of the settings. For example the key that determines master or slave operation for the primary I2S port is completely ignored by the program running on the QCC3008. This is set to slave in the keys but is clearly operating as a master as has been configured by the ADK configuration tool.

I looked in the dump created by PSTool and the secondary I2S settings are set identically to the primary one, so the config for them is at least the same. I also loaded up the main program dump from the ADK config tool and that doesn't contain any settings for modifying the secondary I2S lines. As they are disabled by standard I think we have a problem because there's no way to turn the lines on in any of the configuration code.

All of the config stuff, through the ADK tool and PSTool, are all extremely high level programming. They are basically graphical interfaces designed to allow someone to easily alter the device settings. This is great but it does require that the actual program running on the QCC3008 has been designed to allow you to alter all of the settings. Turning I2S2 on seems to be missing.

It's possible that the program on the QCC3008 has the ability but the high level interface we've got doesn't have it added in.
 
Do you know if this works with the QCC514x series too?

As far as I know yes. The QCC30xx and the QCC51xx seems to be more or less the same chip, but the QCC51xx has a dual core for audio processing. I have not played around with the QCC514x, but would imagine it being the same prosess.

It's possible that the program on the QCC3008 has the ability but the high level interface we've got doesn't have it added in.

You're completely right. The way that the ADK and config tool works is that the ADK compiles an .XML for the chip. The file contains definitions for settings which is stored as a config file. When the config tool is then used to read the settings, it decompiled the .XML file and just displays it in a graphical way, instead of giving you a list (as in the ADK). The drawback with this (although it's suppose to make it easy for develouping quick bt solutions) is that the compiled .XML from the ADK can have settings that are not enabeled, but displayed. So if some features are changed in the config tool, it might not make a difference, since the ADK firmwares does not have support for it.

Regarding the dual I2S, I've also been trying to find a solution for it, but I can't seem to find a working solution. I've not seen any firmwared for the QCC3008 with dual I2S support. Most times people parallell the signals for mutiple amps, but that does not work if you want to use the DSP capabilities and create a stereo amp with a cross-over. On many smaller BT speakers, JBL extreme they use the analog out, and the I2S so they can do the filtering.
 
Okay so I've been looking into the secondary I2S stream situation and I cannot get it to work either. I was wanting to use this myself and it's a good thing I looked into it before I laid out a PCB.

As far as I can work out the PSTool key configurations act like a 'default' settings kind of thing for a wide variety of the settings. For example the key that determines master or slave operation for the primary I2S port is completely ignored by the program running on the QCC3008. This is set to slave in the keys but is clearly operating as a master as has been configured by the ADK configuration tool.

I looked in the dump created by PSTool and the secondary I2S settings are set identically to the primary one, so the config for them is at least the same. I also loaded up the main program dump from the ADK config tool and that doesn't contain any settings for modifying the secondary I2S lines. As they are disabled by standard I think we have a problem because there's no way to turn the lines on in any of the configuration code.

All of the config stuff, through the ADK tool and PSTool, are all extremely high level programming. They are basically graphical interfaces designed to allow someone to easily alter the device settings. This is great but it does require that the actual program running on the QCC3008 has been designed to allow you to alter all of the settings. Turning I2S2 on seems to be missing.

It's possible that the program on the QCC3008 has the ability but the high level interface we've got doesn't have it added in.

I'm glad that I'm not that stupid trying to find a way to make it working.
I've also read more than half of the code on the example VM synk app they ship with the ADK. I was looking for configurable routing paths but I wasnt able to find anything.

But i've seen that using the AVRCP browsabel channel I should be able to read out the track name and I would try to create somethinh with the VM to spit out soem track info. AT commands for thoose chips would be awesome...

This kind (pin muxing) might be handled on the lower side firmware.
The fact that they also call the built in a ROM but is some sort programmable make the whole thing a bit hard to understand.

For what I've got so far:
1) SPI ROM is used to store both the VM app, the PS config, and the EQ DSP config. Probably also an FW.
2) The chip can also boot from its internal ROM. This should have a basic VM and firmware function not configurable.

Is this right?
I still don't completly get what a .xpv and .xdv are. One is the basa firmware and the other is the VM I suppose.

Regards,
hitech95
 
Last edited:
I've just done something more research in the lib folder source. looks like that pcm2 is only enabled when a second audio instance is used. But I don't have musch experience on understanding on what this means:
Code:
 /* Loop through and check each output for usage of PCM hardware. */
    for(...)
    {
        instance =  ...
        type = ...

        if (type == audio_output_type_i2s)
        {
            if (instance = instance_0)
            {
            /*  Initialise first PCM block for I2S output  */
            }
            else if (instance = instance_1)
            {
            /*  Initialise second PCM block for I2S output  */
            }
        }
        ....
    }
Look for file CONFIG_QCC300X/audio_output_pcm.c