DEBUG_SWO and DEBUG_EN pins

slash2

Member
I need a 32 bit wide data bus (custom board) and it looks like EMC (00-31) and B0-B1 are the best candidates. I do not need Ethernet or the optional memory devices, so the only pin conflicts I see are (as named in Micromod Schematics) Debug_SWO (B0-13) and Debug_En (EMC-01). I have searched the forum, code, and data sheets and it's not clear where these pins are set up or used. Well, actually, it does seem that SWO is fixed to B0-13 according to the data sheet, but I saw a note in one thread that T4.1 doesn't use it. In any case, I think I'd actually rather use the EMC bus as I think it will be easier to route. So, can either pin be used or moved?
 
EMC 0 to 31 or GPIO B0-B1 are the only 2 options for a full 32 bit wide bus

The AD_B bank you can get a 16 bit sequential bus. 7 of the lower pins are used for the bootloader.

The remaining 32 bit bank is a mix of EMC 32+ and the SDIO banks. Some of the SDIO is used for the bootloader

You don't need to connect Debug_SWO or Debug_EN. I believe it's to do with the JTAG debugger, and possibly was used in the development of the teensy 4.1.
 
Excellent news - thanks! I started on the board layout today in anticipation that it would work out.

I guess I’ll need to add the additional pins to the pin definition and not execute the memory setups.
 
If your just reading a 32 bit register I wouldn't bother with adding the pin definitions (it's a pain)

Eg, GPIO7 is the B0,B1 register

uint32_t value = GPIO7_PSR; (it's fast this way)

I'm not sure what GPIO the 32 bit EMC register is
 
9 - One of the few I things I know. I detailed my troubles getting this project working on the bench in the thread “Fast Data Logger”.

But yeah, I guess you are right. I don’t need to talk to each pin, I’ll just need to set them as inputs- and that can just be done with some register writes I imagine.
 
But yeah, I guess you are right. I don’t need to talk to each pin, I’ll just need to set them as inputs- and that can just be done with some register writes I imagine.
Example:
Code:
// Release data pins by putting them back to input
static inline void releaseData() {
  GPIO6_GDIR &= ~0x00FF0000;   //Set the 8 Data pins of GPIO6-16 to GPIO6-23 as input (note the invert ~)
}
 
Back
Top