Library for Mini-DK board

Dependencies:   SPI_TFT_ILI9320

Dependents:   LPC1768_Mini-DK_EasyWeb_DM9161 LPC1768_Mini-DK LPC1768_Mini-DK

Fork of Mini-DK by Frank Vannieuwkerke

Mini-DK board overview (Micro SD connector is at the bottom side)

One serial interface , uses CP2102 (USB to RS232 interface, support ISP download )

RJ45-10/100M Ethernet network interface (Ethernet PHY: DM9161)

2.8 inch TFT color LCD interface (SPI interface or 16Bit parallel interface)

Touch panel controller XPT2046 (ADS7843 compatible)

USB 2.0 interface, USB host and USB Device interface.

TF SD / MMC card (SPI) interface.

Two user buttons, One Reset button and ISP button , One INT0 button, two user-programmable LED lights

Serial ISP download, Standard 20-pin JTAG download simulation debugging interface.

Selection between external 5V power supply or USB 5V supply.

Board size: 95mm * 78mm

All IO available on extension connectors

/media/uploads/frankvnk/mini-dk_top.jpg

04/01/13

Erik Olieman (http://mbed.org/users/Sissors/) joined the code development for the Mini-DK board.

Thanks to his input, we were able to obtain a tremendous speed gain, remove warnings, ...

An overview of all modifications is stored in modifs.h

The old page (http://mbed.org/users/frankvnk/code/LPC1768_Mini-DK/) contains the demo code.

IMPORTANT : Due to a change in the mbed libraries (Stream()), we cannot use the printf instruction - we need to use <SPI_TFT>.printf (example - see main.cpp in http://mbed.org/users/frankvnk/code/LPC1768_Mini-DK/)

WARNING: filetoflash (SD to CPU flash)

The SPI_TFT library contains an option to copy an image from the SD card to the CPU flash memory. This allows you to use an image as background without speed loss when writing other text and graphics.

By default, this option is enabled.

It can be disabled by uncommenting the #define mentioned below in Mini_DK.h:

#define NO_FLASH_BUFFER

Since the flash memory has limited write endurance, DO NOT use this feature when you intend to read multiple images from the SD card (eg: when used as a photo frame).

14/01/13

A newer version of the Mini-DK has been released by the manufacturer: Mini-DK2. They replaced the DM9161 PHY with a LAN8720A PHY and better buttons are fitted on the board. All other hardware remains the same. Code for this PHY is available from the NXP MCU SW application team. This allows us to use the mbed 'EthernetInterface' library with little modifications. Further info - see http://mbed.org/forum/mbed/topic/3684/?page=1#comment-18473.

Notes:

The code in 'lpc_phy_lan8720.c' uses 'msDelay' - needs to be replaced with 'osDelay'.

A custom MAC address can be defined using following code:

extern "C" void mbed_mac_address(char * mac) {
 
// define your own MAC Address
  mac[0] = 0x00;  
  mac[1] = 0x01;  
  mac[2] = 0x02;  
  mac[3] = 0x03;  
  mac[4] = 0x04;  
  mac[5] = 0x05;           
  
};
Committer:
frankvnk
Date:
Fri Jan 04 13:55:02 2013 +0000
Revision:
8:9517c10e40d2
Parent:
Mini-DK/TouchADS7843/Touch.h@7:ffdd4e75b366
Child:
18:f045ae645960
Program -> Library from LPC1768_Mini-DK

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frankvnk 7:ffdd4e75b366 1 /******************************************************************
frankvnk 7:ffdd4e75b366 2 ***** *****
frankvnk 7:ffdd4e75b366 3 ***** Name: Touch.h *****
frankvnk 7:ffdd4e75b366 4 ***** Ver.: 1.0 *****
frankvnk 7:ffdd4e75b366 5 ***** Date: 04/01/2013 *****
frankvnk 7:ffdd4e75b366 6 ***** Auth: Frank Vannieuwkerke *****
frankvnk 7:ffdd4e75b366 7 ***** Erik Olieman *****
frankvnk 7:ffdd4e75b366 8 ***** Func: Touch driver for use with ADS7843 *****
frankvnk 7:ffdd4e75b366 9 ***** *****
frankvnk 7:ffdd4e75b366 10 ******************************************************************/
frankvnk 2:d0acbd263ec7 11
frankvnk 2:d0acbd263ec7 12 #ifndef MBED_Touch_H
frankvnk 2:d0acbd263ec7 13 #define MBED_Touch_H
frankvnk 2:d0acbd263ec7 14
frankvnk 2:d0acbd263ec7 15 #include "SPI_TFT.h"
frankvnk 2:d0acbd263ec7 16 #include "mbed.h"
frankvnk 2:d0acbd263ec7 17
frankvnk 2:d0acbd263ec7 18 typedef struct
frankvnk 2:d0acbd263ec7 19 {
frankvnk 2:d0acbd263ec7 20 int x;
frankvnk 2:d0acbd263ec7 21 int y;
frankvnk 2:d0acbd263ec7 22 } Coordinate;
frankvnk 2:d0acbd263ec7 23
frankvnk 2:d0acbd263ec7 24 typedef struct
frankvnk 2:d0acbd263ec7 25 {
frankvnk 2:d0acbd263ec7 26 int An,
frankvnk 2:d0acbd263ec7 27 Bn,
frankvnk 2:d0acbd263ec7 28 Cn,
frankvnk 2:d0acbd263ec7 29 Dn,
frankvnk 2:d0acbd263ec7 30 En,
frankvnk 2:d0acbd263ec7 31 Fn,
frankvnk 2:d0acbd263ec7 32 Divider ;
frankvnk 2:d0acbd263ec7 33 } Matrix;
frankvnk 2:d0acbd263ec7 34
frankvnk 2:d0acbd263ec7 35 class TouchScreenADS7843 {
frankvnk 2:d0acbd263ec7 36 public:
frankvnk 2:d0acbd263ec7 37 Coordinate display;
frankvnk 2:d0acbd263ec7 38 Coordinate screen;
frankvnk 2:d0acbd263ec7 39
frankvnk 3:fb4d62b5ffb3 40 /*
frankvnk 3:fb4d62b5ffb3 41 * Create a Touchscreen object connected to SPI and two pins
frankvnk 3:fb4d62b5ffb3 42 *
frankvnk 3:fb4d62b5ffb3 43 * @param mosi,miso,sclk SPI
frankvnk 3:fb4d62b5ffb3 44 * @param cs pin connected to CS of ADS7843
frankvnk 3:fb4d62b5ffb3 45 * @param irq pin connected to IRQ of ADS7843
frankvnk 3:fb4d62b5ffb3 46 * @param pointer to SPI_TFT constructor
frankvnk 3:fb4d62b5ffb3 47 *
frankvnk 3:fb4d62b5ffb3 48 */
frankvnk 3:fb4d62b5ffb3 49 TouchScreenADS7843(PinName tp_mosi, PinName tp_miso, PinName tp_sclk, PinName tp_cs, PinName tp_irq, SPI_TFT *_LCD);
frankvnk 2:d0acbd263ec7 50
frankvnk 7:ffdd4e75b366 51 /*
frankvnk 7:ffdd4e75b366 52 * Draw a 2 by 2 dot on the LCD screen
frankvnk 7:ffdd4e75b366 53 *
frankvnk 7:ffdd4e75b366 54 * @param x (horizontal position)
frankvnk 7:ffdd4e75b366 55 * @param y (vertical position)
frankvnk 7:ffdd4e75b366 56 * @param color (16 bit pixel color)
frankvnk 7:ffdd4e75b366 57 *
frankvnk 7:ffdd4e75b366 58 */
frankvnk 2:d0acbd263ec7 59 void TP_DrawPoint(unsigned int Xpos,unsigned int Ypos,unsigned int color);
frankvnk 7:ffdd4e75b366 60
frankvnk 7:ffdd4e75b366 61 /*
frankvnk 7:ffdd4e75b366 62 * Obtain averaged data from ADS7846
frankvnk 7:ffdd4e75b366 63 * does 9 consecutive reads and only stores averaged data
frankvnk 7:ffdd4e75b366 64 * when the 9 points are within the treshold limits.
frankvnk 7:ffdd4e75b366 65 *
frankvnk 7:ffdd4e75b366 66 * @param screenPTR (pointer to store data)
frankvnk 7:ffdd4e75b366 67 * @returns 1 on success
frankvnk 7:ffdd4e75b366 68 * @returns 0 on failure
frankvnk 7:ffdd4e75b366 69 *
frankvnk 7:ffdd4e75b366 70 * If called with screenPTR = NULL - 'screen' variable is used, otherwise (parameter) is used.
frankvnk 7:ffdd4e75b366 71 *
frankvnk 7:ffdd4e75b366 72 */
frankvnk 3:fb4d62b5ffb3 73 unsigned char Read_Ads7846(Coordinate * screenPtr = NULL);
frankvnk 7:ffdd4e75b366 74
frankvnk 7:ffdd4e75b366 75 /*
frankvnk 7:ffdd4e75b366 76 * Calibrate the touch panel.
frankvnk 7:ffdd4e75b366 77 * Three crosshairs are drawn and need to be touched in sequence.
frankvnk 7:ffdd4e75b366 78 * A calibration matrix is set accordingly.
frankvnk 7:ffdd4e75b366 79 *
frankvnk 7:ffdd4e75b366 80 */
frankvnk 2:d0acbd263ec7 81 void TouchPanel_Calibrate(void);
frankvnk 7:ffdd4e75b366 82
frankvnk 7:ffdd4e75b366 83 /*
frankvnk 7:ffdd4e75b366 84 * Obtain real x,y coordinates
frankvnk 7:ffdd4e75b366 85 * The x,y coordinates are calculated using the calibration matrix.
frankvnk 7:ffdd4e75b366 86 *
frankvnk 7:ffdd4e75b366 87 */
frankvnk 2:d0acbd263ec7 88 unsigned char getDisplayPoint(void);
frankvnk 2:d0acbd263ec7 89
frankvnk 2:d0acbd263ec7 90 SPI_TFT *LCD;
frankvnk 2:d0acbd263ec7 91 SPI _tp_spi;
frankvnk 2:d0acbd263ec7 92 DigitalOut _tp_cs;
frankvnk 2:d0acbd263ec7 93 DigitalIn _tp_irq;
frankvnk 2:d0acbd263ec7 94
frankvnk 2:d0acbd263ec7 95 protected:
frankvnk 2:d0acbd263ec7 96
frankvnk 3:fb4d62b5ffb3 97 #define SPI_RD_DELAY 1
frankvnk 3:fb4d62b5ffb3 98 #define CHX 0xd0 // 12 bit mode
frankvnk 3:fb4d62b5ffb3 99 #define CHY 0x90
frankvnk 2:d0acbd263ec7 100
frankvnk 3:fb4d62b5ffb3 101 Coordinate DisplaySample[3];
frankvnk 3:fb4d62b5ffb3 102 Coordinate ScreenSample[3];
frankvnk 3:fb4d62b5ffb3 103 Matrix matrix;
frankvnk 3:fb4d62b5ffb3 104
frankvnk 7:ffdd4e75b366 105 /*
frankvnk 7:ffdd4e75b366 106 * Obtain raw x,y data from ADS7846
frankvnk 7:ffdd4e75b366 107 *
frankvnk 7:ffdd4e75b366 108 * @param pointer to raw x and y coordinates (pointer to store data)
frankvnk 7:ffdd4e75b366 109 * @returns x (horizontal position)
frankvnk 7:ffdd4e75b366 110 * @returns y (vertical position)
frankvnk 7:ffdd4e75b366 111 *
frankvnk 7:ffdd4e75b366 112 */
frankvnk 3:fb4d62b5ffb3 113 void TP_GetAdXY(int *x,int *y);
frankvnk 7:ffdd4e75b366 114
frankvnk 7:ffdd4e75b366 115 /*
frankvnk 7:ffdd4e75b366 116 * Obtain raw single channel data from ADS7846 (Called by TP_GetADXY)
frankvnk 7:ffdd4e75b366 117 *
frankvnk 7:ffdd4e75b366 118 * @param channel to be read (CHX or CHY)
frankvnk 7:ffdd4e75b366 119 * @returns raw scaled down value (return value range must be between 0 and 1024)
frankvnk 7:ffdd4e75b366 120 *
frankvnk 7:ffdd4e75b366 121 */
frankvnk 2:d0acbd263ec7 122 int Read_XY(unsigned char XY);
frankvnk 7:ffdd4e75b366 123
frankvnk 7:ffdd4e75b366 124 /*
frankvnk 7:ffdd4e75b366 125 * Draw a calibration crosshair on the LCD screen
frankvnk 7:ffdd4e75b366 126 *
frankvnk 7:ffdd4e75b366 127 * @param x (horizontal position)
frankvnk 7:ffdd4e75b366 128 * @param y (vertical position)
frankvnk 7:ffdd4e75b366 129 *
frankvnk 7:ffdd4e75b366 130 */
frankvnk 2:d0acbd263ec7 131 void DrawCross(unsigned int Xpos,unsigned int Ypos);
frankvnk 7:ffdd4e75b366 132
frankvnk 7:ffdd4e75b366 133 /*
frankvnk 7:ffdd4e75b366 134 * Set the calibration matrix
frankvnk 7:ffdd4e75b366 135 *
frankvnk 7:ffdd4e75b366 136 * @param displayPTR (pointer to display data)
frankvnk 7:ffdd4e75b366 137 * @param screenPTR (pointer to screen data)
frankvnk 7:ffdd4e75b366 138 * @param matrixPTR (pointer to calibration matrix)
frankvnk 7:ffdd4e75b366 139 *
frankvnk 7:ffdd4e75b366 140 * @returns 0 when matrix.divider != 0
frankvnk 7:ffdd4e75b366 141 * @returns 1 when matrix.divider = 0
frankvnk 7:ffdd4e75b366 142 *
frankvnk 7:ffdd4e75b366 143 */
frankvnk 2:d0acbd263ec7 144 unsigned char setCalibrationMatrix( Coordinate * displayPtr,Coordinate * screenPtr,Matrix * matrixPtr);
frankvnk 2:d0acbd263ec7 145
frankvnk 2:d0acbd263ec7 146 };
frankvnk 2:d0acbd263ec7 147 #endif