Rihards Balass / 4DGL-mbed-32PTU
Committer:
CaptainR
Date:
Thu Sep 15 08:04:37 2016 +0000
Revision:
13:1a0800957412
Parent:
12:29f5ad896382
Child:
14:561cb06a2739
Fixed RX callback function, fixed uSD read function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
CaptainR 12:29f5ad896382 1 //
CaptainR 12:29f5ad896382 2 // Picaso_4DGL-32PTU is a class to drive 4D Systems TFT touch screens with PICASO processor
CaptainR 12:29f5ad896382 3 // Tested with NUCLEO L152RE development board
CaptainR 12:29f5ad896382 4 // Copyright (C) <2016> Rihards Balass <rihards.balass@gmail.com>
CaptainR 12:29f5ad896382 5 //
CaptainR 12:29f5ad896382 6 // Picaso_4DGL-32PTU is free software: you can redistribute it and/or modify
CaptainR 12:29f5ad896382 7 // it under the terms of the GNU General Public License as published by
CaptainR 12:29f5ad896382 8 // the Free Software Foundation, either version 3 of the License, or
CaptainR 12:29f5ad896382 9 // (at your option) any later version.
CaptainR 12:29f5ad896382 10 //
CaptainR 12:29f5ad896382 11 // Picaso_4DGL-32PTU is distributed in the hope that it will be useful,
CaptainR 12:29f5ad896382 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
CaptainR 12:29f5ad896382 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
CaptainR 12:29f5ad896382 14 // GNU General Public License for more details.
CaptainR 12:29f5ad896382 15 //
CaptainR 12:29f5ad896382 16 // You can see GNU General Public License at <http://www.gnu.org/licenses/>.
CaptainR 12:29f5ad896382 17 //
CaptainR 12:29f5ad896382 18
CaptainR 12:29f5ad896382 19 #include "mbed.h"
CaptainR 12:29f5ad896382 20 #include "Picaso_4DGL-32PTU.h"
CaptainR 12:29f5ad896382 21
CaptainR 12:29f5ad896382 22 //**************************************************************************
CaptainR 12:29f5ad896382 23 // The Media Init command initialises a uSD/SD/SDHC memory card for further operations.
CaptainR 12:29f5ad896382 24 // The SD card is connected to the SPI (serial peripheral interface) of the PICASO-GFX2 chip.
CaptainR 12:29f5ad896382 25 //**************************************************************************
CaptainR 12:29f5ad896382 26 short PICASO_4DGL :: media_Init() {
CaptainR 12:29f5ad896382 27
CaptainR 12:29f5ad896382 28 char command[2] = "";
CaptainR 12:29f5ad896382 29
CaptainR 12:29f5ad896382 30 command[0] = (MEDIA_INIT >> (8*1)) & 0xff;
CaptainR 12:29f5ad896382 31 command[1] = (MEDIA_INIT >> (8*0)) & 0xff;
CaptainR 12:29f5ad896382 32
CaptainR 12:29f5ad896382 33 writeCOMMAND(command, 2);
CaptainR 12:29f5ad896382 34 short success = mediaInitResponse();
CaptainR 12:29f5ad896382 35 #ifdef DEBUGMODE
CaptainR 12:29f5ad896382 36 pc.printf("\n\r DEBUG: uSD card INIT: %i\n\r", success);
CaptainR 12:29f5ad896382 37 #endif
CaptainR 12:29f5ad896382 38 return success;
CaptainR 12:29f5ad896382 39 }
CaptainR 12:29f5ad896382 40
CaptainR 12:29f5ad896382 41 //**************************************************************************
CaptainR 12:29f5ad896382 42 // The Set Byte Address command sets the media memory internal
CaptainR 12:29f5ad896382 43 // Address pointer for access at a non-sector aligned byte address.
CaptainR 12:29f5ad896382 44 //**************************************************************************
CaptainR 12:29f5ad896382 45 bool PICASO_4DGL :: media_SetAdd(int address) {
CaptainR 12:29f5ad896382 46
CaptainR 12:29f5ad896382 47 char command[6] = "";
CaptainR 12:29f5ad896382 48
CaptainR 12:29f5ad896382 49 command[0] = (MEDIA_SET_ADD >> (8*1)) & 0xff;
CaptainR 12:29f5ad896382 50 command[1] = (MEDIA_SET_ADD >> (8*0)) & 0xff;
CaptainR 12:29f5ad896382 51 command[2] = (address >> (8*3)) & 0xff;
CaptainR 12:29f5ad896382 52 command[3] = (address >> (8*2)) & 0xff;
CaptainR 12:29f5ad896382 53 command[4] = (address >> (8*1)) & 0xff;
CaptainR 12:29f5ad896382 54 command[5] = (address >> (8*0)) & 0xff;
CaptainR 12:29f5ad896382 55
CaptainR 12:29f5ad896382 56 writeCOMMAND(command, 6);
CaptainR 12:29f5ad896382 57 bool success = getResponse(1);
CaptainR 12:29f5ad896382 58 #ifdef DEBUGMODE
CaptainR 12:29f5ad896382 59 pc.printf("\n\r DEBUG: Set byte address: %i\n\r", success);
CaptainR 12:29f5ad896382 60 #endif
CaptainR 12:29f5ad896382 61 return success;
CaptainR 12:29f5ad896382 62 }
CaptainR 12:29f5ad896382 63
CaptainR 12:29f5ad896382 64 //**************************************************************************
CaptainR 12:29f5ad896382 65 // The Set Sector Address command sets the media memory internal Address pointer for sector access.
CaptainR 12:29f5ad896382 66 //**************************************************************************
CaptainR 12:29f5ad896382 67 bool PICASO_4DGL :: media_SetSector(int address) {
CaptainR 12:29f5ad896382 68
CaptainR 12:29f5ad896382 69 char command[6] = "";
CaptainR 12:29f5ad896382 70
CaptainR 12:29f5ad896382 71 command[0] = (MEDIA_SET_SECTOR >> (8*1)) & 0xff;
CaptainR 12:29f5ad896382 72 command[1] = (MEDIA_SET_SECTOR >> (8*0)) & 0xff;
CaptainR 12:29f5ad896382 73 command[2] = (address >> (8*3)) & 0xff;
CaptainR 12:29f5ad896382 74 command[3] = (address >> (8*2)) & 0xff;
CaptainR 12:29f5ad896382 75 command[4] = (address >> (8*1)) & 0xff;
CaptainR 12:29f5ad896382 76 command[5] = (address >> (8*0)) & 0xff;
CaptainR 12:29f5ad896382 77
CaptainR 12:29f5ad896382 78 writeCOMMAND(command, 6);
CaptainR 12:29f5ad896382 79 bool success = getResponse(1);
CaptainR 12:29f5ad896382 80 #ifdef DEBUGMODE
CaptainR 12:29f5ad896382 81 pc.printf("\n\r DEBUG: Set sector address: %i\n\r", success);
CaptainR 12:29f5ad896382 82 #endif
CaptainR 12:29f5ad896382 83 return success;
CaptainR 12:29f5ad896382 84 }
CaptainR 12:29f5ad896382 85
CaptainR 12:29f5ad896382 86 //**************************************************************************
CaptainR 12:29f5ad896382 87 // The Read Sector command reads and returns 512 bytes (256 words)
CaptainR 12:29f5ad896382 88 // pointed to by the internal Sector pointer, determined by the
CaptainR 12:29f5ad896382 89 // “Set Sector Address” command.
CaptainR 12:29f5ad896382 90 // After the read the Sector pointer is automatically incremented by 1.
CaptainR 12:29f5ad896382 91 // Answer = acknowledge (byte) , status (word), block (sector) = 1 + 2 + 512 = 515 bytes
CaptainR 12:29f5ad896382 92 //**************************************************************************
CaptainR 13:1a0800957412 93 bool PICASO_4DGL :: media_RdSector() {
CaptainR 12:29f5ad896382 94
CaptainR 12:29f5ad896382 95 char command[2] = "";
CaptainR 12:29f5ad896382 96
CaptainR 12:29f5ad896382 97 command[0] = (MEDIA_READ_SECTOR >> (8*1)) & 0xff;
CaptainR 12:29f5ad896382 98 command[1] = (MEDIA_READ_SECTOR >> (8*0)) & 0xff;
CaptainR 12:29f5ad896382 99
CaptainR 12:29f5ad896382 100 writeCOMMAND(command, 2);
CaptainR 12:29f5ad896382 101 bool success = readSectorResponse(515);
CaptainR 12:29f5ad896382 102 #ifdef DEBUGMODE
CaptainR 13:1a0800957412 103 pc.printf("\n\r DEBUG: Read sector: %i\n\r", success);
CaptainR 12:29f5ad896382 104 #endif
CaptainR 12:29f5ad896382 105 return success;
CaptainR 12:29f5ad896382 106 }
CaptainR 12:29f5ad896382 107
CaptainR 12:29f5ad896382 108 //**************************************************************************
CaptainR 12:29f5ad896382 109 // The Write Sector command writes 512 bytes (256 words) from a source memory
CaptainR 12:29f5ad896382 110 // block into the uSD card. After the write the Sect pointer is automatically incremented by 1.
CaptainR 12:29f5ad896382 111 // Response = acknowledge (byte) , status (word)
CaptainR 12:29f5ad896382 112 //**************************************************************************
CaptainR 13:1a0800957412 113 bool PICASO_4DGL :: media_WrSector(char *block) {
CaptainR 12:29f5ad896382 114
CaptainR 12:29f5ad896382 115 char command[514] = "";
CaptainR 12:29f5ad896382 116
CaptainR 12:29f5ad896382 117 command[0] = (MEDIA_WRITE_SECTOR >> (8*1)) & 0xff;
CaptainR 12:29f5ad896382 118 command[1] = (MEDIA_WRITE_SECTOR >> (8*0)) & 0xff;
CaptainR 12:29f5ad896382 119
CaptainR 12:29f5ad896382 120 int j = 2;
CaptainR 12:29f5ad896382 121 int k = 0;
CaptainR 13:1a0800957412 122 //writeCOMMAND(command, 2);
CaptainR 12:29f5ad896382 123 bool success = readSectorResponse(515);
CaptainR 12:29f5ad896382 124 #ifdef DEBUGMODE
CaptainR 12:29f5ad896382 125 pc.printf("\n\r DEBUG: Set sector address: %i\n\r", success);
CaptainR 12:29f5ad896382 126 #endif
CaptainR 12:29f5ad896382 127 return success;
CaptainR 12:29f5ad896382 128 }
CaptainR 12:29f5ad896382 129
CaptainR 12:29f5ad896382 130
CaptainR 12:29f5ad896382 131
CaptainR 12:29f5ad896382 132
CaptainR 12:29f5ad896382 133
CaptainR 12:29f5ad896382 134
CaptainR 12:29f5ad896382 135
CaptainR 12:29f5ad896382 136
CaptainR 12:29f5ad896382 137
CaptainR 12:29f5ad896382 138
CaptainR 12:29f5ad896382 139
CaptainR 12:29f5ad896382 140
CaptainR 12:29f5ad896382 141
CaptainR 12:29f5ad896382 142
CaptainR 12:29f5ad896382 143
CaptainR 12:29f5ad896382 144
CaptainR 12:29f5ad896382 145
CaptainR 12:29f5ad896382 146
CaptainR 12:29f5ad896382 147
CaptainR 12:29f5ad896382 148
CaptainR 12:29f5ad896382 149
CaptainR 12:29f5ad896382 150
CaptainR 12:29f5ad896382 151
CaptainR 12:29f5ad896382 152
CaptainR 12:29f5ad896382 153
CaptainR 12:29f5ad896382 154
CaptainR 12:29f5ad896382 155
CaptainR 12:29f5ad896382 156
CaptainR 12:29f5ad896382 157
CaptainR 12:29f5ad896382 158
CaptainR 12:29f5ad896382 159
CaptainR 12:29f5ad896382 160