PIC32 DEVELOPMENT

2y ago
17 Views
2 Downloads
3.68 MB
40 Pages
Last View : 1m ago
Last Download : 3m ago
Upload by : Karl Gosselin
Transcription

PIC32 DEVELOPMENTA Design Project ReportPresented to the School of Electrical and Computer Engineering of Cornell Universityin Partial Fulfillment of the Requirements for the Degree ofMaster of Engineering, Electrical and Computer EngineeringSubmitted byAlexander Keith WhitewayMEng Field Advisor: Bruce LandDegree Date: May, 2015

M. Eng Design ReportAlex WhitewayAbstractMaster of Engineering ProgramSchool of Electrical and Computer EngineeringCornell UniversityDesign Project ReportProject Title: PIC32 DevelopmentAuthor: Alex WhitewayAbstract:The PIC32 Development project aims to bring the new technological breakthroughsof 32-bit microcontrollers into the hands of Cornell students. With 32-bit processing(as opposed to the 8-bit microcontrollers used in courses today), learning incredibleand advanced peripherals such as USB, Ethernet, and high definition graphics(among others) becomes realizable. The goal of the project is to learn how theseperipherals work and how to implement them on such an advanced platform.Though Microchip (PIC32 manufacturer) provides a TCP/IP stack, USB stack, etc. aswell as example code, they are incredibly complex, confusing, and error prone.Throughout this project, these resources will be combined to make simple APIs forstudents to use, vastly decreasing complexity and development time for laboratoryexercises and projects. Once the firmware is stable, custom circuitry will bedesigned and manufactured with everything needed to use these peripherals so thatstudents can focus on the bigger picture and not on details such as choosing theright magnetics for Ethernet. Upon completion of the project, future students willhave: A custom circuit board built specifically for laboratory assignments, a cleanand simple API for using advanced peripherals (along with example code), andthorough (but not cumbersome) user manuals on how to use all aspects of the boardand firmware. These deliverables will expose Cornell students to some of the mostadvanced microcontrollers on the market today, replacing the decades oldtechnology that is currently used in the classroom.I

M. Eng Design ReportAlex WhitewayExecutive SummaryThe PIC32 Development project was created to provide senior level students atCornell a more thorough and technologically advanced introduction tomicrocontrollers and embedded systems in general. In addition, it is possible thatthe products delivered for this project could be used in other courses or for hobbyprojects, if the students chose to use them in such a way.The full system was constructed to deliver advanced functionality without a steeplearning curve. In addition, it was built to be a modular system capable of quickreconfiguration with minimal effort. This allows it to retain the original goaladvanced yet simple, while also allowing students to use it in a variety ofconfigurations depending on the target design.Three modular hardware pieces were developed: the main board, a communicationsmodule, and a basic input/output board. These three modules each fit in a standardsolderless breadboard [1]. Since these boards are designed to fit in a breadboard, itonly takes four to six wire connections to add a module (with no externalcomponents). The main board supports approximately 40 input/output pins for thestudent to utilize, USB OTG functionality, power regulators, and a programmingcircuit. The basic input and output board gives the user access to switches, LEDs,and seven segment displays. Finally, the communications board provides anEthernet connector with all required external hardware on the circuit board.It is difficult to say how expensive the final product actually costs. Since it comprisesthree printed circuit boards, costs can range from 5 to 75 per board, depending onthe quantity purchased. Since this project is meant to be used in a somewhat largeclass, the prices should be closer to the lower end of the spectrum, making it anaffordable teaching tool.II

M. Eng Design ReportAlex WhitewayContentsAbstract. IExecutive Summary . IIFigures.VIntroduction . 1Background . 1Issues . 1Existing Products . 2Design Problem . 3Design Requirements . 3Range of Solutions . 4Software Only. 4Basic Circuit Examples . 4Custom Hardware . 4Design Process . 6Initial Design . 6Ethernet . 6Audio . 7USB . 7LCD Screen . 8SPI. 9Other Features . 9Hardware Design . 10Main Board. 10Basic Input and Output Board . 12Communications Board. 12Final Design . 14Main Board . 14PIC32 . 14Port Expander . 15USB Connectors . 15Programming Hardware. 16Power Regulation . 16III

M. Eng Design ReportAlex WhitewayExpansion Headers . 16Basic Input and Output Board . 17LED Outputs. 18Switch Inputs . 18Seven Segment Displays . 18Communications Board . 18Results . 20Hardware and Software. 20Laboratory Exercises . 20Board Assembly and Introduction . 21Basic Voltmeter . 21Basic Oscilloscope . 21Oscilloscope Revisited . 21Audio Player . 22Video Game . 22Other Options . 22Future Work . 23References . 24Appendix A: PIC32 Features . 25Appendix B: Schematics . 26Main Board . 26Basic Input and Output Board . 28Communications Board . 29Appendix C: Board Layouts . 30Main Board . 30Basic Input and Output Board . 31Communications Board . 32Appendix D: Parts List. 33IV

M. Eng Design ReportAlex WhitewayFiguresFigure 1 - Microstick II Development Board . 6Figure 2 - USB PLL module diagram . 8Figure 3 - 2.2" LCD screen from Adafruit . 9Figure 4 - Main Circuit Board . 14Figure 5 - Basic Input and Output Board . 17Figure 6 - Communications Board. 19Figure 7 - Example System . 20Figure 8 - Main Schematic . 26Figure 9 - Power Regulation Schematic . 27Figure 10 - USB OTG Schematic. 27Figure 11 - Programming Schematic . 27Figure 12 - Basic Input and Output Board Schematic. 28Figure 13 - Seven Segment Display and Driver Schematic . 28Figure 14 - Communications Board Schematic . 29Figure 15 - Main Board Layout . 30Figure 16 - Input and Output Board Layout . 31Figure 17 - Communications Board Layout . 32V

M. Eng Design ReportAlex WhitewayIntroductionBackgroundIt is no secret that technology is advancing at an incredible rate. New and updateddevices are coming out faster than ever, making it difficult for the average consumerto keep up to date. Unfortunately, this leaves an educational gap for students inElectrical and Computer Engineering. How are students supposed to learneverything they need to learn while course curriculum is constantly becomingoutdated?Invented in the early 1970s [2], microcontrollers quickly saw uses in calculatorsand other basic devices. These tended to be either 4 or 8-bit microcontrollers sincethe technology of the day was not able to produce anything more advanced (at leastat a reasonable cost). From that point, technology began to increase rapidly,expanding the microcontroller market to over USD 16.7B [3]. Already by 2013, themarket leader was 32-bit controllers. They are also forecast to lead industry growththrough 2020, where the industry is expected to be worth USD 27B, or anastounding 62% growth in just seven years.The PIC32 Development project aims to enhance ECE 4760 at Cornell University byutilizing these industry leading microcontrollers. This lab-based course introducesstudents to microcontrollers and their applications. Microcontrollers are at theheart of countless systems used every day. Many electronics that do not need a fullCPU such as stereos, microwaves, GPS devices, etc. utilize microcontrollers as theheart of the system[4]. The problem is the microcontrollers used in ECE 4760 are nolonger cutting edge. Although they have been improved over the years, these 8-bitmicrocontrollers have been around for many years[4].This project will replace the current lab curriculum with exciting lab ideas based ona new line of microcontrollers, ones that are only a few years old. They will bringcutting edge technology to the lab, including 100Base-TX Ethernet, full-speed USB,full color LCD screens, and many more. Bringing these exciting technologies to theclassroom will be crucial in exposing students to current technologies, creatingmore competitive graduates than ever before.IssuesThe biggest issue with updating the lab curriculum to utilize the PIC32microcontrollers is complexity. TCP/IP and USB are incredibly advanced protocols,which can make implementing them an entire project in themselves. Microchip(PIC32 Manufacturer) has released full TCP/IP and USB stacks (driver source code),but they are each thousands upon thousands of lines of code and are prone to error.1

M. Eng Design ReportAlex WhitewayAt this point, getting them to work would be too much for students to handle for oneor two week labs. Addressing these issues was one of the most crucial parts of thePIC32 Development project.Another problem with using such advanced technology is the physical chips areusually so complex they cannot easily fit in prototyping circuit boards calledbreadboards or whiteboards. These boards make creating, debugging, andcorrecting simple circuits quite easy, especially in lab settings. Since some of thecomponents cannot easily connect to these prototyping boards, it generally makesusing them in class difficult. This is where a professionally made circuit board willcome in. One will have to be designed, tested, debugged, and manufactured to allowstudents to easily use the components. This can be a months-long project, not onethat is well suited for ECE 4760, and outside the scope of the class.The last major foreseen issue is documentation. The reference manual anddatasheets for the PIC32 family of microcontrollers are thousands of pages long.Much of this is absolutely crucial information, while a large portion of it is beyondwhat the students need to know for class or completely irrelevant. Condensing thisdocumentation into a clear and concise reference that only contains the necessaryinformation for the students is a key goal for the PIC32 Development project.Existing ProductsMany products are on the market that are meant to provide simple introductions toadvanced microcontrollers. The products that are on the market, however, tend tobe costly and specialized for one use, not general uses that are desirable for ateaching environment. Microchip offers some of these development kits for theirPIC32 line of products [5], such as: Microstick II - 34.95MPLAB Starter Kit - 109.99Multimedia Expansion Board - 249.99Ethernet Starter Kit - 89.00USB Starter Kit - 59.99PIC32MX Starter Kit - 69.99Though well constructed, each of these kits is rather expensive, especially forstudents. A full set of boards developed for this project will cost less than many ofthese individual kits.2

M. Eng Design ReportAlex WhitewayDesign ProblemThis project aims to produce a range of circuit boards that students can use for avariety of lab exercises. In addition, they will be designed with flexibility in mind sostudents are not limited to specific microcontroller functions, but will be able toexplore the entire range of microcontroller capabilities. These boards willcompletely replace the current teaching tools, so they will need to simple to use forboth students and instructor.Since students may enter the class without ever having seen a microcontroller, thismust be kept in mind. On the other hand, some students may enter the class withexisting microcontroller experience. Due to the unknown strengths of the students,the system should be such that a complete beginner or an advanced user can use thesystem. This limits many possible approaches, but is still a realizable constraint.The goal of this project is, as earlier stated, to provide an easy-to-use system tointroduce students to the world of microcontrollers. In addition, manuals andsupplemental materials for features such those listed in Appendix A: PIC32 Featureswill be provided. This will allow students to actually use the feature instead ofspending days or weeks attempting to get it working.Design RequirementsSince it is being used as a teaching tool, the system will need to be easily usable tostudents with varied experience and skill levels. A baseline list of requirements are: Create custom PCBs that will be soldered by the studentsUse as few surface mount parts as possibleEasy to use while still allowing flexibility and access to advanced featuresAbility to use the system for basic projects with little or no externalcomponentsAn interface to custom hardware must be availableProvide device drivers for peripherals such as Ethernet and USBMust be more affordable than existing development systemsThe project was meant to be exploratory and open ended, so the requirementsevolved slightly throughout the design process. The list above represents the finalrequirements to the project. Due to the limited time to produce the desired results,future improvements may impact this list.3

M. Eng Design ReportAlex WhitewayRange of SolutionsFrom the beginning, the PIC32 Development project was meant to be an open-endedand exploratory project. Because of this, a huge range of solutions was possible.Some of these solutions are outlines below, though more solutions may have beenpossible.Software OnlyOne of the possibilities for this project was to provide example software thatstudents could use to implement or enhance their laboratory exercises. Thissolution would have required extensive example code for a large range of advancedperipherals on the microcontroller. Examples of these features are in Appendix A:PIC32 Features.If this route were to be selected, it would have been expected that code exampleswould have been provided. In addition, many of these features may have neededbasic circuits to demonstrate the feature, such as a potentiometer to demonstratethe ADC capabilities. Though these circuits would have been basic, they would benecessary to effectively use the selected feature.Basic Circuit ExamplesLike the software only approach, some features would have been explored, thoughthis time with more emphasis on hardware design. Many of the features needexternal hardware to be fully demonstrated, such as I2C and SPI since these featuresare meant to interact with external circuitry.This option would have required both hardware and software examples as adeliverable. The software would be basic examples on using the accompanyinghardware. The hardware would have been schematic designs so that students wereable to recreate the design.Custom HardwareThis solution requires both hardware and software components with the addition ofcustom circuitry. This approach would not require students to recreate circuits,however, but to solder components onto the board to build the circuits. Softwarewould be developed to accompany the specific hardware.4

M. Eng Design ReportAlex WhitewayThe custom hardware would need to be robust enough for students to makemistakes without destroying the board. In addition, the board would need to bedesigned with expansion in mind so students are not pigeon-holed into using onlythe features on the board. Some sort of expansion header would be necessary togive full access to the microcontroller.Multiple options existed for designing the boards. The possible options included: One single board with all components Multiple stackable boards Multiple modular boardsEach method had its own advantages and disadvantages, but creating multiplemodular boards provided the simplicity and flexibility required for the designproject.5

M. Eng Design ReportAlex WhitewayDesign ProcessInitial DesignThe design processs began with experimenting with the PIC32 and determining if theadvanced features (such as USB and Ethernet) were tractable for student usage.Microchip provides code for both USB and Ethernet, so that was a logical place tostart experimenting. All of ththee experimenting was based around the Microstick IIdevelopment board (see Figure 1 - Microstick II Development BoardFigureFigure 1below),which included an onboard debugger and USB power supply.Figure 1 - Microstick II Development BoardEthernetImplementing the Microchip Ethernet driver was the first step in theexperimentation process. The code was supposed to compile and execute withoutmodification, but that was definitely nnotot the case. It seemed like the code was meantto be general for hundreds of different microcontrollers, but unfortunately was notcorrect for the PIC32MX250F128B. File by file, function by function, the debuggingprocess began. Hours of tedious debugging started to expose some issues with thecode, including the possibility of null pointers causing the microcontroller to crashand reset. At least four or five such bugs were discovered and corrected. Thoughthere may be more, no more have been discovered.Once the microcontroller finally recognized the Ethernet cable was connected, themost basic functionality to test was to return a ping request from an external host.There were more issues with this code as well, most of which involved adjustingbuffer sizeszes and some constant values that were set in the code. The microcontrollerwas finally able to return a ping request, but again would crash after a couple ofminutes of constant requests. More debugging exposed some poor memorymanagement issues that were soon corrected.6

M. Eng Design ReportAlex WhitewayIt was finally time to attempt more advanced functions. It took a long time to digthrough the code and find the actual interfaces, but once they were located itbecame a simpler problem. The code seemed to produce an API similar to CBerkeley sockets and conformed to IEEE Std 1003.1 [6]. Unfortunately, the functionsand other support information was sporadically spread throughout the driver. Tomake them usable, they were merged into a single file.The final step was to test the code under different circumstances. During this phase,the microcontroller was able to load a webpage, host SSH and telnet sessions, andhost a webpage as well. These successes provided the confidence needed to pursueEthernet as part of the design project.AudioThough not a complex feature, providing a way to play audio seemed to be animportant function in the project. Whether playing music or sound effects, audio canadd to many different projects.Simply playing a sound seemed too basic for this project, but combining audio withthe Ethernet code seemed to be a more interesting solution. Not only did thisexercise the Ethernet code, it provided confidence in using timer interrupts tocreate consistent and accurate time intervals down to the single clock cycle level.Combining these features, 16-bit, 44.1khz was successfully streamed over a networkto the microcontroller and played over speakers in real time.USBUSB proved to be the most difficult feature to implement. Like Ethernet, Microchipprovided a USB library to use. Unfortunately, it too was filled with errors that didn’tallow the code to immediately compile. A couple of errors were tracked down, butextensive debugging showed the microcontroller was not detecting when a USBdevice was plugged in.The first step in solving this problem was to determine if the USB module wasturned on and operating correctly. Using the debugger, it was clear that the USBmodule was at least being instructed to turn on. Searching through forums onlinenarrowed the possible sources of error with the most likely situation being a badoscillator configuration. This seemed to be a likely case since the USB module runsoff a separate clock network. According to the datasheet, the USB module could runoff of the internal FRC oscillator with specific PLL settings. These seemed to be setcorrectly, but the default clock source was set to an external oscillator.7

M. Eng Design ReportAlex WhitewayFigure 2 - USB PLL module diagramOverwriting the default value, the clock multiplexer should have provided the USBmodule with the correct clock signal. The debugger showed that the module wasnow powering on, but still not detecting a USB device. Frustrations led toexperimentingg with an external oscillator instead of using the internal one. Testingshowed the USB module detected a device right away using the eternal oscillator.Extensive searches exposed a small footnote in another datasheet explaining theUSB module could only be turned on with the internal oscillator, but could not beused without the external oscillator.Once the module was working, the code was modified to read a keyboard. LikeEthernet, the code to read the keyboard was buried deep in the driver. It too waswamoved to a new, easily accessible file so students could easily use it in their projects.Now all they must do is include the function and it will be called each time a key isdetected. The depressed key is passed to this function as an argument along withwiany modifiers (shift, ctrl, etc). The student is then free to use the information as theydesire. Similar functions exist for mice and joysticks as well.LCD ScreenMany projects can benefit from having a full color graphical LCD screen included.The chosen LCD screen uses e

PIC32 line of products [5], such as: Microstick II - 34.95 MPLAB Starter Kit - 109.99 Multimedia Expansion Board - 249.99 Ethernet Starter Kit - 89.00 USB Starter Kit - 59.99 PIC32MX Starter Kit - 69.99 Though well constructed, each of

Related Documents:

It can be the PIC32 GP Starter Kit (DM320001), PIC32 USB Starter Kit II (DM320003-2), or PIC32 Ethernet Starter Kit (DM320004). A PC compatible system running Microsoft Windows XP SP2 or above Two USB ports on the PC, one for USB-UART bridge for program debug, and the other USB port for PIC32 Starter Kit.

It can be the PIC32 GP Starter Kit (DM320001), PIC32 USB Starter Kit II (DM320003-2), or PIC32 Ethernet Starter Kit (DM320004). A PC compatible system running Microsoft Windows XP SP2 or above Two USB ports on the PC, one for USB-UART bridge for pro

hidpri.h \PIC32 Solutions\Microchip\USB\hid_device_driver Private function and macro definitions hid.h \PIC32 Solutions\Microchip\Include\USB USB HID include file hiddesc.h \PIC32 Solutions\Microchip\Include\USB HID specific descriptor defines hidreport.h \PIC32 Solutions\Microchip

to design and develop a secure digital (SD) card library based on PIC32 microcontroller. The SD card library offers a place to store data, images, sound and other information which needs of large memory space. The main function of the library is t

to design and develop a secure digital (SD) card library based on PIC32 microcontroller. The SD card library offers a place to store data, images, sound and other information which needs of large memory space. The main function of the library is to read and store files from the SD card.

Direct Memory Access (DMA) is a scheme which uses a memory address generator and logic separate from the CPU to access memory. For instance, a DMA channel can move data from the ADC to data memory without CPU intervention. Experiments show that you can push at least four megabytes/sec through the PIC32 DMA subsystem and not affect CPU execution.

Microchip TCP/IP Stack - 23 IEEE 802.11 Wi-Fi - 24 IEEE 802.15.4: Microchip MiWi and MiWi P2P Protocol - 24 IEEE 802.15.4: ZigBee , ZigBee PRO, ZigBee Smart Energy Profile Suite - 25 PIC32 CAN Library Using MCP2515 CAN Controller - 25 Bluetooth Stack for PIC24 and PIC32 MCUs and dsPIC DSCs - 26

Abrasive water jet (AWJ) machining has been known for over 40 years. It was introduced, described and presented by Hashish [1]. It is often used to cut either semi-finished products or even final products, namely from plan-parallel plates of material. Nevertheless, applications of abrasive water jets for milling [2], turning [3], grinding [4] or polishing [5] are tested more and more often .