Project

General

Profile

Actions

HardwareCP210xTutorial » History » Revision 7

« Previous | Revision 7/13 (diff) | Next »
laforge, 02/19/2016 10:48 PM


CP210x High Baudrates Tutorial
Image(cp2102.jpg, right, 33%)
This page will describe the procedure of programming high, non-standard baudrate mappings to a !SiLabs CP210x serial converter using Linux, needed by the burst_ind branch.

Small adapter PCBs to which you have to solder your own cable + plug can be bought quite cheaply on eBay and !AliExpress. Ready-made adapter cables with the CP2102 can be bought from [http://shop.sysmocom.de/products/cp2102-25 shop.sysmocom.de]

So far this tutorial has only been tested with the CP2102, but this seems to be the most common chip anyway.

=== How it works ===

Contrary to the FTDI converters, non-standard baudrates can't be directly requested when opening the port, but need to be stored in the EEPROM of the device, overwriting the default entries.
So it works like this: You open the port with a standard baudrate, the converter performs a look-up in the baudrate-table of its EEPROM and uses the non-standard mapping you programmed.

If you have a [wiki:PirelliDPL10 Pirelli DP-L10] you don't need to continue, the CP2102 in the phone has those mappings already preprogrammed.

=== Programming non-standard mappings ===

First of all you need to download and unpack the lastest version of [http://cp210x-program.sourceforge.net/ cp210x-program], an open-source tool replacing the proprietary windows-only tool from !SiLabs (see application note AN205 if you want to mess with that).

To make sure cp210x-program will be the only one talking to the converter, unload the kernel module:

{{{
sudo rmmod cp210x
}}}

After that, perform a dry-run to see everything is okay:

{{{
sudo ./cp210x-program
}}}

The tool should output the device-string of the converter, some other information, and a baudrate table with the following default entries: {{{
[baudrate table]
[...]
921600 = FFE6, FFF6, 1 # 923077 Baud, 20 us
[...]
460800 = FFCC, FFEC, 1 # 461538 Baud, 40 us
[...]
230400 = FF98, FFD9, 1 # 230769 Baud, 78 us
[...]
115200 = FF30, FFB2, 1 # 115385 Baud, 156 us
[...]
}}}

Okay, now to the real thing: create a backup of the EEPROM:

{{{
sudo ./cp210x-program -f eeprom.hex
}}}

The next step is to program the modified, non-standard baudrates:

{{{
sudo ./cp210x-program -p -F eeprom.hex -w --set-baudrate 812500:FFE2,FFF4,1 --set-baudrate 406250:FFC5,FFE9,1 --set-baudrate 203125:FF8A,FFD3,1
}}}

Check if the entries have been written successfully:

{{{
sudo ./cp210x-program
}}}

You should see the following entries:

{{{
[baudrate table]
[...]
812500 = FFE2, FFF4, 1 # 800000 Baud, 24 us
[...]
406250 = FFC5, FFE9, 1 # 406780 Baud, 46 us
[...]
203125 = FF8A, FFD3, 1 # 203390 Baud, 90 us
[...]
115200 = FF30, FFB2, 1 # 115385 Baud, 156 us
[...]
}}}

Replug the converter and you're done.

=== Using burst_ind ===

If you want to use the burst_ind branch with a CP210x converter, you need to add the following define in osmocon.c: {{{
#define I_HAVE_A_CP210x
}}}

Files (1)
cp2102.jpg View cp2102.jpg 134 KB CP2102 USB adapter stick steve-m, 08/29/2011 10:25 PM

Updated by laforge about 8 years ago · 7 revisions

Add picture from clipboard (Maximum size: 48.8 MB)