====== Final Year Project ====== With the idea of using my Game Boy Advance as a Peronsal Digital Assistance (PDA) I took on the task of adding modern connectivity to the GBA system. For this I chose USB, it is the de-facto standard and very widely supported (Windows, Linux, MacOS and others have native, good, support for the standard). USB is easy to use as it does not require the end-user to configure the device once it has been attached, it is truly plug & play. ===== Project Complete! ===== Though these pages don't reflect it well, the project is complete (and was successful). There will be very few updated to this section, unless I decide to move all my code here for other reasons that completeness/tidyness. All my code is already in the Project Report Disc Content, which is available for download below. I have been awarded a 2:1 and am now done with my CompSci degree at Warwick Uni, so I can place my project report and it's accompanying disc's contents online in the hope it will be useful to others. Since creating this site about 18 months ago, I have been contacted by about a dozen individuals who are doing similar projects; and my weblogs show that the report was downloaded over 700 times in September 2005 (Update: It was downloaded 495 times in Sept 2006). Also, I'm really honoured to find I'm linked to by lvr.com, I bought their USB Complete book and found it immensly useful. {{ project:hardware_breadboard_final_closeup_labeled.png }} ==== Summary ==== === Abstract === This project aimed to enable a Nintendo Game Boy Advance (GBA) to be used as a personal digital assistant by creating a USB communication interface between a Windows PC and a GBA, which would require no hardware-specific drivers or user-configuration. USB v1.1 is implemented on a Microchip PIC16F877 micro-controller (using the CCS compiler add-on) and a Philips Semiconductor PDIUSBD12 low-level USB chip which handles interactions with the USB bus. An interface with GBA is achieved via UART and then use the USB implementation by means of the (USB-IF defined) Human Interface Device (HID) class to transfer user-data. === Keywords === USB, Embedded System, PIC, Game Boy Advance, Hardware, PDIUSBD12, PIC16F877 ==== Downloads ==== - [[http://www.robmeerman.co.uk/downloads/Project%20Report.pdf|Project Report (PDF), 1.0MB]] - [[http://www.robmeerman.co.uk/downloads/Project%20Report.sxw|Project Report (OpenOffice 1.x, without pictures), 0.3MB]] - [[http://www.robmeerman.co.uk/downloads/Project%20Report%20Disc%20content.zip|Project Report Disc Content (ZIP), 58MB]] - Contains all source code((Including useful small tests / utilities create during development / testing)), tools and copies of web pages referred to in the Project Report. Incidently, my project (and hence report) was awarded 73%. If you have any problems using this site, or queries related to this project, I'd be happy to hear from you and see if I can help. [[robert.meerman@gmail.com]] ===== Project areas ===== Areas which may be of interest to you: * [[project:usb|USB Section]] --- Links to code snapshots taken at various milestones ((E.G. "GoodLink LED lights" or "Windows recognised USB device")) as well as a HID reverse-engineering lookup table which I found very useful when trying to copy existing devices for testing purposes. * [[:project:usb:code:goodlink]] --- First baby step with the PDIUSBD12 * [[:project:usb:code:joystick]] --- "Final" firmware, with working bidirectional data flow and no drivers necessary * [[:project:usb#master_schematic_pdiusbd12_pic16f877|Master Schematic for hardware]] --- Circuit diagram in Flash format, and link to download. * [[project:gba|Game Boy Advance Section]] --- Details on the GBA link port and code needed to use General Purpose IO / USART mods. * [[project:Journal]] --- Unorganised and messy, but packed full of information which might save you time, this was a project diary. I recommend you search it if you need to find resources for information about this and that, or see if I encountered your problem once before. * [[project:Presentation]] --- The presentation I gave to accompany my written report. Probably of limited interest. ---- * [[project:links|Reference]] --- Links to references I used frequently to get answers during the project. * [[project:tools|Tools]] --- Hardware / Software solutions that aided getting the project going, such as the settings I needed to read debugging information with HyperTerminal and the like. ===== Project Specification ===== ==== Nintendo Game Boy Advance USB Interface: Implementaion & Demonstration ==== Taken directly from the [[http://www.RobMeerman.co.uk/downloads/project_specification.pdf|project specification]]. === Problem === Powerful Personal Digital Assistants (PDAs) and smart-phones are becoming common place and are increasingly used to entertain their users with games. This is fine for those that predominately want an organiser and think of games as a bonus, but what about those that prefer the games, but would still like some organisational capability? Portable games consoles are powerful enough to run simple PDA-like applications but they lack the connectivity that PDAs and smart-phones have in abundance. === Objectives === To create an interface between a PC and a Nintendo Gameboy Advance (GBA) system which is as easy to use as any existing PDA and to create some proof-of-concept software that shows the use of this interface to communicate between the two. == What this means == Effectivly the aim of my project is to implement the USB standard using some hardware, and then utilise this to as a communication channel between a GBA and a PC. The main focus is the USB implementation, which is quite complex --- as anyone who has skimmed the //USB 2.0 (Basic)//((This is the new name for USB 1.1, presumably so consumers didn't discriminate against 'old technology')) Specification will know.