USB level translation

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

Hi all,

I have an ATTINY2313-20SI running at 12MHz, and configured to run the IGOR firmware USB stack. I have a maxim bi-directional level translator on board so that I can run the processor at 12MHz and still be in spec (as someone posted on th avr-gcc-list - the device is only rated to 10MHz at VCC < 4.5V)

But the bi-directional level translator seems to have grief because of the 1k5 pullup resistor on the Data- line.

I have therefore modified the circuit for now, and run everything at 5V. Evertyhing works ok like this for development, but I need to get the level translation right in order to complete the board.

Has anyone done a level translation that works ok on the USB data lines? Any help is much appreciated! 8)

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

For a one-off personal project, you can probably run your Tiny2313 @12MHz & 3.xV without problems. Try it. :) If you have multiple chips, especially from different batches, test them to see which is the "best" at your desired speed and low Vcc.

Lee

You can put lipstick on a pig, but it is still a pig.

I've never met a pig I didn't like, as long as you have some salt and pepper.

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

At the moment I'm running one deisgn at 5v and everything works fine, but I need to solve the level translation for production. Unfortunately it's not a personal project! :(

There seem to be a few hits on google, so hopefully I'll come up with a device that'll do the deed ok.. Maybe it's just a mistake in my schematic, but it's hard to get the level translator wrong! lol

Thanks though.

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

There is another project that uses the 5v itself for the USB. Just have a look at this:
http://www.fischl.de/usbasp/

This is basically a USB programmer for AVR but doesnt uses level comversion insted it uses current control resistors.

AVR Rulez...;-)

Warm Regards,
Boseji
http://m8051.blogspot.com/

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

Hi There,

Thanks for the reply. They should note in that design that the pullup resistor on Data- should be changed if you are pulling it up to 5V. 1k5 is for when the line is being pulled up to 3.3V I changed mine to a 2k7 pullup, with a resistor of 4k7 to ground I beleive. This seems to work ok.

I don't know why my level translation isn't working actually. There's no real reason the extra pull of the 1k5 should make a difference in the circuit, after I mapped out a descrete level translator, I realised that this shouldn't make a difference. I am building up another board now using the level translation circuitry again, and I'll see how I get on.

When it's successful I'll post the schematic up to make life easier for others.

Thanks,

Brian Sidebotham.

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

hi,

My question on level translation is a bit different. i am doin a buzzer system using avr. I have planned to use AVR 309 as the firmware for usb interface. But in the circuit there are some problems:

1)Atmega 8 operating voltage is 4.5 to 5.5 V. How can it work if the level is down regulated to 3.3 v?
2)if it is Atmega8L then how can it work with 12Mhz

Presently, my circuit is not working..When plugged in to my comp it shows: USB device not recognized!
Help me solve this problem

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

Well, you might be able to move from an ATmega8 over to an ATmega88.

The ATmega88 is a pin-compatible cousin to the ATmega8. The regular (non-V) version is rated to 20 MHz at 4.5 V and above, and to 10 MHz at its minimum voltage of 2.7 V. The "safe" operating area between these two points appears to ramp up linearly according to the figure in the "Electrical Characteristics" section of the datasheet.

That means that at 3.3 V, the ATmega88 is rated to operate at 13.3 MHz. 12 MHz is certainly within the "safe" zone at that voltage.

Note that the ATmega88 is pin-compatible, but there are register differences that you'd need to reflect with modifications in the firmware. (Hopefully none of the timing-critical sections of the USB firmware involve playing with registers that have moved into the "extended I/O" register range...)

Alternatively, you could operate the ATmega8 at the full 5 V, and do what the OP seems to be planning to do: current-limit or shift the USB signaling lines down to levels that are safe for the USB bus using external components.