I've been using the LM3S6432 and the S2E-RDK code to provide an Ethernet-Serial bridge on our products. To date, it's been pretty successful.
On my most recent product, I've got TWO LM3S6432 processors on a board, connected via their PHYs to a Kendin KS8995XA Ethernet switch (which connects them to the Ethernet network). (We use two because we need 4 total Ethernet Serial ports.) The problem is that on power-up, usually one or both chips fail to boot and/or link to the Ethernet. Both chips DO WORK, as they can (often with some difficulty) be reset by grounding the nRST pin. When a chip comes up, it's stable. I can PING it, I can load web pages from it, and I can even reset the Ethernet switch without losing the link.
At first, I assumed this was a reset problem of some sort. In the initial design, I use the EXACT same RC circuit (10K + .47uF) used in the S2E-RDK reference design. Changing the cap value from .47uF to 22uF *GREATLY* lengthened the reset voltage ramp-up, but had no effect on reliability of the start-up (in fact, it may have gotten worse). The reset curve is clean and free from any abnormalities.
I'll add the following, just so bases are covered:
1. VDD (+3.3V) to the chip is clean and steady.
2. 8MHz and 25MHz crystals are running at the correct frequency.
3. No problems connecting to the LM3S6432 via JTAG, programming the flash memory, or programming the Ethernet MAC address.
4. All the external strapping looks correct (nTRST pulled high, ERBIAS pulled low through 12.4k, CMOD0 and CMOD1 pulled low through 0 ohm resistors, etc.).
5. LDO up and operational (2.75V).
I don't have any external way of knowing if the processor has started running (short of the Ethernet Link LED coming on) and I'm working to rectify that now. I'm setting some extra I/O to go high at strategic points in the code. I'm also setting up the debugger so I can break into executing code. My best guess at the present is: yes, the processor is booting but is failing to connect to the Ethernet.
QUESTIONS:
1. Has anyone had any similar experience?
2. And thoughts, ideas, questions?
This is probably not related to your problem - you are connected directly to a switch so I doubt you are enabling crossover detection, but one issue that I've run into in the past was enabling crossover detection when the magnetics we used in the ethernet jack were asymmetric. When we did this, the device (in our case LM3S6911) would not always connect to the ethernet. Disabling crossover support fixed this (short term fix for devices we had already manufactured). Switching to an ethernet jack with appropriate magnetics also fixed this.
And just in case - I assume you aren't doing something silly like assigning the same MAC address to both microcontrollers.
Do you have magnetics between your microcontrollers and your switch? If not, maybe there's an issue in that area.
Hi Andy,
This is a strange problem. Offhand I don' know why you would be having this issue and it sounds like you are generally checking the right things.
How many boards do you have and do they all act similary?
If you hold one in reset but allow the other to boot, does it boot properly?
- Ken
Hmmm. In my design, I have the two LM3S6432s conneceted via CAPACITIVE coupling to the Ethernet switch. This is *supposed* to be the means by which the PHYs on the ARM are connected to the switch.
The two chips do have seperate MAC addresses. When they're both up and running I have no trouble getting Ethernet traffic to and from them (e.g., can PING each and load their web pages, etc.).
Given what you've said, I'll look into crossover detection.
(Additional data point: I modified the software to toggle one of the chip's output on start-up, and I do not see this happening. Whatever is wrong, it's either very early in the process and/or very low-level.)
Ken,
Yes, it is a little perplexing! I've built many other boards with this same processor and code with ZERO problems...this new board copied the processor design as a block...the only thing new is the Ethernet switch.
I have three boards and they're all similar. Holding one in reset does not affect the other for good or bad.
Thanks,
Andy
Something I noticed while going over the datasheet...
I have the nWAKE pin tied to ground (as the reference design does) and the datasheet says this pin should be NO CONNECT.
Anyone have any idea if this matters? Unfortunately, it's not quite possible for me to sever the trace and find out (it's under the BGA).
The preferred practice is to tie nWAKE to ground if you are not using it. It is OK to have it be a no connect also. This would not be the cause of the issue.
Andy Huttonthe only thing new is the Ethernet switch
So you are connecting the processor directly to the switch, and not through any magnetics? I did not think this was supported on the Stellaris parts.
I was doing the capacitive "transformerless" connection...I see that isn't supported on Stellaris, so I'm integrating some magnetics. The transformerless connection was causing the boot issue; once I hooked the LM3S6432 to an RJ-45 with magnetics, the issue went away.
Anyone have a guide to how to hook up an isolation transformer between the LM3S6432 and the switch? Is the interfacing from the LM3S6432 to the transformer identical to what it would be if this transformer were the one integrated into the RJ-45? That is, on the LM3S6432 side should I apply VDD to the center tap on both Rx and Tx, and pull each member of the Tx and Rx pairs up to VDD with a 50 ohm resistor?