Project

General

Profile

HardwareCP210xTutorial » History » Version 11

fixeria, 04/30/2021 03:49 AM

1 8 laforge
h2. CP210x High Baudrates Tutorial
2
3 9 laforge
!{width:33%}cp2102.jpg!
4 8 laforge
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.
5 7 laforge
6 8 laforge
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 "shop.sysmocom.de":http://shop.sysmocom.de/products/cp2102-25
7 7 laforge
8 1 steve-m
So far this tutorial has only been tested with the CP2102, but this seems to be the most common chip anyway.
9
10 8 laforge
h3. How it works
11
12 1 steve-m
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.
13
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.
14
15 8 laforge
If you have a [[PirelliDPL10|Pirelli DP-L10]] you don't need to continue, the CP2102 in the phone has those mappings already preprogrammed.
16 1 steve-m
17 8 laforge
h3. Programming non-standard mappings
18 1 steve-m
19 10 laforge
First of all you need to download and unpack the lastest version of "cp210x-program":https://github.com/VCTLabs/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).
20 8 laforge
21 1 steve-m
To make sure cp210x-program will be the only one talking to the converter, unload the kernel module:
22
23 8 laforge
<pre>
24 1 steve-m
sudo rmmod cp210x
25 8 laforge
</pre>
26 1 steve-m
27
After that, perform a dry-run to see everything is okay:
28
29 8 laforge
<pre>
30 1 steve-m
sudo ./cp210x-program
31 8 laforge
</pre>
32 1 steve-m
33
The tool should output the device-string of the converter, some other information, and a baudrate table with the following default entries:
34 8 laforge
<pre>
35 1 steve-m
[baudrate table]
36
[...]
37
 921600 = FFE6, FFF6, 1 #  923077 Baud, 20 us
38
[...]
39
 460800 = FFCC, FFEC, 1 #  461538 Baud, 40 us
40
[...]
41
 230400 = FF98, FFD9, 1 #  230769 Baud, 78 us
42
[...]
43
 115200 = FF30, FFB2, 1 #  115385 Baud, 156 us
44
[...]
45 8 laforge
</pre>
46 1 steve-m
47
Okay, now to the real thing: create a backup of the EEPROM:
48
49 8 laforge
<pre>
50 1 steve-m
sudo ./cp210x-program -f eeprom.hex
51 8 laforge
</pre>
52 1 steve-m
53
The next step is to program the modified, non-standard baudrates:
54
55 8 laforge
<pre>
56 1 steve-m
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
57 8 laforge
</pre>
58 1 steve-m
59
Check if the entries have been written successfully:
60
61 8 laforge
<pre>
62 1 steve-m
sudo ./cp210x-program
63 8 laforge
</pre>
64 1 steve-m
65
You should see the following entries:
66
67 8 laforge
<pre>
68 1 steve-m
[baudrate table]
69
[...]
70
 812500 = FFE2, FFF4, 1 #  800000 Baud, 24 us
71
[...]
72
 406250 = FFC5, FFE9, 1 #  406780 Baud, 46 us
73
[...]
74
 203125 = FF8A, FFD3, 1 #  203390 Baud, 90 us
75
[...]
76
 115200 = FF30, FFB2, 1 #  115385 Baud, 156 us
77
[...]
78 8 laforge
</pre>
79 1 steve-m
80
Replug the converter and you're done.
81
82 8 laforge
h3. Using burst_ind
83
84 4 steve-m
If you want to use the burst_ind branch with a CP210x converter, you need to add the following define in osmocon.c:
85 8 laforge
<pre>
86 4 steve-m
#define I_HAVE_A_CP210x
87 8 laforge
</pre>
Add picture from clipboard (Maximum size: 48.8 MB)