Difference between revisions of "MultiSerial Shield"

From Hackstrich
(Minor issues on rev 2 board.)
(Updating project status.)
Line 11: Line 11:
  
 
== Project Status ==
 
== Project Status ==
PCB design complete, Rev. 1 prototype PCBs ordered and received from BatchPCB.  Full BOM ordered and received from Digikey (SC16IS762 substituted instead of SC16IS752 because the latter is out of stock for another 6 weeks and the former is pin-compatible).  First prototype PCB assembled, electrically tests OK.  Initial software testing complete, writing of an Arduino library is now in progress.  Revision 2 PCBs have been received, first one assembled and passes CTLR, SERI, and GPIO tests with no hardware bugs found so far.  Working on interrupt support now.
+
PCB design complete, Rev. 1 prototype PCBs ordered and received from BatchPCB.  Full BOM ordered and received from Digikey (SC16IS762 substituted instead of SC16IS752 because the latter is out of stock for another 6 weeks and the former is pin-compatible).  First prototype PCB assembled, electrically tests OK.  Initial software testing complete, writing of an Arduino library is now in progress.  Revision 2 PCBs have been received, first one assembled and passes CTLR, SERI, INTR, and GPIO tests with no hardware bugs found so far.  Need to do testing at RS232 levels to validate the level conversion is working, that should be the last thing to do.
  
 
== Revision 1 PCB Issues ==
 
== Revision 1 PCB Issues ==

Revision as of 00:51, 3 August 2010

MultiSerial Shield
MultiSerial Shield.png
This Page
Function: Provide two RS232 ports with 3.3v or RS232 levels, accessible via I2C.
Key Chips: NXP SC16IS752
External Ports: 2x RS232 (3.3v or RS232 levels), 8x GPIO
Required Pins: A4 (I2C SDA), A5 (I2C SCL)
Optional Pins: D2, D3 (Interrupts)

Project Status

PCB design complete, Rev. 1 prototype PCBs ordered and received from BatchPCB. Full BOM ordered and received from Digikey (SC16IS762 substituted instead of SC16IS752 because the latter is out of stock for another 6 weeks and the former is pin-compatible). First prototype PCB assembled, electrically tests OK. Initial software testing complete, writing of an Arduino library is now in progress. Revision 2 PCBs have been received, first one assembled and passes CTLR, SERI, INTR, and GPIO tests with no hardware bugs found so far. Need to do testing at RS232 levels to validate the level conversion is working, that should be the last thing to do.

Revision 1 PCB Issues

  • Fixed in revision 2: Should connect GND pins on Arduino header together
  • Fixed in revision 2: +5V and GND labels on RS232 port are swapped
  • Fixed in revision 2: Pins 15-28 on controller IC are mirrored! Doh!
  • Fixed in revision 2: Fix needlessly close spacing on traces running between pins for no reason.
  • Fixed in revision 2: SCL33/SDA33 test points/jumper points are needlessly bigger than other pads.
  • Fixed in revision 2: Addresses printed on board are 8 bit, not 7 bit like the Wire library uses.
  • Added in revision 2: Functions for Arduino headers not printed on board, makes debugging harder.
  • Fixed in revision 2: C7 and C12 are needlessly too close to the header, making it hard not to melt the header (if placed first) while adding the caps.
  • Fixed in revision 2: RX level translators/jumpers not designed right. TX and RX both need to be switched between the output of the level translator and the input of the level translator. TX already is, RX is not.
  • Fixed in revision 2: LEDs wired such that they are on for idle state.
  • Added in revision 2: Power LED would be very useful as shield blocks visibility of Arduino's power LED.
  • Added in revision 2: No interrupt capability because /IRQ line not connected.
  • Fixed in revision 2: Channels should be 0 and 1, not 1 and 2 (to match chip and reduce confusion)
  • Fixed in revision 2: LEDs very dim, replace resistors with 150 ohm not 330.
  • Fixed in revision 2: RS232 header pins touch USB header on Arduino, shorting them to ground. Tape over the USB connector helps, but the pins can punch through the tape and cause hours of debugging frustration. Should consider moving the header to the opposite side of the board, even though it means basically rerouting the entire board.

Revision 2 PCB Issues

  • It doesn't make much sense to send +5v out on the header when the board is all +3.3v. Should change this.
  • The board is 2.05" high, should make it 2" to increase flexibility in panelizing it.

Overview

The Arduino MultiSerial shield will let the Arduino access two RS232 serial ports via I2C. It will have switchable 3.3v or RS232 levels. This project exists mainly as a debugging tool for networks of BlinkieBits, as (at least during BlinkieNet design/prototyping) it would be extremely useful to be able to receive debugging information from a whole network of BlinkieBits, rather than just one at a time.

  • The NXP SC16IS752 chip is used, which gives 2 channels for ~$7. It needs 3.3v I/O and talks 3.3v RS232, so level shifters are needed. The I2C level shifter is a PCA9306 ($0.95 qty. 1), and the RS232 level shifter is a second-sourced TI MAX3232 in a SOT16 package ($1.70 qty. 1).
MultiSerial Shield Rev. 2 Schematic