A breakout board for the T.I. CC3000 WiFi module

Hi all,

I'm the author of the Arduino CC3000 library (https://github.com/cmagagna/ArduinoCC3000). I need more boards for development but all of T.I.'s are either out of stock or weirdly overpriced, and I've seen several designs for breakout boards but none actually built yet... so I decided to roll my own:

https://github.com/cmagagna/CC3000-Breakout-Board

If you could look over the board and let me know what you think I'd appreciate it.

I based my board on Matt Bigarani's design (http://www.centerblack.com) but I changed the RX & TX lines from pins to just solder pads (not really needed since they're only used for testing), added cuttable traces for the I2C lines (also only used for testing), combined the VBAT_IN and VIO_HOST lines (T.I. does this on their own board) and changed the pin layout from 1x10 to 2x4 so it will plug into a standard breadboard.

I've tried to follow all the design points outlined in the CC300 spec sheet (http://www.ti.com/lit/ds/swrs126/swrs126.pdf), evaluation module (http://www.ti.com/lit/ug/swru326/swru326.pdf), and Boosterpack board (http://www.ti.com/lit/ug/swru331/swru331.pdf):

  • the power supply trace is 40 mil
  • the test point traces are 18 mil
  • the antenna trace is 14.3 mil with a 10 mil separation
  • the antenna area is 10.4mmx8.1mm
  • the distance from the antenna trace to the edge of the PCB is 1.1mm
  • the antenna trace is rounded
  • There's via stitching between the ground and the antenna trace
  • There's a lot of vias between the 2 ground layers

There's two points I'm not sure about:

  • Distance between layers is supposed to be 52.2 mil. A standard 1/16" board (1.6mm) is 62.5 mils and a 1.2mm board is 47 mils...how would you get a 52.2 mil spacing?
  • "RF traces must have 50 Ohm impedance (micros trip transmission line)". What does this mean?

Thanks in advance for any advice.

[edit - fixed wrong URL]

Nice work! I'd like to integrate this and will send you some feedback.

First question: In your Readme file you once mention WLAN_IRQ, is this actually SPI_IRQ?

j514: Nice work! I'd like to integrate this and will send you some feedback.

First question: In your Readme file you once mention WLAN_IRQ, is this actually SPI_IRQ?

Thanks! You are welcome to use the design, but please note that I haven't tested it yet. I have boards on order from Osh Park and hope to get a prototype built soon, but as of today it's still a work in progress.

Yes, WLAN_IRQ is SPI_IRQ. The TI documentation is wonderfully inconsistent.

Yes and I see that there's several implementations of the chipset too. The datasheet says the TI manufactured CC3000 includes a level shifter but I don't see where. How are you planning to solder them in place? I'm thinking these might be difficult to do with a pencil, but am still up for the challenge. I'm also thinking to remove the I2C connections, do you know if firmware updates can be done via SPI?

The datasheet says the TI manufactured CC3000 includes a level shifter but I don't see where.

I'm not 100% positive but I think this is wrong, or if it is it's a level shifter from 3.V to 1.8V internally...you definitely can't drive a CC3000 at 5 Volts.

How are you planning to solder them in place? I'm thinking these might be difficult to do with a pencil, but am still up for the challenge.

I have a toaster oven I use for reflow soldering. It's not fancy, basically a toaster oven + thermocouple + ATTiny + relay, but so far so good.

I think you would have a hard time using an iron to connect a CC3000 to a PCB since all the pads are underneath the module, but there's a few reports out on the web of people who have dead bugged it so it's certainly possible (not easy, but possible).

I'm also thinking to remove the I2C connections

My take from reading the documentation is that the I2C is only used for the original factory programming and isn't required for normal use. My current board design has the lines connected by solderable pads in case I need to get to them, but if I ever do another revision I'll probably eliminate them to save space.

do you know if firmware updates can be done via SPI?

This document:

http://processors.wiki.ti.com/index.php/CC3000_Flashing_Guide

says "...The most common way to flash a new service pack is by using the patch programmer utility, which uses the host driver's APIs...."

so I'm pretty sure it's possible. I hope to have a definitive answer soon.