CSR8675 programming guide w. software and tons of CSR info

@Jsper glad to hear you could get it running. Have a look at the kalimba source code; the basic SBC encoder at least, should be present. I suggest you try streaming using this, before doing anything else. If even the SBC encoder kalimba code is not present, try installing an older version ADK, compare between the source project C files between older ADK and ADK 4.2, and see if you can get the SBC kalimba code in older ADK to somehow work with ADK4.2 (iirc starting from ADK4.x some new kalimba library functions and API's were introduced, so not sure if SBC codec kalimba project from very old ADK3.x can be made to work with ADK4.2, you might need the kalimba code from at least an older ADK4.x version)

Also make sure whether you can use the source configuration tool or not. The pstool will work properly, but configuration tool might have some issues, at least the sink configuration tool did when I was trying out ADK4.2
 
Last edited:
@Jsper Source project includes C code for transferring audio data between hardware-kalimba-hardware and kalimba code for encoding audio signal to bluetooth source data. You cannot run (probably even build) source project without kalimba code. I don't know why you would think you can run it straight through bypassing kalimba, but when you load the source project into xIDE it will load the C project as well as kalimba project. Their build method will build both C and kalimba assembly projects and give you a combined xuv file which is the firmware that you will be actually downloading into the hardware. So the final build result already includes the C part as well as the kalimba assembly part.

If the source config tool (or ADK config tool I think it's called in ADK4.2) does not load properly, that was one of the "bugs" I mentioned in my previous post. I strongly suggest you try to find ADK 4.1 or 4.0 first and get the source project running from that, and then try ADK4.2. If possible, go even further back and try ADK 3.x, if it supports CSR8675.
 
Pin 60: SCL
Pin 61: SDA

Where is SCL and SDA for I2C on a CSR8675? My application requires driving a CODEC using I2S alongside I2C. I read the datasheet and its not helpful:
"CSR8675 BGA contains a configurable hardware I²C interface. For more information contact CSR."

I see the following in the ADK config tool, but there is no indication as far as what PIOs are used for I2C:
1689235576051.png


I am using a BTM875-E module. Thanks.
 
@goose_ader you are looking at the sink project configuration. If the sink project uses I2C this tool will only have I2C configurations specifically tailored to the sink project (for eg, controlling an external I2S device as shown in your screenshot) and you might not be able to do any generic I2C communications if that's what you want. Look under Input/Output, System and User Interfaces in case there is anything relevant. The pin numbers 60 and 61 you quoted are for a completely different chip and development board, so they are not relevant for CSR8675 at all.

The CSR8675 datasheet does not have any information about I2C as far as I remember. There is a separate document that has more details about the sink project configuration specifically, but I don't remember it having any information about I2C either. Look for a file called "Sink_ConfigSetDefinitions.xml" (This depends on which version of ADK you are using, your filename might be different or this file may not exist at all). If it exists, this is the file used by the configuration tool app to display the tree structure as well as all it's text. Search for everything related to I2C in this file, if looking for it in the ADK config tool app itself is tedious. If there's no information at all, search for everything related to I2C in pstool for more information. Look for a file called pskeys.txt in your ADK installation. This file contains all the text shown in the pstool application. Search through this file for all information related to I2C.
 
@mahaju Thank you for the response.

The CSR8675 datasheet does not have any information about I2C as far as I remember.
It seems silly to me that CSR would advertise I2C configuration and not have any information regarding it. Anyways, I did not find anything helpful in the ADK config tool. But I did see something of interest in the pskeys.txt file:

Code:
NAME
    PSKEY_I2C_SCL_PIO (0x25f9)

SUMMARY
    I2C SCL PIO Mapping

TYPE
    uint16

DEFAULT VALUE
    <none>

DESCRIPTION
    
    This PSKEY is used to configure a PIO as I2C SCL line. This
    configuration is restricted to the lower PIO bank
    ( i.e. PIO0 to 15 ).Consult the BlueCore data sheet to determine
    the PIO number which can be used.
    
     Value   SCL Mapping
    
     0x0000    PIO0
     0x0001    PIO1
     0x0002    PIO2
     0x0003    PIO3
     0x0004    PIO4
     0x0005    PIO5
     0x0006    PIO6
     0x0007    PIO7
     0x0008    PIO8
     0x0009    PIO9
     0x000A    PIO10
     0x000B    PIO11
     0x000C    PIO12
     0x000D    PIO13
     0x000E    PIO14
     0x000F    PIO15  
    
    Note:
    1. Any out of range value (Values other than 0x0000 to 0x000F)
    maps I2C SCL to its default configuration.(The default value
    of I2C PIOs are defined in device datasheet).
    2. The user must set both PSKEY_I2C_SCL_PIO &
    PSKEY_I2C_SDA_PIO to enable this feature.

There is another key for the SDA too.
It explains that the "default value of I2C PIOs are defined in device datasheet" but this is not true after my findings. I'm assuming I can just configure the PIOs in PSTool to the options available above?
 
I'm assuming I can just configure the PIOs in PSTool to the options available above?
@goose_ader give it a try. I don't know what default I2C configuration is, I've never used it. Your best bet is probably setting SCL/SDA in pstool and hope for the best. You will still need to find the relevant functions/API in the C code in order to actually start using it. And as far as I remember it only supports I2C master.

One thing you should keep in mind when using CSR8675 is it recycles parts of it's documentation from older versions and but does not make it clear when it does so, and sometimes outdated documentation makes it's way into newer versions of the ADK. It's possible that
The default value of I2C PIOs are defined in device datasheet
was true at some point when this part of the documentation was originally written, but it's not anymore. Sometimes the features you are trying to work on in a newer version ADK, are explained in more detail in the corresponding documentation of older version of the ADK.
 
Here you go :)

The software for the QCC30xx and the QCC51xx are more or less compatible. I have not tested it on the QCC51xx, but this works well with the QCC3031.

Also added some instructions, the MDE, and the QCTA config tool.

Enjoy!
Hooray!! I finally unlocked the BTM331 module thankfully that you shared files!!
OMG Just downloading archive you've shared is better than searching entire google over years! I really happy and appreciated for your distribution! :D:D:D
 
@Jsper Sorry no idea at this point. I have had trouble with it before (working on the sink project) and I assumed it was a bug or something but didn't look too deep into it. That is why I suggested starting with ADK 4.1 or lower.
Where is SCL and SDA for I2C on a CSR8675? My application requires driving a CODEC using I2S alongside I2C. I read the datasheet and its not helpful:
"CSR8675 BGA contains a configurable hardware I²C interface. For more information contact CSR."

I see the following in the ADK config tool, but there is no indication as far as what PIOs are used for I2C:
View attachment 1192314

I am using a BTM875-E module. Thanks.
But if you look at the image posted by @goose_ader above, it looks like this is from ADK4.2 config tool (I am not certain though). Try asking him his ADK version and if he knows anything about it.

Were you able to make the passthrough sample (it's called my_first_kalimba_app or something like that) code work?
 
@Jsper that's strange it didn't use to work for the SINK app in my case. I haven't worked with source project in ADK 4.2 so can't help you much about this. Look inside the Bluesuite folder just in case there is some other dedicated program for source app configuration. If not, look around in the ADK config tool menu items for any place where you can load specific xml files. For sink project there is a Sink_ConfigSetDefinitions.xml file which ADK config tool uses. There might be a corresponding xml file for source project, have a look at whether you need to manually load that xml file into the ADK config tool or something. Look around in the xIDE project settings for the source project, in case there is something you need to enable in order to get the ADK config tool to automatically detect that a source project is running on the board
 
Hi folks, i was trying something new with a combined BMS/Voltage Step up module and a different QCC BT Amp and have an issue. For a starter, i asked a guy on fivver to design me up a PCB which has a TP4056 BMS and 3 voltage boosters which i thought was a MT3608. I also wanted the ability to have a SPST and solder some LED's and USB C breakout board. i asked as well that this board could handle a full 2x 2A at 5V and a 2A at 6.5v for me. The amp i used is a QCC3034 chip that has a self boost apparently to 5.5v which will give me 8watts per channel at 4ohm. From another build using a smaller chip amp, it was advised to put a small cap on the power leads which i assume is to prevent a brown out.
So why am i posting you ask? I seem to have an issue out the power out to the amp where at full volume being put through a bass heavy song that the amp turns off and putting a volt meter on it you can see it drops from 5v to 4.8v then 1.6v which causes the shut down. What i would love to know is can i somehow prevent this without being told to run it at 3/4 volume as i want to make sure i can punish it if needed.
Its my own "Boozetooth" 360 degree speaker i've been refining and fiddling with for the last 4 years and now up to MK12 (or 13), which this one has a Dayton Audio DMA45-4 driver (mono), custom PCB\BMS, QCC3034 amp, 1x 18350 Li-ion battery (1100ma). Any help would be greatly appreciated as i would love to keep the limited parts, otherwise ill have to go the less powerful QCC3003 (2x 5w/ch), TP4056, MT3606 and just take up more space.

(PS the QCC3034 is hanging off the top of the can in the image).
 

Attachments

  • PXL_20230723_044511528.jpg
    PXL_20230723_044511528.jpg
    315 KB · Views: 66
the 8675 are important
CSR8675 is almost obsolete, there's absolutely no reason to use it anymore. Why would you want to use it and not just buy already existing product?

Try using functions from this header file to conditionally select between source and sink modes during initialization in main(). You can either use Boot*Mode or Boot*PreservedWord to check which initialization functions should you call.
 
hi, i've been messing around with the older QCC3003 and what i can see a QCC3005/8 chip in these small 5v amps, a) because i can easily modify using the USB-SPI pogo pin bench, b) quite easy to use the PSTools, Universal front end and ADK configuration tool and c) because they are tiny and put out a consistent 5watts per channel when given 6.5v.

I can see the above messages are suggesting avoiding the obsolete tech, but recently i got two QCC3034 chip amps, one that i used the usb method suggested by the group, but cant seem to get it working with something as easy to use as PSTOOLs or the UE front end etc. The other chip came wtih a APK for the phone that allows the easy access to the BT name which was pretty easy to use, but i would like to mess around with the UE front end and the DSP to introduce a few filters as i noticed something pretty unrealiable with these newer chips. When pushed to the 8w output at max volume i suspect both these QCC3034 suffer some brownouts with the lower frequencies in the music, which causes the amp to turn off and drop the voltage to 1.5/1.6volts, which i wonder if its due to having internal voltage step up modules within the chip amp itself, has anyone noticed this or got a workaround to prevent this? Like with the other older tech i would prefer to use my own step up to prevent this as its a bit silly it keeps turning off around that 3/4qtrs to full volume on some music. I put a multi meter on the leads and noticed the drop and its only with these two boards as the other QCC3003 works perfectly. I guess i havent tried it plugged into a USB and avoid the battery/step up, but sort of defeats the purpose of what im trying to acheive.

I'm open to suggestions with chip amps providing they are easily customisable, through the pc as i do like to change the name, run of 5v (single 18650 or 18350 battery with step up), relatively cheap (around 10-15 AUD each) and small as i like to make 3d printed or small wood builds. I did go away from some of the older CSR builds as to my ears they just didnt go as loud as the QCC versions, but it was 3-4 years ago and i cant recall if they had the same ability to boost to 6.5v to get the maximum output, so might be comparing apples and oranges here.