[NTLK] MP2x00 Internal Interconnect Breakout

Jake Bordens jake at allaboutjake.com
Sun Jan 4 20:37:12 EST 2015

>My board worked as a prototype, but after I had PCBs made, I could not 
>get the PCBs to work. Unfortunately, I ripped the breadboard setup apart, 
>and I never managed to get it to work again. Now I have 20 PCBs laying 
>around that don;t do what I need ;-)

Yeah, my bluetooth boards were pretty much the same, but PCB's were more 
expensive then so I didn't get many made.  I even made an RTS/CTS error on 
one and had to cut some traces and just ditch the flow control.

>If you do manage to get the WiFi working, I would love to have another 
>run at my USB setup.

I'm working on it slow and steady.  I have to write a little extension 
that will add "mdem" to the GetGlobals().ModemLocations array next.  I've 
read that when you use this serial identifier, it toggles the GPIO pin 
appropriately for internal use of Serial 3.  

My concern with Serial 3 is that it supposedly can't do 119200... But I've 
seen the USB-001 drivers do mention higher baud rates, so I'm not sure.  I 
have to test the baud rate myself.

>My problem was, that I did not get the OS to switch from the external 
>port to the internal port. The breadbord setup was able to do that, But 
>the PCB not. PLease let me know if you have good information on that.

Ekhart's code was my main guide of this: 

He has code to toggle the DIO pin for Serial 3.   What's interesting to me 
is that the ROM actually has two functions already:

0x0026d050	SerialPort0LineDriverConfig__16TVoyagerPlatformFUcT1	
0x0026d094	SerialPort3LineDriverConfig__16TVoyagerPlatformFUcT1	

Ekhart's code, as best I can tell, does pretty much the exact same thing 
as the SerialPort3LineDriverConfig function.  These functions take 2 
parameters.  I'm a bit rusty on my assembly and ABI, but from what I see 
paramter 1 is a boolean and parameter 2 is a magic number of some sort.  
0x20 passed on the 2nd parameter does different things than any other 
value.  I haven't tried calling these functions directly yet.

SerialPort0 uses a GPIO while SerialPort3 uses a DIO for toggling the 
enable pin.   I'm hoping that I can call these "LineDriverConfig" 
functions to do what I need rather than the DIO/GPIO functions directly, 
as Ekhart does.

For serial3, my impression is the SerPortSelect pin doesn't do much.  I 
think you can drive port 3 regardless of what this pin says, from either 
the internal or external location.  You're just not being a good citizen, 
and a well designed peripheral will honor the state of this pin.  Port0, I 
think its a little more important because of the LTC line driver IC.  I 
think the SerPortSelect pin in this case shuts down the driver for the 
external port, preventing a conflict with the device on the internal port.

I'll keep you posted.  I got side tracked with an eMate that I bought... 
But I'll get back playing with the wifi project soon.


More information about the NewtonTalk mailing list