FRDM-KW019032: misleading manual, unconnected pins, incorrect schematic, not working UART

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

FRDM-KW019032: misleading manual, unconnected pins, incorrect schematic, not working UART

925 Views
matteolasagni
Contributor II

Hi, I have purchased an FRDM-KW019032 development board and I am trying to interface it to external hardware.

As the board is equipped with many connectors, supposedly compatible with the Arduino pinout, I started with designing the external hardware.

With big disappointment I have discovered that the majority of the pins on the external connectors is not physically connected to the MCU. According to the pin definition reported in the manual "Document Number: FRDMKW019032UG, Rev. 0, 11/2015", it appears that such pins should work straight away, out-of-the-box.

Instead, after a deep analysis of the FRDM-KW019032 schematic it turns out that many non-populated bridges (zero-ohm-resistors) are required in order to route the MCU I/O to the external pins.

I think that the document FRDMKW019032UG is pretty much misleading in this regards, as it does not mention that in order to use the connectors J1-J4 reported in tables 3. and 4., one must first populate all the zero-ohm-resistors indicated in the schematic as DNP (do not populate).

In my humble opinion, this is quite frustrating as the expectation when I bought this expensive board was to have it work out of the box as the manual indicates.

I believe that either the manual and the webpage must clearly state that all the external pins are not connected by default,  while it is necessary to manually solder all the missing resistors, or provide the FRDM-KW019032 board equipped with the missing resistors.

The schematic reports in a note that in order to source power to external pins some resistors need to be populated.

First, this note only indicates how to supply power externally but does not mention that the same action is required to have analog and digital I/O on external pins.

Second, this note is incorrect as it report wrong pin numbers. For example, where it says: "To source 3.3V to J3.10: populate R127" the pin J3.10 is wrong as the correct pin where 3.3V are sourced is J3.8. The same occurs for all the other pins reported in this note.

Another issue I have encountered (now reported to the technical support) is that the UART communication is not working on pins 2 and 4 of connector J1. The schematic indicates that a voltage-level translator is embedded on the board to match the external I/O voltage range and the MCU I/O voltage range.

Also the voltage translator (U17 on the schematic) is not powered by default but it requires a resistor (R138 according to the schematic).

After having populated the board with the missing resistors, I have connected the external UART device to the pins 2 and 4 of J1 (UART0 RX/TX) discovering that the voltage level-translator is not working properly.

Without the external device, indeed, the serial communication between the board and the PC (it works through the MK20 which is embedded on the board and exploits the same UART0 interface) works properly. As soon as an external device is connected to the external TX/RX pin nothing works. 

What is really puzzling me, is that even when I connect the high-impedance probes of an oscilloscope on the external TX/RX pins, the serial communication through the MK20 is also interdicted.

5 Replies

651 Views
gerardo_rodriguez
NXP Employee
NXP Employee

Hi Matteo,

 

The FRDM-KW01 headers are configured by default to be used as an Arduino compatible shield or standalone operation. For example, pin 8 of J3 can be used as input power to the MKW01 provided by a host board. The IO_REF pin is used to enable compatibility between the host board with different voltage levels. For using the FRDM-KW01 board as a host, you must populate the required 0ohm resistors to enable the outputs on the headers.

 

I understand the confusion about the FRDMKW019032UG and it should be more clear about this. Thanks for your feedback, I will share it with the design team.

 

About the note on using the board as a host, you are right, the note should be:

 

Using this board as an Arduino Host may require populating one or more of the following bottom side resistors:

-To source 3.3V to J3.8: populate R127

-To source 5V to J3.10: populate R140

-To source J3.6 and IO_REF: populate R139 (5V) or R138 (3.3V)

-To source 3.3V to J2.16: populate R128

 

About your last issue, I can’t reproduce it on my side. I have a FRDM-KW019032 with R138 populated to connect IO_REF to 3.3V and enable the level translator. I have loaded the SMAC connectivity test to the KW01 and see the expected UART signals in pins 2 and 4 of J1 with an oscilloscope. What is your whole setup?

 pastedImage_1.png

Regards.

0 Kudos

651 Views
matteolasagni
Contributor II

Hi Gerardo,


thank you for your reply.


I think it is great to have headers compatible with Arduino, but what is hard for me to understand is the purpose of having "floating" external pins completely disconnected by default.
I mean, as an end-user it is quite frustrating to discover that additional work is required to make a brand new board work as expected!

I have tried again with the setup that you also described and it seems that by changing the gain of the probe from 1x to 10x I can see the UART signals on the pins 2 and 4 of J1.
This indicates that the voltage-level translator is extremely sensitive.

Now, as my final goal is to connect an external UART device to the UART0 of the MKW01, I try to replace the probe with an UART sniffer.
For that I use an FTDI cable whose RX connects to one of the pins TX of J1 and whose ground connects to pin 12 of J3.
With this setup nothing works, not even the communication between the MK20 and the MKW01 (the IO_REF is properly set to 3.3V).

As a counter-test, I disconnect the FTDI-RX from J1 and connect it directly to the UART0_TX pin of MKW01 (basically I hold the FTDI-RX pin against the jumper J41, without removing the jumper).
By doing so the voltage-level translator is excluded, the communication MK20-MKW01 works correctly and the messages passing on the UART can be sniffed and displayed on both  serial terminals (the one paired to the FTDI and the one paired to the MK20).


Now, considering that the UARTs of MK20 and the MKW01 are permanently connected to each other and the only way to disconnect them is to remove two resistors (R88 and R89), is it possible to disable the UART on the MK20 in order to use the two external pins of J1 marked as UART0 RX/TX?
Also, in order to use the same pins as digital I/O (D0/D1) to be the Arduino-compatible, how should one prevent any interference with the UART of the MK20?


Regards,
Matteo

0 Kudos

651 Views
gerardo_rodriguez
NXP Employee
NXP Employee

Hi Matteo,


There are several options that you can try to disable the MK20 UART pins:

  1. Power the FRDM board with an external power supply through J28. This way the MK20 will not be powered and won’t interfere with the UART communication between the MKW01 and the external serial device.
  2. Program the MK20 with an application that disables the UART pins.
  3. Remove R88 and R89 to isolate the UART lines.


Let me know if this works for you.


Regards

0 Kudos

651 Views
matteolasagni
Contributor II

Hi Gerardo,

thank you!
I have applied the first suggestion and powered the board with an external power supply connected to the pin  J3.16 (P5-9V_VIN), which is equivalent to using the pin J28 you pointed out.
With this setup it is possible to make the UART work almost flawlessly.

I have not tried the other two suggestions.
However, the second idea of disabling the UART on MK20 is something I might need to test.
So, if I replace the firmware of the MK20 with a custom firmware, is it possible to later restore the original OpenSDA without an external programmer?

Regards,
Matteo

0 Kudos

651 Views
gerardo_rodriguez
NXP Employee
NXP Employee

I'm glad that worked for you.

You could use the OpenSDA bootloader to update the K20 with a custom application, but you need to make sure that the application gets programmed succesfully since this bootloader is meant for programming OpenSDA applications. I would recommend using an external debugger for this purpose. The application running on the K20 would also need to enable the power switch to the target MCU.

Another thing to note is that the J1 pins 2 and 4 have RX and TX swapped so it can communicate as a shield to another board with arduino headers. You can easily swap this pins by changing the jumpers in J41 and J42 to make it arduino host compatible.

Regards.

0 Kudos