Right. Long story. I just spent a whole day trying to figure out some really oddball problems.
Heres the setup : i am working on a design using an ftdi 2232h chip. I got about 100 boards made.
I am using th 2232h in dual fifo mode so i want to program the eeprom to load the correct driver and use. A custom string so my software can find the correct unit.
I start flashing the first boards and everything goes fine. After about 20 boards the programmer software can't find boards anymore...
The annoying thing is everytime you plug in a new board windows wantss to check the updates, load new drivers and assign new comports. So i thought.. Hmm maybe i ran out of comports...
So i tried cleaning the registry and uninstalling. No avail. Boards were not recognized by ftprog.
So i grabbed usbspy to snoop the bus. The board enumerated fine, windows saw it as a dual usb serial port. So the board works and is enumerated. Yet the programmer can't find the board ?!? Wtf.
Now i know there are revisions of that chip so i doublechecked i had the latest version. Since we got these from digikey that pretty much ruled out fake devices too.
By this time half the day was gone and frustration was high. 80 boards not programmable.. .!?,!,
I got on the phone with ftdi. They were baffled as well . They snet me beta versions of the new driver to see if that would solve anything. After scrubbing the drivers off , telling windows not to download automatically and some more timewasting ... Zilch. Exactly the same crap. 80 non working boards.
Bloodpressure was raising boiling point by now. Especially since i needed to ship these tonight.
I need to know if it was the ftdi or the boards. So i decided to do a test. I desoldered an already programmed eeprom and put it on a non programmable board to rule out problems between ftdi an eeprom.
Lo and behold. The device enumerates correctly , shows up with my custom strings and i can reprogram it. Ftprog finds it without a hitch...
That's odd.. These boards were all made on pick and place with parts from the same order.
I look at the markings.. Two different markings... Wtf ?
I got some atmel 93lc46 laying around in a bag, they are different footprint but i hotwire them in. So8 vs sot23-6 . Detects and programs fine. So its not the low voltage that poses a problem.. Darn it. What is going on. Look on the datsheet ( i had a national semi datsheet laying around , nope all is well )
So what the hell is the mystery part on my board.. I grab the datasheet from my order code. Son of a gun ! The nonprogrammable parts are microchip 93lc46a where the programmable ones are microchip 93c46b
Now Study the microchip datasheet a bit more. It turns out that the suffix for a microchip 93..46 had a special meaning...
An A suffix means the device uses 8 bit transfer frames. A b suffix means 16 bit frames. A c suffix means the frame size is programmable using an extenal pin...
Guess what.
-The ftdi ONLY works with 16 bit transfers.(clearly stated in their datsheet. I knew that. )
- i ordered 93c46b and digikey shipped me 93lc46a ....
- only floody bucking microchip has this 8 /16 bitmode controlled by the suffix. The original 93c46 from national nor the atmels nor any other vendor has that suffix crap. They listen to the org pin. But not those nutcases from Arizona...
Aaaaaaargh. A whole day wasted and my life probsbly shortened with a whole week.
I called digikey and they are replacing the chips overnight. They shipped the wrong ones. I ordered the right ones. ( i used the same partnumber from the ftdi bom which has the 93c46b listed. )
We had ordered these in two batches. I had 20 correct ones...
Point is
-microchip are bass ackwards with their damn crap. No other manifacturer has this weirdness.
-Digikey does mess up sometimes
- part suffixes do matter
- always use datsheets of the exact part and manufacturer you are installing.
Grmbl.... Stomp stomp stomp -slam-