top of page

MCU (and some FPGA) Fun

Updated: Apr 5

I am starting to experiment with different microcontrollers (MCUs). I am hoping to learn about 8-bit, 16-bit, and 32-bit MCUs -- from a variety of vendors. My current plan is to work through this list of MCUs that I have:


  1. NXP MC9S08GT32CFB (8-bit)

  2. Texas Instruments MSP430F167IPM (16-bit)

  3. Renesas R5F100FFGAFP (16-bit)

  4. NXP MC9S12A64CPVE (16-bit)

  5. Texas Instruments TMS320F28035PAGT (32-bit)

  6. Microchip ATSAMG55J19B-MU (32-bit)

  7. Cypress PSoC 5LP CY8C58LP Family (32-bit)

  8. ST STM32F417VET6

  9. Maybe some FPGAs at this point (not MCUs, of course)

    1. Lattice iCE40

  10. If I get bored, I also have these on hand:

    1. Microchip PIC16F883-I/SO

    2. Texas Instruments MSP430F5310IRGCR (VQFN 64, 0.5mm pitch)


As I work through these, I will update this post.



NXP MC9S08




I am using CodeWarrior v11.1 Special Edition to develop in C. For a programmer, I am using a USBDM programmer. For my specific installation, I am running Windows 11 and took the following steps to setup my environment:

  1. Installed CodeWarrior v11.1 Special Edition.

  2. Installed the USBDM drivers. I downloaded drivers from USBDM/Version 4.12.1/Drivers at SourceForge.net.

  3. Installed USBDM software. I downloaded the software from USBDM/Version 4.10.6/Software at SourceForge.net.


With the above completed, I created a new project in CodeWarrior for my specific MCU. I can write and compile C code, program the MCU flash, and debug the hardware. I have found that exiting CodeWarrior's flashing or debugging often loses connection to the USBDM, so I will need to figure out if this can be improved. For example, if I enter a debug session, I am not able to reprogram the MCU or restart the debug session without restarting CodeWarrior. As a workaround for rapid developing and flashing, I build the code in CodeWarrior and use the HCS08 Flash Programmer application that comes with the USBDM software linked above; this combination is working well.




Additional Resources



Texas Instruments MSP430F167IPM

Future work...




Additional Resources



Renesas R5F100FFGAFP

Future work...




Additional Resources


NXP MC9S12A64CPVE

Future work...



Texas Instruments TMS320F28035PAGT

I'm just starting to work with this MCU. So far, I am able to compile a project and program/debug the MCU. For some reason, the programming does not persist after a power cycle, so I must not be doing something correctly on the programming side of things or on the boot mode selection; most likely, it's how I am setting up the project and/or programming the device.






TMS320F28035 Schematic v0.02
.pdf
Download PDF • 800KB


Steps to setup development environment:

  1. Install C2000Ware.

  2. Install Code Composer Studio (not Theia) for Windows.

  3. Install C2000 Compiler

  4. Run Code Composer Studio and create a new project.

  5. To open a sample project:

    1. You can use Resource Explorer to find examples. You can also use the Import Wizard. From the New CSS Project Windows, click Import Wizard.

    2. Change the Select search directory to the following folder within the C2000Ware installation location: C2000Ware_5_01_00_00\device_support\f2803x\examples. In Discovered projects, check "Example_2803xLEDBlink [c28/timed_led_blink]."

    3. Check "Automatically import referenced projects..." and "Copy projects into workspace."

    4. Click Finish.

    5. In Project Explorer, open Example_2803xLEDBlink.c. Update as desired (e.g., change which GPIO is used for LED).

    6. Project\Properties, set Variant and core to: 2803x Piccolo, TMS320F28035, C28xx. Set Connection to Texas Instruments XDS100v2 USB Debug Probe and click Verify to ensure it works (this requires the probe be connected to the MCU PCB and power applied to the PCB).

    7. Project\Build All.

    8. Run\Debug.

  6. To create a new, blank project:

    1. Target: Piccolo\TMS320F28035.

    2. Connection: Texas Instruments XDS100v2 USB Debug Probe.

  7. To write the program in flash for standalone operation (i.e., no debugger and the MCU boots off its internal flash), follow Lab 10: Programming the Flash from F2803x Workshop (ti.com). I continued with the project from the first video.

    1. I started with the LED sample project (above).

    2. I replaced the linker command file with the file from Lab 10, naming it 28025_RAM_lnk2.cmd. This file has updates to the memory blocks and code sections to move the program to flash memory. See FLASH_ABCDEFGH.

    3. See notes about InitPieCtrl() and Flash.c on page 10-16 of the Lab 10 manual. For my project the flash support was already in DSP2803x_SysCtrl.c and PIE support in DSP2803x_PieCtrl.c.

    4. In my main() function in Example_2803xLEDBlink.c, I added a call to memcpy to copy the secureRamFuncs to CSM secured RAM. I then called InitFlash().

    5. I added Passwords.asm to my project, from the Lab 10 files.

    6. DSP2803x_CodeStartBranch.asm was already in my project to handle the code start branch.


Additional Resources


Microchip ATSAMG55J19B-MU

Future work...


ST STM32F417VET6

Future work...


Cypress PSoC 5LP CY8C58LP Family



After getting the CY8C5888LTI-LP097 working in the above video, I then assembled a PCB with the CY8C5888AXQ-LP096. I plan to use this larger PSoC on my 486 DX2 build.


Additional Resources



Lattice iCE40

I have moved content from this section to Lattice iCE40 FPGA Journey (rehsdonline.com).



279 views1 comment

Recent Posts

See All
bottom of page