CM6631 usb audio interface .... any good?

Firmware; Specific C_Media

Using C-Media has been a task. Even as a manufacturer I find information is faster through forums than through company channels. Is odd with them as this is not international secrets. Unlike Texas Instruments where all the information is almost spoon fed to you.

I am using the 6500 seriesand I am pretty sure the 6600 series is the same.
To produce loadable code I have found;

The majority of C-Media code process requires (yes) you find/ beg/ borrow/ use Keil compiler. C-Media does not support in it. They're base code is written using strictly Keil ops.

USE the provided or write one; Command line option MAKE FILE with all the compiler and linker options written in. Do not try to use the Keil HUI here. It is a lot of wasted time.

At the end of the MAKE file add the conversion for the HEX file to BIN with the distributed Hex2Ron.exe released.

Now; Sending the bin file. You have to use the EEProm either on board or external to I2C pins. Make sure your EEProm is larger than your file. There is a program loader that will send the file to the 6600 series. It writes to the EEProm. Then on "SAVE" moves the code to ROM.

Reboot, Test it, then play.

The EEProm is a good thing to have for memory storage of user based attributes too. It's cheap and easy to work with. Weather your using a home built board or (as we do) have several of the prototyping units, put a 256k chip on it. 8c memory beats days of lost time.

Paul
 
Oh man, Ti's staff are craze relaxed today as well. Check the tas5558 topic in their engineering zone, where people complains about tonnes mistakes in the tas5558.pdf since 2012 or so. And if you'll download that tas5558.pdf today, you'll still see the main schematic with tas5548 and Xtal, instead of tas5558 with 18k resistor. 5 years the same mistake!
I2C Problem with TAS5558 - Audio Amplifiers Forum - Audio Amplifiers - TI E2E Community
 
TAS lookup? Why?

I have enough on my plate right now. If there are that many engineering and documentations issues. And you have already found them. And your telling me about them? all I can say is

THANK YOU!!!! You are KING in my book.

You saved me a lot of head ache. I hope I can reciprocate some.

Paul
 
Paul, u mean your current project is also about tas5558? I've replaced 5 or 6 pcs 5558 on my proto before realized, that problem is I2C ready time delay )) Ti claimed 5mS after RST, of course I set 20 times longer delay just in case, however, all 5pcs of 5558 didn't communicate with my MCU(cc2540). Only when I set that delay to 300-500mS, I noticed the acknowledge )) Yep, I'm stupid or rather my hands are much faster than my head, that's why I threw out 5pcs of tas5558 ;)
 
It looks great. Without knowing the parts involved my first thought is how you arrived with minimal components. Also curious as to what PCB Cad you are using (?). I have been looking at upgrading our older build software.

About C-Media, as we have discussed; they are slow in delivery of information. I have found they do not answer calls from the US unless they have an English speaking person available. All that makes sense. My Chinese is a bit rusty and my friends tell me I sound like "Help! I am lost searching for a dead car". Linguistics; Go figure. I work with Taiwan, Shenzhen and Huizhou. Some have better English than Mine. I am in Texas.
 
Hi
I am very sorry to hear this about support of C-Media is very slow, by the way if you use CM6631A or CM6632A you can get firmware source code to develop your own firmware. It also include some doc to address it. The firmware source code is in follow URL:
Dropbox - CM6631A SDK
It contain some doc to guide you how the firmware work.
First you should read "CM66xx-A Source Code Programming Guide.doc", it guide you how to build firmware and how to customize it for your device.
second you should read "CM66xx-A Register Spec_1.0.doc" and compare to the source code then you can know how to operate those register.
If you just want to use I2C slave to communicate with external MCU, then you should read "CM66xx-A USB DAC I2C Slave Spec.doc" in folder "6631A_6632A_UsbDAC".
The reference design schematic of CM6631A and CM6632A is in follow URL:
Dropbox - CM6631A SDK
Dropbox - CM6631A SDK
The firmware update tools you can find in follow URL:
http://www.diyaudio.com/forums/digi...m6631-usb-audio-interface-48.html#post3781527
The firmware configuration tool you can find in follow URL:
http://www.diyaudio.com/forums/digi...m6631-usb-audio-interface-46.html#post3762489
I hope those information can help you guys.

Wow, this looks good. Had the same experience with CMEDIA, the support team is very slow, and they never ever answer my questions properly.

Did you build this? How is it that you have left the microcontroller connected to the I2C out from the design?
 
tdtsai, I just curious, is there any reason to not upload simply all info about products on Don Waldron's Home Page What they afraid for? If someone in china will copy a secret weapon 8051, and the cost will drop from $5 to $0.3? Is that strategy is profitable, or ..?
PS: cmedia didn't tell me anything when I asked more details regarding their products. However, after couple months some cmedia distributor from SHZ(Pantek) called me and recommended to replace 6631A for 6642, and they sent to me 6642.pdf, from where I realized that IC has no I2S )) Totally at this morning I have 10 emails with pantek and 4 with cmedia but I still got zero info or help or prices/lead time. Is this what we can call a support yet?
 
Hi IVX:
I am sorry I don't know how to answer your question. Because I am not in charge this. I am software engineer in charge in Windows, Mac and Linux driver develop. My team also write some tools for USB devices. I want to make website to help anyone who interested CM6631A or CM6632A develop their own firmware, but it was rejected by C-Media PM. C-Media PM just say this is strategy
By the way if you need I2S you should use CM6631A or CM6645. The CM6645 has one I2S for playback or recording.
 
Last edited:
Right, I asked Cmedia's distributors give me 6645 docs. About the strategy, well, hard to believe if it is better than way used Ti, ST, AD, and others big companies, which promotes their new products very actively. Probably the reason is technology level, in fact 6631 it is maybe more about SW(your drivers), than HW(8051+DMA and state machine, and even flash is external, like original DISCO 8051 from 1980). Anyway, thank you for your stuff.
 
Dear tdtsai, regarding the firmware configuration tool: do you have a simple tool that in the same device can also configure line-in parameters in addition to the output? I'm familiar with the source code you have made available but a simple tool for generating a comprehensive firmware would be very useful.
 
Hi
Sorry there is not simple tool to do it now. Maybe I can try to write one. Currently I am try to use SDCC to rewrite the firmware. Once I finished it, I will try to rewrite the configuration tool.

Dear tdtsai, regarding the firmware configuration tool: do you have a simple tool that in the same device can also configure line-in parameters in addition to the output? I'm familiar with the source code you have made available but a simple tool for generating a comprehensive firmware would be very useful.
 
Guys, is there a possibility to put CM6631A under some sort of DFU mode to upload a new firmware into the EEPROM?

I'm currently rewriting the firmware and I did **** up USB descriptors a bit and the device has a mismatch (Device USB\VID_0D8C&PID_0141\5&2fba9c36&0&1 was not migrated due to partial or ambiguous match.). I can externally erase the EEPROM or I can solder a new EEPROM and it will allow me to upload the firmware again, but I'm pretty sure there should be an option to put CM6631A under some sort of DFU mode in which the fixed firmware can be uploaded without having to erase EEPROM by external tools.
 
Hi
CM6631A firmware is not store in EEPROM. It is in parallel flash. CM6631A will detect external parallel flash exist or not. If external flash is exist, then jump to external parallel flash to execute. Otherwise jump to rom code for execute.
So you need to cut parallel flash power first, after CM6631A enter ROM mode connect parallel flash power. Then open firmware update tool to update firmware.

Guys, is there a possibility to put CM6631A under some sort of DFU mode to upload a new firmware into the EEPROM?

I'm currently rewriting the firmware and I did **** up USB descriptors a bit and the device has a mismatch (Device USB\VID_0D8C&PID_0141\5&2fba9c36&0&1 was not migrated due to partial or ambiguous match.). I can externally erase the EEPROM or I can solder a new EEPROM and it will allow me to upload the firmware again, but I'm pretty sure there should be an option to put CM6631A under some sort of DFU mode in which the fixed firmware can be uploaded without having to erase EEPROM by external tools.
 
Another quite important question since I cannot find any useful information - is the resistor 12k referenced towards ground of USB PHY or towards the main ground? I want to power the USB PHY from the USB connection and it seems it can be done just fine, that is without common ground, but there is no information whether the 12k resistor is used for USB PHY or for something else.
 
good morning

I bought after a request in the thread and yesterday i got it:D

USB to SPdif converter

link where i bougth it:
2017 CM6631A Digital interface 32 / 24Bit 192K Sound Card USB to I2S / SPDIF Coaxial Output Support Connect Decoder Upgrade DAC-in Amplifier from Consumer Electronics on Aliexpress.com | Alibaba Group

in the evening a made a short test and it works. a made a short test over my laptop with TIDAL - over the usb cable and RCA out to my amp.
i forgot to cahnge the driver in the streaming setup. so it sounds with the normal standard driver. the blue led was not light.
after setup to the correct driver - i do not remember exactly the nam - the blue LED is shining.

Q1
is there a possibility for me - i am a totaly noob in diy and for sure in SW - to upgrade the driver? or is WIN choosing automaticly the correct one?

thanks in advance
chris
 
Last edited: