Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
learn:courses:unit-4-lab4c:start [2017/04/13 20:47] – [7.1. PIC32MX370 SPI I/O] Marthalearn:courses:unit-4-lab4c:start [2022/10/04 11:38] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Lab 4c: Communications - SPI Serial Protocols ====== ====== Lab 4c: Communications - SPI Serial Protocols ======
 +[[{}/learn/courses/unit-4-1/start|Back to Unit 4 Part 1]]
 +[[{}/learn/courses/unit-4-2/start|Back to Unit 4 Part 2]]
 +[[{}/learn/courses/unit-4-lab4b/start|Back to Lab 4b]]
  
 === Download This Document === === Download This Document ===
-  * {{ :learn:courses:unit-4-lab4c:lab_4c.pdf |Lab 4c PDF}}+{{ :learn:courses:unit-4-lab4c:lab_4c.pdf |Lab 4c PDF}}
  
  
 ===== 1. Objectives ===== ===== 1. Objectives =====
-  * Learn how to configure an SPI channel on the PIC32MX370 processor. +  - Learn how to configure an SPI channel on the PIC32MX370 processor. 
-  * Learn the difference between software and hardware handshaking. +  - Learn the difference between software and hardware handshaking. 
-  * Learn how to communicate with an SPI FLASH memory device.+  - Learn how to communicate with an SPI FLASH memory device.
  
  
Line 14: Line 17:
  
 ===== 2. Basic Knowledge ===== ===== 2. Basic Knowledge =====
-  * How to configure I/O pins on a Microchip PIC32 PPS microprocessor. +  - How to configure I/O pins on a Microchip PIC32 PPS microprocessor. 
-  * How to configure the Analog Discovery 2 to display logic traces. +  - How to configure the Analog Discovery 2 to display logic traces. 
-  * How to implement code reuse that integrates previously developed processor code into new application projects.+  - How to implement code reuse that integrates previously developed processor code into new application projects.
  
  
Line 23: Line 26:
 ===== 3. Equipment List ===== ===== 3. Equipment List =====
 ==== 3.1. Hardware ==== ==== 3.1. Hardware ====
-  * [[http://store.digilentinc.com/basys-mx3-pic32mx-trainer-board-recommended-for-embedded-systems-courses/|Basys MX3 trainer board]] +  - [[https://digilent.com/shop/basys-mx3-pic32mx-trainer-board-for-embedded-systems-courses/|Basys MX3 trainer board]] 
-  * Workstation computer running Windows 10 or higher, MAC OS, or Linux +  - Workstation computer running Windows 10 or higher, MAC OS, or Linux 
-  * 2 [[http://store.digilentinc.com/usb-a-to-micro-b-cable/|Standard USB A to micro-B cables]]+  - 2 [[https://digilent.com/shop/usb-a-to-micro-b-cable/|Standard USB A to micro-B cables]]
  
 In addition, we suggest the following instruments: In addition, we suggest the following instruments:
-  * [[http://store.digilentinc.com/analog-discovery-2-100msps-usb-oscilloscope-logic-analyzer-and-variable-power-supply/|Analog Discovery 2]]+  - [[https://digilent.com/shop/analog-discovery-2-100ms-s-usb-oscilloscope-logic-analyzer-and-variable-power-supply/|Analog Discovery 2]]
  
 ==== 3.2. Software ==== ==== 3.2. Software ====
 The following programs must be installed on your development work station: The following programs must be installed on your development work station:
  
-  * [[http://www.microchip.com/mplab/mplab-x-ide|Microchip MPLAB X® v3.35 or higher]] +  - [[http://www.microchip.com/mplab/mplab-x-ide|Microchip MPLAB X® v3.35 or higher]] 
-  * [[http://www.microchip.com/SWLibraryWeb/product.aspx?product=PIC32%20Peripheral%20Library|PLIB Peripheral Library]] +  - [[http://www.microchip.com/SWLibraryWeb/product.aspx?product=PIC32%20Peripheral%20Library|PLIB Peripheral Library]] 
-  * [[http://www.microchip.com/xcdemo/xcpluspromo.aspx|XC32 Cross Compiler]] +  - [[http://www.microchip.com/xcdemo/xcpluspromo.aspx|XC32 Cross Compiler]] 
-  * [[http://store.digilentinc.com/waveforms-2015-download-only/|WaveForms 2015]]  +  - [[https://digilent.com/shop/software/digilent-waveforms/|WaveForms]]  
-  * [[http://www.putty.org/|PuTTY Terminal Emulation]]+  - [[http://www.putty.org/|PuTTY Terminal Emulation]]
  
 ---- ----
  
 ===== 4. Project Takeaways ===== ===== 4. Project Takeaways =====
-  * Understanding of requirements and implementations of synchronous communications. +  - Understanding of requirements and implementations of synchronous communications. 
-  * Understanding of the SPI protocol. +  - Understanding of the SPI protocol. 
-  * How to generate instruction sets for controlling SPI devices.+  - How to generate instruction sets for controlling SPI devices.
  
 ---- ----
Line 127: Line 130:
 Using the SPI initialization shown in Listing B.2, the PIC32 processor is configured for SPI Mode 0 operation. Figure 7.2 shows that the bit output is held constant when the clock pulse makes a positive transition. Figure 7.2 also shows that the bit rate is 1 MHz. Using the SPI initialization shown in Listing B.2, the PIC32 processor is configured for SPI Mode 0 operation. Figure 7.2 shows that the bit output is held constant when the clock pulse makes a positive transition. Figure 7.2 also shows that the bit rate is 1 MHz.
  
-{{ :learn:courses:unit-4-lab4c:lab4c-fig-7-2.png?nolink&800 |Figure 7.2. SPI Bit timing for Mode 0 configuration.}}+{{ :learn:courses:unit-4-lab4c:lab_4c_fig_7_2.png?nolink |Figure 7.2. SPI Bit timing for Mode 0 configuration.}}
 //Figure 7.2. SPI Bit timing for Mode 0 configuration.// //Figure 7.2. SPI Bit timing for Mode 0 configuration.//
 +
  
 As Fig. A.2 shows, the same SPIxSR serial shift buffer is used for input and output, thus requiring the common SCKx clock signal. Hence, when a byte of data is shifted out of the SDOx pin, data is also being shifted into the SPIxSR from the SDIx pin. In other words, to receive SPI serial data, you must send SPI serial data.  As Fig. A.2 shows, the same SPIxSR serial shift buffer is used for input and output, thus requiring the common SCKx clock signal. Hence, when a byte of data is shifted out of the SDOx pin, data is also being shifted into the SPIxSR from the SDIx pin. In other words, to receive SPI serial data, you must send SPI serial data. 
Line 157: Line 161:
 | Program Security Registers<sup>(3)</sup>              | 42h                   | A23-A16       | A15-A8       | A7-A0     | D7-D0, …       |             | | Program Security Registers<sup>(3)</sup>              | 42h                   | A23-A16       | A15-A8       | A7-A0     | D7-D0, …       |             |
  
-{{ :learn:courses:unit-4-lab4c:lab4c-fig-7-3.png?nolink&800 |Figure 7.3. Release Power Down/Read Device ID SPI transaction.}}+{{ :learn:courses:unit-4-lab4c:lab_4c_fig_7_3.png?nolink |Figure 7.3. Release Power Down/Read Device ID SPI transaction.}}
 //Figure 7.3. Release Power Down/Read Device ID SPI transaction.// //Figure 7.3. Release Power Down/Read Device ID SPI transaction.//
  
Line 204: Line 208:
 | Continuous Read Mode Reset<sup>(6)</sup>  | FFh                   | FFh                |                             |                 |             |                 | | Continuous Read Mode Reset<sup>(6)</sup>  | FFh                   | FFh                |                             |                 |             |                 |
  
- +{{ :learn:courses:unit-4-lab4c:lab_4c_fig_7_4.png?nolink |Figure 7.4. SPI Flash Read Byte command and three-byte address followed by reading data 'A', 'B', 'C', etc.}}
-{{ :learn:courses:unit-4-lab4c:lab4c-fig-7-4.png?nolink&800 |Figure 7.4. SPI Flash Read Byte command and three-byte address followed by reading data 'A', 'B', 'C', etc.}} +
 //Figure 7.4. SPI Flash Read Byte command and three-byte address followed by reading data 'A', 'B', 'C', etc.// //Figure 7.4. SPI Flash Read Byte command and three-byte address followed by reading data 'A', 'B', 'C', etc.//
  
Line 297: Line 300:
 //Figure A.1. Unit 4 hardware and instrumentation configuration.// //Figure A.1. Unit 4 hardware and instrumentation configuration.//
  
-{{ :learn:courses:unit-4-lab4c:part2-fig-a-1.png?nolink&800 |Figure A.2. SPI block diagram from the Microchip PIC32MX370 data sheet.}} 
-//Figure A.2. SPI block diagram from the Microchip PIC32MX370 data sheet.// 
  
 ---- ----
Line 514: Line 515:
 </code> </code>
  
 +----
 +
 +[[{}/learn/courses/unit-4-1/start|Back to Unit 4 Part 1]]
 +[[{}/learn/courses/unit-4-2/start|Back to Unit 4 Part 2]]
 +[[{}/learn/courses/unit-4-lab4b/start|Back to Lab 4b]]
 +[[{}/learn/courses/unit-4-lab4d/start|Go to Lab 4d]]
 +[[{}/learn/courses/unit-5/start|Go to Unit 5]]