Designing and building your own board

Building the Board

I shipped the files off to TinySine, they sent a quote, I paid via PayPal, and we were off. I asked TinySine to document the manufacturing of the I2C mux breakout board with pictures for this article, and they were happy to oblige (Figures 6-15). This was a disruption of their usual production flow, so I extend special thanks for these pictures.

Figure 6: Ready to apply the solder paste.
Figure 7: Putting the solder paste on the stencil.
Figure 8: The solder paste on the board.
Figure 9: Starting assembly.
Figure 10: Assembly with the machine cover off.
Figure 11: Pick and place in progress.
Figure 12: Baking the populated boards.
Figure 13: Inspection and test.
Figure 14: Installing the header pins.
Figure 15: The boards are ready to ship.

The Results

The boards were shipped from TinySine on a Monday, and I received them via DHL on Thursday. I excitedly took them to the SwitchDoc Labs test bench and wired them up (Figure 16). I hooked up a Raspberry Pi to the main I2C board, connected the reset pin to 3.3V, and then wrote a Python driver to control the TCA9435. The driver and test software is available on GitHub [9]. I set it up with a SwitchDoc Labs INA3221 breakout board (located at I2C address 0x40) connected to I2C bus 0.

Figure 16: The test bench setup.

The TCA9435 breakout board is located at 0x73 (it has a selectable address on the board), and it shows up on each bus, which is correct. Listing 1 shows the results from the test software. Note that the INA3221 shows up on bus 0, but nowhere else, because the I2C buses are selected one by one. I repeated this experiment with bus 1 through bus 3 and got the correct result in each case. The board works perfectly.

Listing 1

Results from Test Software

01 Test SDL_Pi_TCA9545 Version 1.0 - SwitchDoc Labs
02
03 Sample uses 0x73
04 Program Started at:2015-04-03 03:04:39
05
06 -----------BUS 0-------------------
07 addr = 0x73 returndata = 0xa1
08 tca9545 control register B3-B0 = 0x1
09 ignore Interrupts if INT3' - INT0' not connected
10 tca9545 control register Interrupts = 0xa
11      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
12 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
13 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
14 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
15 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
16 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
17 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
18 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
19 70: -- -- -- 73 -- -- -- --
20
21 -----------------------------------
22
23 -----------BUS 1-------------------
24 addr = 0x73 returndata = 0xe2
25 tca9545 control register B3-B0 = 0x2
26 ignore Interrupts if INT3' - INT0' not connected
27 tca9545 control register Interrupts = 0xe
28      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
29 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
30 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
31 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
32 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
33 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
34 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
35 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
36 70: -- -- -- 73 -- -- -- --
37
38 -----------------------------------
39
40 -----------BUS 2-------------------
41 addr = 0x73 returndata = 0xc4
42 tca9545 control register B3-B0 = 0x4
43 ignore Interrupts if INT3' - INT0' not connected
44 tca9545 control register Interrupts = 0xc
45      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
46 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
47 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
48 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
49 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
51 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
52 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
53 70: -- -- -- 73 -- -- -- --
54
55 -----------------------------------
56
57 -----------BUS 3-------------------
58 addr = 0x73 returndata = 0xa8
59 tca9545 control register B3-B0 = 0x8
60 ignore Interrupts if INT3' - INT0' not connected
61 tca9545 control register Interrupts = 0xa
62      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
63 00:          -- -- -- -- -- -- -- -- -- -- -- -- --
64 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
65 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
66 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
67 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
68 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
69 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70 70: -- -- -- 73 -- -- -- --
71
72 -----------------

Buy this article as PDF

Express-Checkout as PDF

Pages: 8

Price $2.95
(incl. VAT)

Buy Raspberry Pi Geek

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content