Customizing SiLabs CP210x devices for ALDL Communications

Information and discussion of EFI hardware and specifications
Post Reply
skyline_stu
Posts: 10
Joined: Fri Aug 19, 2011 10:03 pm
cars: VS Commodore, 2xHR30 Skyline

Customizing SiLabs CP210x devices for ALDL Communications

Post by skyline_stu »

After HUGE frustrations not being able to comunicate using a SIlabs CP210x USB to UART chipset and my car's computer, I've found a way to customize the chips. The main concern with these devices is that they 'auto translate' non standard baud rates to a common speed.
I.E. If the device is selected for 8192 or 8228 baud, it's 'automagically' locked to 9600 baud. :evil:
Unfortunatly, 9600 falls well outside the range required to communicate to our Delco ECU's.

So after researching datasheets and application notes, SiLabs have a few utilities that allow us to manually set the baud rate generator and USB PID.
This is great, as we can set the baud rate to exactly 8228 for relable ECU communications and logging. :thumbup:

To do this you'll need a few programs from SiLabs, myself and a bit of skullduggery.
Download the AN205SW software from SiLabs from here : http://www.silabs.com/support/pages/sup ... SB+Bridges
Download the AN144SW software from SiLabs from here : http://www.silabs.com/support/pages/sup ... SB+Bridges
Download the Custom 8228 CP210x driver below. (If you use WIN2000 use the WIN2000 driver)


Open and extract the custom driver below to say, C:\Silabs\Custom8228Baud.
Install the AN205SW and AN144SW.These 2 utilities will allow you to set a custom PID and allow you to use my modified driver.

Now, follow these steps to change the devices' PID:-
1. Open the AN144 software and find your device
2. Set the PID to 8228, tick the box to the left of 'PID'
3. Change the Product String to CUSTOM 8228 Baud CP210x USB to ALDL (lets you remember the special device config), tick the box to left of Product String
4. Set the Serial Number to 8228 and tick the box to the left of 'Serial Number'
5. Program the device

Your PC will now not know the device due its new PID. To fix this perform these steps:-
1. Open the device manager through the control panel.
2. Go to the unknown device and click it. The Found new device box should pop up - or
3. Right click and update driver.
4. Pick No, Not at this time, when asked to go online, now select next.
5. Pick Install from a specific location (Eg C:\SiLabs\Custom8228Baud or where you put the extracted driver pack).
6. Check the Include location and browse for the correct subdirectory as above.
7. Pick the Stu Cornall Tuning driver, ignore the Driver unsigned messages !
8. Let the driver install itself, reboot as/if required, otherwise close the Device Manager

Now we have to configure the port to use 8228 baud whenever it's opened between 7208 and 9612 baud. :-
1. Open the AN205SW and load the CP210xBaudRateAlaisConfiguration program.
2. Scroll down and click on the 7208-9612 box.
3. It will open another window, click 'Advanced' if not opened.
4.If down at the bottom the 'Overrride Recomendation' box is not ticked, Tick it.
5. Set the 'Desired Baud Rate' to 8228.
6. You now need to set the 'Baud Rate Generation' value to F49B. You'll see at the top the baud rate now matches the desired rate of 8228.
7. Click OK and send the config using 'SET CONFIGURATION'. This will allow the CP210x chipset to use 8228 baud anytime the port is opened at 9600. which is handy for monitoring/testing with a terminal program like RealTerm !!

Close all the SiLabs configuration programs

**Important step for EFI lIve Users**
1. Go back into the device manager and open the customised port, you should see it now. Otherwise scan for hardware change
2. Select the Advanced tab, set the port to say COM8 (it may be in use, check to see if you have another COM8 device active, otherwise select a port lower than 8. Ignore the warnings. If you don't, EFI Live V4 won't work as it can't find ports higher that 8)
3. Exit the device manager


You should now have a SiLabs CP210x series device that works perfectly at 8228 or 8192 baud !
The port will correctly work at every other speed except 9600, which is now translated to 8228.
By following this procedure, it will allow any other installed CP210x devices (with a PID of EA60, EA61, EA70 or EA71) to run at a normal speed of 9600.

Stu
Last edited by skyline_stu on Mon Sep 19, 2011 10:11 pm, edited 1 time in total.
skyline_stu
Posts: 10
Joined: Fri Aug 19, 2011 10:03 pm
cars: VS Commodore, 2xHR30 Skyline

Update :- Full Driver installer

Post by skyline_stu »

I have an update for the VCP drivers.

Here is a self installing version which should extract the drivers to a selected folder.

There are versions for Win98/XP/Vista and WIN2000

Stu
Attachments
XP-98-Vista-Custom8228_CP210xDriverInstall.zip
WIN98-XP-Vista Self Install driver
(4.59 MiB) Downloaded 430 times
WIN2000_Custom8228_CP210xDriverInstall.zip
WIN2000 Self Install driver
(2.6 MiB) Downloaded 386 times
User avatar
festy
Posts: 1039
Joined: Sat Apr 30, 2011 6:27 pm
cars: Alfa Romeos
Location: Narellan, NSW

Re: Customizing SiLabs CP210x devices for ALDL Communication

Post by festy »

You don't need to change the PID etc - because you're changing the BRG prescalers in the device's eeprom, you can skip the first 13 steps you listed and just use the standard driver.
If you're worried about confusing modified and standard modules, I just mark the bottom of the board with a texta, because having two different versions of the same driver installed was causing issues.
Their prescalers are pretty good, a requested 8192 baud comes out very close at 8191.
Considering you can buy the TTL versions of these modules for under $5, they're a cheap and easy way to get high speed comms from an 808, just 3 wires to solder.
skyline_stu
Posts: 10
Joined: Fri Aug 19, 2011 10:03 pm
cars: VS Commodore, 2xHR30 Skyline

Re: Customizing SiLabs CP210x devices for ALDL Communication

Post by skyline_stu »

I realize that I could do it '13 steps less' BUT there's method in the madness.

Requesting the prescale via DLL calls DOES NOT stop it auto baud adjusting!!!. If you try, after each read of the port, you need to RESEND the prescale.
You must physically lock the BRG to the desired speed . Go have a good read of their many app notes/datasheets and you will see what I mean.
IE.
It locks Tx to 9600, but will Rx data if sent at 8192, 8228, 8345 or anything in the 7208-9612 range.Unless you permantly change it in the config EEPROM it will not work on a Delco ALDL bidirectional bus using any off the shelf packages.

Real world testing shows the rate that the SXR chip communicates is between 8218 and 8234 on almost every vehicles I've tested. Most of the time it is 8226-8230, using autobauding serial decoding hardware. The BCM is a bit more sloppy in its TX data speed.

Why everyone uses 8192 was because most older pc's/laptops had that available in the old 16450/16550 style UART divisors (Custom xtals were outrageously expensive back in the 80/90's.) It was close enough to 8228 for all intended purposes (an error of less that 0.5%).
To back this up have a look at EFILive V4. It opens the port to 8228,N,8,1 !!

I spent some time years ago field testing KALMAKER. This was one reason Ken used a parallel port interface - due to the enormous timing inconsistencies in serial ports between different computer manufactures. Some chipsets DID NOT support BRG divisors, much like these new age CP210x devices! My first laptop (A Compaq) was one that refused to work at non standard UART rates.


Changing the PID assures a unique device ID IT ALSO MAKES IT EASY TO IDENTIFY IN THE DEVICE MANAGER IF YOU HAVE A PROBLEM

I fail to see how having 2 drivers will cause a problem, because the driver is written FOR the 8228 device. The PID identifies which driver to load. There are other specific low level changes in this driver to overcome some 'unique' CP210x charcteristics. 8228 was a convienent number to use.

I've only had total SUCCESS with multiple CP210x/Custom8228 devices in any of my diverse collection of desktop or laptops - Neither have any field testers come across a problems.

Proir to this walk through & drivers, a CP210x USB to UART will NEVER communicate with a VR onwards Holden to datalog anything.

Stu
User avatar
festy
Posts: 1039
Joined: Sat Apr 30, 2011 6:27 pm
cars: Alfa Romeos
Location: Narellan, NSW

Re: Customizing SiLabs CP210x devices for ALDL Communication

Post by festy »

I just saw this thread again and read your post - and have two comments to add.
First, you missed the point I was making - of course you need to modify the device's eeprom to get 8192, my point was that after setting this, the standard driver will work fine at 8192. As you correctly mentioned, the driver doesn't touch the BRG settings. Modifying the driver to change the device's name in windows is fine - I just said it was unnecessary to complete these first 13 steps in your post to attain 8192bps (the 7 steps after that are important though). Once you've set the eeprom, you can open the com port at 9600 and still get the locked 8192 baud rate, regardless of whether you've changed the device's PID and/or the display string in the driver inf.

Second - I think you've got this backwards:
skyline_stu wrote: Real world testing shows the rate that the SXR chip communicates is between 8218 and 8234 on almost every vehicles I've tested. Most of the time it is 8226-8230, using autobauding serial decoding hardware. The BCM is a bit more sloppy in its TX data speed.

Why everyone uses 8192 was because most older pc's/laptops had that available in the old 16450/16550 style UART divisors (Custom xtals were outrageously expensive back in the 80/90's.) It was close enough to 8228 for all intended purposes (an error of less that 0.5%).
To back this up have a look at EFILive V4. It opens the port to 8228,N,8,1 !!
As VL400 wrote here, 8192bps is one of 4 possible baud rates available from the MCU.
EFILive opens the port at 8228 because the PC uart runs at 115200, so the closest divisor available is 14.
The closest baud rate to 8192 that a standard PC's UART can get to is 115200/14 = 8228.5. Requesting 8192 will still use 14 for the divider, so will still get 8228.
User avatar
charlay86
Posts: 584
Joined: Thu Sep 17, 2009 2:00 pm
cars: VT S1 SS (L67)
Location: Perth, WA

Re: Customizing SiLabs CP210x devices for ALDL Communication

Post by charlay86 »

Yeah these PCMs definitely use 8192 (in theory anyway!), it simplifies the RPM calculations.
VT PCM internal clock divider settings are shown here:
https://pcmhacking.net/forums/viewtopic.php?f=31&t=982
volkerc
Posts: 1
Joined: Tue May 21, 2013 4:03 am

Re: Customizing SiLabs CP210x devices for ALDL Communication

Post by volkerc »

skyline_stu wrote:
Now we have to configure the port to use 8228 baud whenever it's opened between 7208 and 9612 baud. :-
1. Open the AN205SW and load the CP210xBaudRateAlaisConfiguration program.
2. Scroll down and click on the 7208-9612 box.
3. It will open another window, click 'Advanced' if not opened.
4.If down at the bottom the 'Overrride Recomendation' box is not ticked, Tick it.
5. Set the 'Desired Baud Rate' to 8228.
6. You now need to set the 'Baud Rate Generation' value to F49B. You'll see at the top the baud rate now matches the desired rate of 8228.
7. Click OK and send the config using 'SET CONFIGURATION'. This will allow the CP210x chipset to use 8228 baud anytime the port is opened at 9600. which is handy for monitoring/testing with a terminal program like RealTerm !!

Close all the SiLabs configuration programs

**Important step for EFI lIve Users**
1. Go back into the device manager and open the customised port, you should see it now. Otherwise scan for hardware change
2. Select the Advanced tab, set the port to say COM8 (it may be in use, check to see if you have another COM8 device active, otherwise select a port lower than 8. Ignore the warnings. If you don't, EFI Live V4 won't work as it can't find ports higher that 8)
3. Exit the device manager


You should now have a SiLabs CP210x series device that works perfectly at 8228 or 8192 baud !
The port will correctly work at every other speed except 9600, which is now translated to 8228.
By following this procedure, it will allow any other installed CP210x devices (with a PID of EA60, EA61, EA70 or EA71) to run at a normal speed of 9600.

Stu
Hello,
I'm new here. Being frustrated as you, having the same chipset, I dowloaded all of the above, and for some reason I can't set the baud to the above mentioned values. All I'm getting is a blank box when using the AN205SW, can't enter any values....?
Any help would be greatly appreciated.
Post Reply