MicroMod Teensy Custom Carrier - USB Comms

Status
Not open for further replies.

houtson

Well-known member
Hi, I've got stuck on this and think i might be missing something really basic on how to communicate with USB on Micro-Mod.

I built a custom carrier for an audio effect project, powers up fine taking power through usb-c to supply micro-mod with converted 3v3.

TeensyMM runs fine doing its thing with the rest of the board as far as I've tested it flashing lights and making noises but I can't get any usb comms for firmware update or serial outputs.

For USB I've connected :
- GND and VBUS
- CC1 & CC2 pulled low through a 5.1K resistor
- USB_DP & USB_DN connected to d+(mm pin 3) and d-(mm pin 5)

It might just be bad soldering, I've checked a couple of time but
- is there anything else I need to do to get normal USB comms that I'm missing?
- does the schematic and pcb look ok for basic usb comms?

cheers Paul
USB connector schematic
usb-c schematic.jpg
USB connector pcb
usb-c connector.jpg
Board
usb-c micromod.jpg
 
I have the same problem. I've made a prototype carrier board with USB micro B. I'm getting either no recognition of the TeensyMM, USB unrecognised or the "SE Blank RT Family" problem. Putting the TeensyMM back into a Sparkfun ATP board, everything works fine. I don't think it's the traces at fault or a badly soldered one - I have five PCBs. I'm trying to troubleshoot but I think it's something wrong with the design. Any help or insights appreciated:

Project M
 
For what it is worth, I made a prototype, with a Micro-B USB connection and switched to USB host setup closer to Teensy, although my first prototype has some issues, including
I screwed up with the diptrace pattern for the USB connector and the pins were wrong. Did not provide enough capacitor for the USB host (although it appears to work).

So for testing, I hacked up a USB connector to fix the pin order and it is working. I keep meaning to play some more with the board and maybe order new set... But too many other things to play with.
 
Detail of USB micro B to MicroMod. There is a USBLC6 IC to protect the MicroMod - I removed this and bypassed it which made no difference.
Screenshot 2021-10-22 222346.jpg
 
Sorry again I am not much of a hardware expert. But do dabble with my own stuff.

If it were me (and it was earlier with my own board...) I would try to do things like Measure voltages and the like. That is are you providing 3.3v to the MicroMod? As the teensy requires it. Hopefully with enough current and the like.
I used the same VR as the Sparkfun boards do (except different case type) as to make sure of compatibility. Although on my first generation, I screwed up the pads for these, so I have it rigged with an external Pololu DC/DC converter

Before I do my next build I will also make sure I have all of the 3.3v pins connected as well as most/all GND pins...

Also I would double check that all of the other necessary signals are routed to MMOD as well. I tried to route as much of the signals as possible, not sure which ones could be left off...
 
Sorry again I am not much of a hardware expert. But do dabble with my own stuff.

If it were me (and it was earlier with my own board...) I would try to do things like Measure voltages and the like. That is are you providing 3.3v to the MicroMod? As the teensy requires it. Hopefully with enough current and the like.
I used the same VR as the Sparkfun boards do (except different case type) as to make sure of compatibility. Although on my first generation, I screwed up the pads for these, so I have it rigged with an external Pololu DC/DC converter

Before I do my next build I will also make sure I have all of the 3.3v pins connected as well as most/all GND pins...

Also I would double check that all of the other necessary signals are routed to MMOD as well. I tried to route as much of the signals as possible, not sure which ones could be left off...

Thanks I'll have a check on voltage and current levels, good idea.

I'm just using a small 3v3 ldo and was thinking I'd get something larger for next rev. Teensy is running quite happily and doing other stuff as expected but I'll double check levels.

I've got the mm connected up as :

schem.jpg

cheers paul
 
Thanks I'll have a check on voltage and current levels, good idea.

I'm just using a small 3v3 ldo and was thinking I'd get something larger for next rev. Teensy is running quite happily and doing other stuff as expected but I'll double check levels.

I've got the mm connected up as :

View attachment 26269

cheers paul
Note: mine is sort of a mess to read:
screenshot.jpg
My screwed up one is up at: https://github.com/KurtE/Teensy3.1-Breakout-Boards/tree/master/MicroMod
Should update with my WIP...


One signal that jumped out at me was wondering if you need to have the RESET pin connected... I am guessing yes.
 
Success!

It was that I hadn't connected USB VIN to pin 9 on the mm connector - I was using it to convert to 3v3 but I didn't connect it direct to the MM thinking it's 5v and teensy 4 doesn't like 5v.

Having a look at the schematics and your board it looked like it should be connected and as soon as I did it all worked fine.

On the RESET pins, I don't need it on the board (its like on/off on a T4) and it seems to be fine not connected.

thanks all, Paul
 
Success!

It was that I hadn't connected USB VIN to pin 9 on the mm connector - I was using it to convert to 3v3 but I didn't connect it direct to the MM thinking it's 5v and teensy 4 doesn't like 5v.

Having a look at the schematics and your board it looked like it should be connected and as soon as I did it all worked fine.

On the RESET pins, I don't need it on the board (its like on/off on a T4) and it seems to be fine not connected.

thanks all, Paul

Am I correct in reading this as you don't have a separate 5V to 3.3V regulator and are using the MMOD USB VIN as the only power source? Would you then get 3.3V output via MMOD pins 2 and 74?

Thanks much!
 
No.
You need to give the MM 3v3 from your carrier board but for the USB to work you also need to connect USB_VIN.
Sorry if it wasn't clear.
Cheers, Paul
 
No.
You need to give the MM 3v3 from your carrier board but for the USB to work you also need to connect USB_VIN.
Sorry if it wasn't clear.
Cheers, Paul

Gotcha, thanks! I'm working on a board design and would like USB to work. Was going to leave unconnected - thanks a lot for the hint!
 
If usb c also make sure you connect cc1 and cc2 at the usb socket (to GND through 5.1k res). cheers Paul
 
Other than GND, 3V3 and VBUS power and the USB, are there any other mandatory connections? I haven't connected BATT_VIN/3, this is only needed if an ADC is being used? I think this pin can be used as something else anyway? I should probably be asking this on Sparkfun's forum, but feel there's better chance here. Thanks.
 
I haven't connected BATT_VIN/3, this is only needed if an ADC is being used? I think this pin can be used as something else anyway?

Based on what I can see, that maps to Pin 22 on the Teensy 4.1, so it appears to just be an analog input. But I'm only in the design phase currently.
 
I am pretty sure it is simply supposed to have a voltage divider input, which you would
normally pass in 1/3 external voltage…. As mentioned it just connects up to an analog pin…

For my board was not sure that would be sufficient so I did differently.
That is I wish to handle a 3S lipo and pass the voltage in... But 3.3 *3 ~10v..
 
Last edited:
Other than GND, 3V3 and VBUS power and the USB, are there any other mandatory connections? I haven't connected BATT_VIN/3, this is only needed if an ADC is being used? I think this pin can be used as something else anyway? I should probably be asking this on Sparkfun's forum, but feel there's better chance here. Thanks.

On my board I use BATT_VIN/3 as a general IO and all seems to work fine (including the other analogue inputs). I'm fairly sure as KurtE says it's just intended for battery level monitoring as part of the mm standard.

I'd another look at your schematics and couldn't see anything wrong, maybe double check you're getting volts where you expect to on the connector?

cheers Paul
 
If I apply 5V directly to the PCB, sometimes the TeensyMM operates and the LED blinks. Is there some start-up conditions not being met? I think all my GNDs are GNDed. Capacitance problem?
 
Hello, I'm still hitting a brickwall with this. I get the following log produced by Teensyduino 1.55 when I plug USB in:

Code:
20:53:41.537 (ports 2): WM_DEVICECHANGE DBT_DEVICEARRIVAL
20:53:41.537 (ports 2): nothing new, skipping HID & Ports enum
20:53:41.554 (ports 2): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
20:53:41.554 (ports 2): nothing new, skipping HID & Ports enum
20:53:41.747 (loader): handle 57c
20:53:41.750 (loader): Device came online, code_size = 100
20:53:41.751 (loader): Board is: NXP IMXRT1062 ROM
20:53:41.753 (loader): begin operation
20:53:41.809 (loader): File "C:\Users\simon\AppData\Local\Temp\arduino_build_127510\Momentum.ino.hex", 315392 bytes
20:53:41.813 (loader): File "Momentum.ino.hex". 315392 bytes
20:53:41.816 (loader): set background IMG_ONLINE
20:53:41.822 (loader): nxp_write: success
20:53:41.827 (loader): nxp_write: success
20:53:41.829 (loader): HAB open mode, bootcfg=80018
20:53:41.833 (loader): Opps, NXP ROM in open mode, but we do not yet have code for this case :(
20:53:41.836 (loader): start ignoring usb:0/140000/0/A
20:53:41.839 (loader): end operation, total time = 0.084 seconds
20:53:41.845 (loader): redraw timer set, image 79 to show for 3000 ms
20:53:44.838 (loader): redraw, image 9

Plus the image on the GUI:
Screenshot 2021-10-26 205703.jpg

I have Boot and Reset on my PCB. Reset does nothing but Boot gives this on TD1.55 and the PROG LED lights up:

Code:
20:58:27.927 (ports 2): WM_DEVICECHANGE DBT_DEVICEREMOVECOMPLETE
20:58:27.927 (ports 2): nothing new, skipping HID & Ports enum
20:58:27.938 (ports 2): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
20:58:27.939 (ports 2): nothing new, skipping HID & Ports enum
20:58:28.106 (loader): stop ignoring usb:0/140000/0/A
20:58:28.381 (ports 2): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
20:58:28.381 (ports 2): nothing new, skipping HID & Ports enum
20:58:28.382 (ports 2): WM_DEVICECHANGE DBT_DEVICEARRIVAL
20:58:28.383 (ports 2): found_usb_device, id=\\?\usb#vid_16c0&pid_0478#000cf22b#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
20:58:28.383 (ports 2): found_usb_device, loc=usb:0/140000/0/A    Port_#0010.Hub_#0001
20:58:28.383 (ports 2): found_usb_device, hwid=USB\VID_16C0&PID_0478&REV_0106
20:58:28.383 (ports 2): found_usb_device, devinst=00000004
20:58:28.383 (ports 2): add: loc=usb:0/140000/0/A, class=HID, vid=16C0, pid=0478, ver=0106, serial=000cf22b, dev=\\?\usb#vid_16c0&pid_0478#000cf22b#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
20:58:28.383 (ports 2): hiddev_from_devinst_list: iface=0
20:58:28.383 (ports 2): found_usb_device complete
20:58:28.384 (ports 2): usb_add: usb:0/140000/0/A  [no_device] (Teensy) Bootloader
20:58:28.422 (ports 2): WM_DEVICECHANGE DBT_DEVNODES_CHANGED
20:58:28.422 (ports 2): update_usb_device, devinst list change, old had 1, new has 2
20:58:28.422 (ports 2): hiddev_from_devinst_list: iface=0
20:58:28.423 (ports 2): hid, found devinst=00000008
20:58:28.423 (ports 2): hid, path=\\?\hid#vid_16c0&pid_0478#6&7c3a5f6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
20:58:28.423 (ports 2): hid,  opened handle
20:58:28.423 (ports 2):  devinst=00000008, location=usb:0/140000/0/A
20:58:28.423 (ports 2):  vid=16C0, pid=0478, ver=0106, usepage=FF9C, use=0026
20:58:28.423 (ports 2):  devpath=\\?\hid#vid_16c0&pid_0478#6&7c3a5f6&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
20:58:28.424 (ports 2): usb_add: usb:0/140000/0/A  hid#vid_16c0&pid_0478 (Teensy MicroMod) Bootloader
20:58:28.607 (loader): Device came online, code_size = 16515072
20:58:28.609 (loader): Board is: Teensy MicroMod (IMXRT1062), version 1.06
20:58:28.662 (loader): File "C:\Users\simon\AppData\Local\Temp\arduino_build_127510\Momentum.ino.hex", 315392 bytes
20:58:28.666 (loader): File "Momentum.ino.hex". 315392 bytes, 2% used
20:58:28.671 (loader): set background IMG_ONLINE
20:58:28.725 (loader): File "C:\Users\simon\AppData\Local\Temp\arduino_build_127510\Momentum.ino.hex", 315392 bytes
20:58:28.729 (loader): File "Momentum.ino.hex". 315392 bytes, 2% used
20:58:28.736 (loader): elf appears to be for Teensy MicroMod (IMXRT1062) (16515072 bytes)
20:58:28.739 (loader): elf binary data matches hex file
20:58:28.742 (loader): elf file is for Teensy MicroMod (IMXRT1062)
20:58:28.745 (loader): using hex file
20:58:28.748 (loader): begin operation
20:58:28.817 (loader): flash, block=0, bs=1024, auto=1
20:58:28.822 (loader): flash, block=1, bs=1024, auto=1
20:58:30.625 (loader): flash, block=2, bs=1024, auto=1
20:59:03.008 (loader): program: write error
20:59:03.010 (loader): HID/win32: HidD_GetPreparsedData ok, device still online :-)
20:59:03.015 (loader): end operation, total time = 34.264 seconds
20:59:03.019 (loader): set background IMG_DOWNLOAD_ERROR
20:59:03.022 (loader): redraw timer set, image 11 to show for 4000 ms
20:59:07.036 (loader): redraw, image 10
20:59:07.038 (loader): set background IMG_ONLINE

and it sits like this for a minute:

2.jpg


Again, any help is appreciated. I've tried various things. I contemplated that the PCB maker screwed something up (one board didn't have VBUS soldered on the connector) but I'll give them the benefit of the doubt.
 
Hello, I've spent some time troubleshooting my problem with USB and I've come to the conclusion that there's nothing wrong with the PCB or the track routing. I'm suspecting it's the power-on sequence. I'm using an AMS1117-3V3 regulator that simply supplies 3V3 as soon as it receives 5v from the USB. Is this the wrong type of regulator? Am I supposed to use a TLV75733P / AP7361C-33 that enables 3V3 when the MCU tells it? According to the Power Up Sequence on this page https://www.pjrc.com/store/ic_mkl02_t4.html, I think I'm doing it wrongly. Thanks.
 
I'm using an AMS1117-3V3 regulator that simply supplies 3V3 as soon as it receives 5v from the USB. Is this the wrong type of regulator?

That should work.


Am I supposed to use a TLV75733P / AP7361C-33 that enables 3V3 when the MCU tells it?

No, you should not need a special regulator with enable signal, because MicroMod has this 2-transistor circuit which allows the 3.3V power to pass according to the required startups sequence.

screenshot.png
 
I would like to understand why this isn't working. Hopefully we can come up with better guidance for making PCBs for MicroMod...

Looking at your PCB layout image from msg #5, I'm struggling to see how 3.3V and GND are really connected. Is this a 4 layer board with ground and power planes not shown? Or maybe it has flood fills not shown?

Especially for 3.3V power, how does it get from the regulator to the two 3.3V inputs on MicroMod?

a.png

Can you show actual images of all the layers? Or share the gerber files for precise viewing of the actual layers?
 
Yes, it's four layer: signal, GND, 3V3, signal. I've tested the voltages and GNDs on the M.2. I've removed and bypassed USBLC6 and soldered a new USB micro connector direct to pads 4 and 6 as seen in the photo. I can get brief Serial messages and then USB disconnects. It's flaky and I see no reason. Here are the gerbers, it was intended as open source eventually. Many thanks for wasting your time with this!

20211101_220923.jpg
 
Status
Not open for further replies.
Back
Top