Dr. Farid Farahmand: Sonoma State University

EE 310/310L: Microprocessors and System Design - Introducing ARM
Instructor: Dr. Farid Farahmand
Spring 2018

    Lecture/Lab:Tues. 9:00 am-11:40 am/ Thur. 8:00 am-10:40 am
    Office Hours: click here
    Office: Salazar 2004
    Phone: (707) 664-3491
    Email: farid dot farahmand at sonoma dot edu

Course Catalog Description: Lecture: 3 hours. Hardware architecture of a general-purpose microprocessor and a micro-controller, memory hierarchy and supporting peripherals in micro controllers, comparison of various micro-controller architectures and capabilities, embedded system design using a micro-controller, data transfer protocols supported by a micro-controller, process of code writing, compiling, and executing programs using an IDE and a simulator. Prerequisites: ES 210 and EE 230, co-requisite EE 310L, or consent of instructor

Course Objectives: The primary goal of this course is to give you the fundamental skills needed to understand, use, and design microcontroller-based systems. This includes the following: (1) What is a microcontroller? (2) What can it do (and not do)? (3) How does one design (and program) a microcontroller-based system? Specificly, the students in this course become familiar with basic programming of ARM Cortex-M cores in assembly and C at the register level, and the fundamentals of embedded system design. The course presents basic concepts such as data representations (integer, fixed-point, floating-point), assembly instructions, stack, and implementing basic controls and functions of C language at the assembly level. The course also covers advanced topics such as interrupts, mixing C and assembly, direct memory access (DMA), system timer (SysTick), multi-tasking, SIMD instructions for digital signal processing (DSP), and instruction encoding/decoding. The course also failiarize the students with interfacing peripherals, such as general purpose I/O (GPIO), LCD driver, keypad interaction, stepper motor control, PWM output, timer input capture, DAC, ADC, real-time clock (RTC), and serial communication (USART, I2C, SPI, and USB)

Lecture Topics and Schedule
Day Lecture/Lab/Demo Reading Material Assignment/Activity Due
1/23 [W1]

Make sure you have the following:

  1. Purchase STM Nucleo-F401RE from DigiKey; can also purchase directly from Mouser
  2. Order the Textbook
  3. Arrange to have your own LAPTOP; Apple owners may experience extra challanges!
  4. If you are using a MAC have a visrual-box. Install Windows.
  5. Download Visual ARM Emulator - install the program
  6. Sign up for EE 310 in Piazza - Piazza app is available for smartphone / Bring a folder with your name on it!
  7. Quiz 0: In order to be ready for ths course you must know the this much! See links below to learn more.

1/25 [W1]

1/30 [W2]
2/1 [W2]
  • ARM Architecture / Differences, applications, bus system, memory types - Chapter 1 & 3- Zhu
2/6 [W3]
2/8 [W3]  
  • Quiz 2 - study all the chapters + Basic Information+ logic gates + addition or 2's complement, BCD, number conversions, see links below )
2/13 [W4] Learn about ARM
2/15 [W4]
  • Basic Programming Flowchart
  • List of Basic commands
2/20 [W5]
  • Submit: Lab 2 - Read the instructions carefully.
  • Article 1 is due - Via Piazza - Select Article1 Folder
  • Download ARM Assembly Commands
2/22 [W5]
  • Chapter 6 - Zhu / Branches, Loops,and IF-ELSE
  • Quiz 4 (see review questions - assembly commands, features of ARM, Status register, simple programs)
  • Start working on LAB 3
2/27 [W6] Learn about MIPS - how useful is it? (see the MIPS Example)
  • Do the in-class execrise
2/28 [W6]
  • Chapter 5 - Load and Store / Little & Bid Endian /
  • Quiz 5
  • Submit: LAB 3
  • Start working on LAB 4
  • Article 2 is due
3/6 [W7]
  • Do The Maximum Value sample program in Chapter 7 - use a subroutine
  • Do the Practice Lab in Chapter 8 slides
  • Make you you bering your board adn teh cable to class.
3/8 [W7]
3/13 [W8]
  • Midterm exam / In class pogramming
  • Midterm exam / / In class pogramming
  • Midterm Exam / / In class pogramming
3/15 [W8]
3/20-22 Spring Break Spring Break Spring Break
3/27 [W10]
  • In class: Using the Online compiler (here is another online compiler) write a C program to generate the following sequences: 0,2,0,4,0,8,..0,128,0,2,0,4,0... (Example C programs)
  • Article 3 is due
  • Submit: LAB 5B
  • Start Lab 6
  • Read C tutorial (up to Scope Rules)
3/29 [W10]  
4/3 [W11] Chapter 11 / Zhu - Introduction to Interrupts Lectures (Memory assingment)
  • Quiz 6 ( C programing / register configurations)
4/5 [W11] Chapter 11 / Zhu - Introduction to Interrupts  
  • Quiz 7 ( In Class Programming / C programing / register configurations / )
  • Submit Lab 6
  • Start working on Lab 7
4/10 [W12]

Analog to Digital Converters/DAC/LCDs/ - Chapters 17 & 20 / Zhu -

4/12 [W12]  
4/17 [W13] LCD Setup
  • Quiz 8
4/19 [W13]  
4/24 [W14]  
4/26 [W14]
5/1 [W15]
  • Quiz 9 Review questions for serial communication.
  • Submit an abstract for your project. Include description and a complete high-level block diagram - bring a hardcopy to class - see Syllabus for more details.
5/3 [W15]  
5/8 [W16]


  • Quiz 10
  • Article 5 is due
  • Final Abstracts! Submit through Moodle
5/10 [W16] Project Presentation - Review/ Read the Course Syllabus Carefully for Project Guidelines - See Moodle for more information POST your slides on (something like) a tri-folding board. You can buy a hard board and turn it into a tri-folding board (buy one from Dollar Store for $1  
5/15-17 [W17] Final Exam / Submit class evaluation form / / Submit your final CD / No late submisison is allowed.  

****Submit Lab 11 - TMR0 & CCP ****

In order to be able to take the final exam you are required to bring a snapshot of your Moodle indicating that you have completed the class evaluations.

Support Documents, Resources, and Links
Lecture Related ((supplementary material):) General



C- Programing ------------------------




Important online Tools

Helpful Downloads

ARM Books & Data Shhets

ARM HW & SW Resources




Link to previous versions of this class (ABET):

  1. Spring 2016 - A part list was provided to students. Students were required to purchase their own parts. This can improve the quality of final projects.
  2. Fall 2015 - Many students experienced difficulties with C programing. Several interactive programing tools were included in the course so the students can practice. A separate section on C programming was also added to the course; we also added an eBook for students to review.
  3. Spring 2015 - Using PIC DEMO Board / MPLAB & C18 Compiler / PicKit2 / Chip Kit / More advanced sensros were used
  4. Spring 2014 - Using PIC DEMO Board / MPLAB & C18 Compiler / PicKit2 / Chip Kit
  5. Spring 2012 - Using PIC DEMO Board / MPLAB & C18 Compiler / PicKit2
  6. Spring 2010 - Using PIC DEMO Board / MPLAB & C18 Compiler / PicKit2
  7. Spring 2009 - Using PIC DEMO Board / MPLAB & C18 Compiler ()/ PicKit2
Shell Eco-Marathon event at Sonoma Raceway (https://www.shell.com/energy-and-innovation/shell-ecomarathon/americas.html).  
Here are some pictures from the event: http://bit.ly/2F4IhQk - Participants - Team from Cornell