Proto board development and manufacture

Go To Last Post
7 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Hi all,

I've got a few questions relating to a development board/prototype board I'm designing and was after your thoughts & opinions.

The aim is really just to build a board with the things on it that I'm interested in such that I can learn about them and stuff around with them, possibly using what I learn in future projects.

I've decided to use through hole parts as apposed to surface mount as it will be easier to assemble and also change over component values etc, if my circuits need fine tuning.

I have had experience using mega32, PCB design etc in the past, but am no expert.

These are the things I was thinking of including:
- 40 DIP AVR mega32 or mega644
- Ethernet controller ENC28J60 (SPI interface, to learn IP & TCP etc)
- Serial EEPROM via I2C (TWI)
- LCD, alphanumeric
- SD/MMC card memory (SPI)
- audio filter into ADC for audio sampling
- DAC and reconstruction filter for audio out
- possibly RS232 for backup communications

I know using all these features at the same time could be too much for the AVR but that isn't really the aim, I just want to learn each modual if that makes sense.

Preveously when making PCBs I submitted my Protel 99 files to my Uni and they did the rest, I'm thinking of using an online PCB manufacture and Gerber files.

So now to the questions:-
- Do you think there are too many moduals? should I concerntrate on just a couple?
- Also are SD/MMC cards the same? where can I get the specifications?
- Can anyone recommend a PCB manufacturer? I probably only want 2 or 3 of these boards(I've seen a thread on this topic once befor but lost it)
- I've never produced Gerber files, I know protel can but any tips?
- Can anyone recomend Gerber viewing software to check my files?

1 final question, not sure if I'm after a buffer or latch. I want to direct a bus either to the LCD or LEDs or other components. I want it so that I enable this IC and the bus signals go through to the other side, even if the signals change (ie no latch). I know some components ie LCD have their own enable but want to direct the bus to other things too. Can anyone recomend a component?

Thank you all very much for any and all feedback and reading the long post
~Ant

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Startup Google and look for the Etherrape.
Startup Google and look for the Tuxgraphics board.
Got a ENC28J60 running. With software from Tuxgraphics but also with uIP 6.0 and with Bascom-AVR.

Ben Zijlstra
http://benshobbycorner.nl
http://members.home.nl/bzijlstra

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks BZijlstra, new about Tuxgraphics but etherrape I had not heard of, its a great resource.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Quote:
These are the things I was thinking of including:
- 40 DIP AVR mega32 or mega644
- Ethernet controller ENC28J60 (SPI interface, to learn IP & TCP etc)
- Serial EEPROM via I2C (TWI)
- LCD, alphanumeric
- SD/MMC card memory (SPI)
- audio filter into ADC for audio sampling
- DAC and reconstruction filter for audio out
- possibly RS232 for backup communications

With all that stuff, you'll need lots of memory, so the choice of chip is going to be either a MEGA324 or MEGA644.

Unless you have something other than an AVR dragon, you'll be stopped at 32K code for debugging. The 324 is actually cheaper than the mega32, and is pin compatible with the 644, complete with pin change interrupts.

Skip the Mega32.

I've done most of what you're proposing, with the exception of ethernet. I've got designs built (but not debugged completely) with SD cards and d/a converters with audio filters.

You're asking a lot of the chip, mostly because of the pinouts and functions.

RS-232 is simple, look at the max232 series of chips for a start for drivers.

You might want to put a few leds in there for system status and "I'm alive" indications.

You also might want to consider the motherboard daughterboard approach for some of your modules. I have no idea how big the board is to be, but plugins can be nice, especially since you can modify or breadboard a module and plug it in or remove it as needed.

On the data side, there's a 74LS373 and 74LS374. The LS374 is a D type flip-flop; it stores data on the edge of a clock signal. The 373 is a latch, which is transparent (output follows input) with the clock in one state, the other state has the input data ignored and the output frozen.

I'd consider an LCD module (which can be conceptually the same as the other modules) where the address the device responds to is determined by jumpers on the board, so that you have a bus structure between all the modules. One port would be dedicated to 8 bit I/O, lines on another port would specify the "address"

SD and MMC cards are not quite the same, it's easiest to pick one and not the other. Personally, I prefer SD cards, not having any MMC cards.

The initialization sequence is not the same, but the cards are electrically interchangeable in terms of connections. You'll most likely connect using the SPI bus. The card will be running at 3.3 volts, so you'll have to level translate to the CPU if it is running at 5 volts (where your LCD display is running). There are some chips that are made to translate parallel data to different voltage levels, you need to look into that.

The other problem is that the SD card data structure for reading can be any number of bytes, but the writing needs 512 bytes to be written at once. Some software designs use two 512 byte buffers, so you're tending to a larger chip in terms of RAM.

You might want to consider putting a separate chip in for the SD card, which makes it a larger design, but partitions the functions well. A separate Mega324 would give you enough RAM for this to work. You can use PCA9512A chips (NXP)to connect I2C and level translate at the same time. Please see the documentation on I2C at the NXP site (www.nxp.com) for a much better explanation of I2C than Atmel gives you.

That would allow you to partition your system into a 5 volt everything, and a 3.3 volt submodule that is a smart MMC/SD card reader. I'd also recommend that you be able to switch the VCC to the card on and off. 3.3 volts seems to be a good value so far for me.

Harvey

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Harvey thanks very much.

Yes alot of these issue I have been thinking of. such as level travslation between 5v & 3.3v. Can you recomend any specific ICs? I will run most things from 5v, the LCD has to and the uC will be at 5v as this allows faster clock speed in the case of mega644.
Ethernet and SD will be 3.3v

I've used I2C(TWI) before so that should be ok, same w/RS-232, and yep I'll just use a max232 :wink:

Thanks for the info on latches/transperent latches, I'll look into those, thay sound good.

I was also thinking on using main board with the possibility of expansion boards which use or have access to the bus. And for some moduals I may go dowm this line, I think I just need to priorities the moduals as to what I want to focuss on.

Thanks for you help and ideas

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I use the philips i2c switch/hubs to do level translation for i2c, they are pretty cool.
MAXIM also has some really neatly integrated DC-DC that outputs 5V /and/ 3.3 to power each side of the logic..

But lately I've been thinking of getting the whole board running on 3.3, abeit slower.

Author of simavr - Follow me on twitter : @buserror

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

On level translation, I'd personally prefer something that looks like a bidirectional bus driver, but that says that the direction has to be set from the main CPU. (think 74LS245). One chip that comes to mind is the TI SN74LVCC4245A, which is available in a SO16 (sorry, no DIP) package, and has two VCC connections.

However, you'd do well to go to www.ti.com and check out the selection guide under level translators. Note that I haven't used this chip, but I've taken a different approach.

Your options with an SD card are to buffer the MISO, MOSI, CS and CLK pins with a level translator. Reading the spec, it looks as if the direction of the lines is pretty much defined as one way. However, this would take two of the above chip.

The SN74LVC2T45 will do two lines at a time, not 8, and two of them might work.

However, I would still recommend a dedicated processor for both ethernet and the SD card, one each would do. I'd recommend the Mega168P. So far, code needed to detect the card, read the first sector, find the boot sector, and then read the first directory sector into a buffer plus all the TWI stuff is occupying less than 50% of the processor's memory. However, the limit here is the RAM in the chip. Still working on a graceful solution to that one.

I'd consider two types of modules, one communicating through I2C with some smarts on it (mega168P) and one that's dumb, 8 bit bus with some sort of chip/device select either on the module (nicest) or on the board (not so nice).

Harvey