Freescale has added a new Freedom board: the FRDM-KL46Z:
My opinion? The best Freedom board so far, I love it!
The board has the same form factor as the FRDM-KL25Z. Freescale lists a ‘budgetary price’ of $15 for the board. Prices might depend on region and distributor (Mouser, Farnell, DigiKey), but it is in the same range as the FRDM-KL25Z.
💡 While the Freescale page links to Mouser and DigiKey as distributors, it seems they do not have it in stock (yet?). So it might worthwile to ask your local distributor if you cannot wait ;-).
Features with differences to the FRDM-KL25Z marked in bold:
- 48 MHz ARM Cortex-M0+
- 32 KByte SRAM
- 256 KByte FLASH
- 2 user push buttons
- Capacitive touch slider
- 4 digit 7-Segment LCD
- MMA8451Q accelerometer
- MMA3110 magnetometer
- Ambient Light Sensor
- Green and red user LED
- OpenSDA onboard USB debug interface
- ‘Arduino compatible’ headers (unpopulated)
So many more components like buttons, LCD, magnetometer, ambient light sensor. Instead of the RGB LED on the earlier FRDM boards, the FRDM-KL46Z has a green and red user LED.
The biggest plus is the added ‘leg room’: twice as SRAM and FLASH compared to the FRDM-KL25Z 🙂 :-).
Ambient Light Sensor
The ambient light sensor is the same as on the FRDM-K20D50M. The sensor can be disconnected with cutting the trace below the nearby J8 header:
The board has the Freescale MAG3110 magnetometer on it:
According to the schematics, there could be boards with an FXOS8700CQ which combines an accelerometer and a magnetometer in the same package.
💡 I’m working on writing a driver for the MAG3110 which will be available soon.
The KL46Z microcontroller features a LCD interface, so the board has a small display (LUMEX LCD S401M16KR) added to show the functionality:
The LCD has 8 front planes and 4 back planes, able to display four 7-segment characters, 3 dots and one colon (:).
The jumpers are very similar to the other Freedom boards, and most come unpopulated:
- J6: bypass of D4 Diode (avoid voltage drop)
- J7: configurable VREGIN
- J8: isolation of ambient light sensor
- J9: power isolation of the K20 (OpenSDA)
- J12: Power isolation for VLL3
- J15: support for 5VDC (see this post)
- J16: Power for USB Host mode
- J17: power isolation and measurement for the KL46Z
Software and Tools
The board has the MSD OpenSDA bootloader installed. So as with the previous Freedom boards, it needs to be replaced with the OpenSDA Debug Application (see this post on OpenSDA). Freescale has the ‘KL46_SC’ (Sample Code Package) and the ‘FRDM-KL46Z_QSP’ (Quickstart Package) available in their download section here. The board/microcontroller is supported in CodeWarrior for MCU10.4 out of the box in the New Project Wizard:
Keil just released the µVision 4.72. I had not a chance to use the board with Keil or IAR yet, but I do not see a problem why it would not be supported. And with little changes to the linker file it works as well with a stock Eclipse version (see this series of tutorials).
FreeRTOS on the FRDM-KL25Z
As first project, I have FreeRTOS V7.5.0 running on the board:
Nothing spectacular: the RTOS with tasks blinking LED’s 🙂 The project is available on GitHub here. Additionally I’m working on a more complex project to use the components on the board.
With twice as RAM and FLASH compared to the FRDM-KL25Z, the FRDM-KL46Z is definitely a better board than the FRDM-KL25Z in my view, especially for the same amount of money. I will check if I could use the MAG3110 on the board for my Zumo project, as it would help making relative turns. With the extra SRAM, I’m able now to collect much longer Percepio FreeRTOS+Trace data, which is incredible helpful.
I’m working on a driver for the MAG3110 which I should be able to release soon on GitHub. Until then, I work on a board support package to use all (or most) functions on the board. I have not tried to the KL46Z USB yet, so this will be something to look into soon too.
While the FRDM-KL46Z is my favorite Freedom board for now, my wish list for a next board is
- ARM Cortex M4 >100 MHz
- plenty of on-chip SRAM and FLASH (I would be very happy with >=64 KByte SRAM and >=256 KByte FLASH)
- USB device and host
- micro-SD card socket
- at a price around US$30?
Then the ‘Freedom’ might take over the world ;-). What I dream of is something below the Raspberry Pi, but for hardcore realtime with no need for Linux, as I have Linux running on the Raspy :-).
Happy Boarding 🙂
Really a very nice board. Comparing the processor price difference (from KL25) it is less than $0.40 for double of SRAM , Flash and SLCD controller.
I need to check NuttX on it, with more memory I could run more applications and even a TCP/IP stack with WiFi. Currently I’m using CC3000 that doesn’t need external TCP/IP.
I think you should be able to run NuttX on the KL46Z without problems, as it looks that the peripherals are similar or the same as the ones on KL25Z. Let us know how it goes.
I was just about to order some KL25Z Rev D boards. I am going to go with these instead. They look great. Thanks for the heads up, Erich.
Newark/Farnell element14 has these in stock if anyone is interested (~40 units). I already spent my monthly quota on parts though.
Pingback: Device Driver for Freescale MAG3110 Digital Magnetometer | MCU on Eclipse
Pingback: Kinetis ARM Cortex M4 DIY Board for $5 | MCU on Eclipse
I still wish they would drop that capacitive slider and add SD card socket.
Yes, that would make the FRDM boards much more useful.
Are you, in general, happy with the form factor of these boards?
Do you find the Arduino pin compatibility useful / important?
What else might you change if you were in charge of their designs?
Yes, I’m happy with the form factor/size. And the Arduino pins are very useful for me: that way I can easily use common shields, without creating a board myself. For many applications (like a one of a time project) it is much faster and convenient to use an existing shield, instead of designing my own. The only problem I see is that with a shield mounted, e.g. the RGB LED is not easily accessible any more.
I have my cute little KL46Z and think it is the “bee’s knees”. 😉
However, I haven’t yet figured out how to make the USB Processor Expert component run on the KL46Z. Do you have any suggestions?
I downloaded the Beans components from your github page last week so I think I have the updated versions.
Thanks in advance.
Excellent (or bad?) timing: I’m writing an article just about this. Tonight I completed the support for KL46Z and K21. I wanted to release things tonight,but I’m debugging a strange problem (in combination with an RTOS). If you can wait a day or so, that would be great. Otherwise the USB component sources (not the *.PEupd) files are on GitHub. The USB stack itself works, but I want to debug first a strange side effect on FreeRTOS until I make the official release package.
THANK YOU ERICH!
I can wait a day or so.
I have pushed the new components on GitHub (https://sourceforge.net/projects/mcuoneclipse/), plus FRDM-KL46Z examples (https://github.com/ErichStyger/mcuoneclipse). I plan to write an article with some writup around it tonight. Let me know if this works for you so far.
Pingback: USB for the Freescale ARM Kinetis KL46Z and K21D50M | MCU on Eclipse
KL26/36/46 has two more features than KL25, one is LCD, the other is I2S. Why FSL can not offer on board audio CODEC on that new board?
I have a new board to support ADB between Android and KL25 board. If I use KL26, then I can support ADK between Android and KL26 with audio playback feature.
Yes, I have seen other boards with I2S too, but I admit I have not used I2S in my designs (yet?).
Pingback: Zumo Robot Chassis PCB arrived! | MCU on Eclipse
Thanks for the tutorial on UART communications with the FRDM-KL25Z!
It also works for the FRDM-KL46Z board!
I noticed that the UART Hello World example that comes with the KL46Z’s sample code package doesn’t work. The KL46Z thinks that the fact that the UART’s Rx line is high means that a 0xFF character is constantly being received and so it constantly echoes back 0xFF, CR and LF characters to all the terminal apps I have tried (PuTTY and Realterm). I already checked the Tx/Rx lines with an oscilloscope. If I actually send a character through the terminal then the KL46Z will properly detect it and echo it back but that doesn’t stop the KL46Z from “receiving” endless fake 0xFF characters.
I have already tested that I can modify the example to send whatever strings I want to the terminal and I have already tried the FRDM-KL46Z’s UART1 and UART2 ports in every possible pin configuration available on the board with different Bauds. (I talked to the UART1 and 2 ports using an FTDI232R chip) I still get the same problem. It almost seems like the KL46Z is not checking for the start bit before deciding that a character has been received.
Also the PDF instructions that come with the FRDM-KL46Z’s sample code don’t match the sample code’s behavior. For example, the instructions say that the KL46Z board will change LED colors with every character received. But this is not part of the example C code.
Have you or your students noticed this issue? I image that one of your students might soon notice this if they start using the KL46Z board as a replacement for the KL25Z boards.
are you saying that the sample code that Freescale provides does not work, but the code on my GitHub/Processor Expert version works? As for myself and my students, they are only using the Processor Expert code. The sample code delivered with the board sometimes is good to check out some things, but we never used it as that code did not fit our needs.
You are correct: your GitHub/Processor Expert code works. Freescale’s example UART code did not work for me.
A question about the KL46Z and FreeRTOS:
If I use an RTOS (perhaps FreeRTOS), how would I communicate with the USB CDC, UART and I2C peripherals? Can I just use the Processor Expert components and function calls that I have been learning about from your tutorials? Or does FreeRTOS for Kinetis offer a completely different set of API calls that I need to learn to achieve the same functionality as the Processor Expert components?
I’m already comfortable using the Processor Expert generated libraries. The next step in my application is to code some heavy number crunching. So this is my last chance to make major design decisions before I start working on the more involved phase of my project.
My current experience using an OS for embedded applications is using Android and the IOIO-OTG board for sensor data acquisition. But I don’t need any touch screen GUI features in my application. I just need data acquisition and processing within the KL46Z and then data transfer to a host computer using USB CDC. Maybe an RTOS is overkill. I’m still trying to figure this out.
Thanks again for all your tutorials! I have been recommending them.
the answer might depend on the RTOS used. Some RTOS ‘own’ the interrupts: so every interrupt goes through the RTOS/interrupt dispatcher. Such RTOS typically need special drivers and cannot be used without an RTOS. Other micro kernels use a more lightweight approach, and FreeRTOS is one of them. The RTOS does not have a dependency on the drivers, so you could use whatever API you want, for example the Processor Expert one. I’m using FreeRTOS with Processor Expert USB/UART/I2C/SPI/etc drivers, as shown in many of my examples. So no need to learn something new at all.
An RTOS might be an overkill (depends how it is used). But in the case of FreeRTOS is is very light, but on the other hand it allows me to scale my application easily. So this might be a good choice for you.
Happy exploring 🙂
i dont have the audacity to request you a driver for LCD display present on FRDM-KL46Z board, but a simple example code that use the LCD Controller on KL46 core, is possible to view?
TNX for all, Erich.
there is already a project on GitHub which does what you are asking for:
Pingback: Review: New FRDM-KL26Z Board | MCU on Eclipse
Erich, Thank you for all the hard work writing all this code. I have ported the KL46Z LCD lib for use on the MBED FRDM-KL46Z, and would like your permission to release the Lib to MBED users. I have noticed that you have not put any copyright notice on the source files, if you agree for me to release the source, can you please advise what copyright you require.
yes, I know I’m not very good at placing that kind of information into each header :-(.
To be sure: can you point me to the file you are interested in (link to GitHub)?
I will then check the state and make sure it has a the proper marks in it.
All files at this location https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/FRDM-KL46Z/FRDM-KL46Z_Demo/Sources/LCD
The LCD files are from the Freescale examples. I have added the proper note and licensing information on GitHub now (I should have done that in the first place, so thanks for that reminder).
I hope this gives you what you need.
I have tried to use your github code but it complains of missing Cpu.h file.
That file is generated by Processor Expert: you need first to generate code with it.
Where do I get the ‘User Components’ ? I have only Data, Tools Library and Tutorials And Demonstrations under SW.
Ooops, this is misplaced. I was reading a print of ‘Blink the FRDM-KL46Z board in 5 …’
My user components are available on SourceForge, see https://mcuoneclipse.com/2014/10/21/mcuoneclipse-releases-on-sourceforge/
Thanks ! So there was a reason they called it ‘user’ components…
I installed the FreeRTOS PEx component (v8.0.1) which works great on the KL46Z. One of the features of the RTOS is missing however, namely the software timer API. Is there a plan to include this into the PEx component. I can always just include these files into the build directly, but using the tool helps maintain a consistent code base…all your efforts are very appreciated!!
yes, I admit that I was too lazy to add that interface too. But you are right, I should do this. Let me see if I can do this for the next release, ok?
I have added the Timer API now:
You can grab it from there, or wait for the next release (should be before end of the year).
i want to use Freescale FRDM KL46Z to record évolution of the speed for a vehicle
i need help please
Well, this is a very generic question: it all depends on the sensors you have available, the FRDM-KL46Z is probably your smallest problem. I suggest you do some research how to use sensor data? I recommend that you look into quadrature encoders you can read out.
Pingback: Unboxing the Freescale FRDM-KL43Z Board | MCU on Eclipse
thanks for all of your work & passion.
I must be stupid but I am struggling for weeks with KDS or Eclipse installations and it never works. I am still unable to compile (link) my own projects while demos work well. I may suggest you to offer virtual machines ready to use , it may save a lot of time and energy (good for the earth).
I would be interested in a basic project with FreeRTOS on this board with P/E hassle…
Please do not hesitate to reach me through private email.
I know that you are always ready to help.
have you checked out my projects from GitHub already?
Yes of course I did. I searched for the FRDM 46Z + freertos one but with no success. I may need to take 5 minutes more. And I would really have something without huge dependencies with P/E because I find that the code is tedious to read and to use. I don’t like the idea to require such and such graphical components to compile my project. That ‘s why I would prefer a basic quickstart with one simple task and the required glue to make FreeRTOS on my board….
I would like to know if you have ever tested your components inside CodeWarrior 10.6.4 special edition?
I started a few hours ago with this product and I had more success in 2 hours than in 3 weeks with other Eclipse derivatives ( It compiles fine & debugger works well).
But I would like to avoid breaking CW installation -)
Thanks for your valuable help and your patience.
I’m using more KDS and other Eclipse distributions than CW for MCU 10.6.4, but yes, I use these components as well with CW 10.6.4.
About the ‘PE dependencies’: sure, it is your choice and actually you can get the code once and then simply get rid of the GUI part if you want. And the FreeRTOS is as the normal FreeRTOS, no magic behind that (actually some nice add-ons, but you don’t have to use them by default).
The github links do not work. Can you please check them. Thank you 🙂
Link updated, it is https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/CodeWarrior/FRDM-KL46Z/FRDM-KL46Z_FreeRTOS for the CodeWarrior Project. If you are looking for KDS projects, then they are here: https://github.com/ErichStyger/mcuoneclipse/tree/master/Examples/KDS/FRDM-KL46Z
Hi Erich! I hope you are doing well, I would you like to ask what IDE, SDK, etc. you recommend today for develop projects in the FRDM KL46Z board. Thank you!
MCUXpresso IDE with the MCUXpresso SDK 2.2.