lemming lemming / Mbed 2 deprecated Pinscape_Controller_Slider

Dependencies:   USBDevice mbed

Fork of Pinscape_Controller by Mike R

Committer:
mjr
Date:
Wed Jul 16 23:33:12 2014 +0000
Revision:
1:d913e0afb2ac
Before removing time/frequency limit on reading the plunger sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mjr 1:d913e0afb2ac 1 /*
mjr 1:d913e0afb2ac 2 * Freescale FTFA Flash Memory programmer
mjr 1:d913e0afb2ac 3 *
mjr 1:d913e0afb2ac 4 * Sample usage:
mjr 1:d913e0afb2ac 5
mjr 1:d913e0afb2ac 6 #include "mbed.h"
mjr 1:d913e0afb2ac 7 #include "FreescaleIAP.h"
mjr 1:d913e0afb2ac 8
mjr 1:d913e0afb2ac 9 int main() {
mjr 1:d913e0afb2ac 10 int address = flash_size() - SECTOR_SIZE; //Write in last sector
mjr 1:d913e0afb2ac 11
mjr 1:d913e0afb2ac 12 int *data = (int*)address;
mjr 1:d913e0afb2ac 13 printf("Starting\r\n");
mjr 1:d913e0afb2ac 14 erase_sector(address);
mjr 1:d913e0afb2ac 15 int numbers[10] = {0, 1, 10, 100, 1000, 10000, 1000000, 10000000, 100000000, 1000000000};
mjr 1:d913e0afb2ac 16 program_flash(address, (char*)&numbers, 40); //10 integers of 4 bytes each: 40 bytes length
mjr 1:d913e0afb2ac 17 printf("Resulting flash: \r\n");
mjr 1:d913e0afb2ac 18 for (int i = 0; i<10; i++)
mjr 1:d913e0afb2ac 19 printf("%d\r\n", data[i]);
mjr 1:d913e0afb2ac 20
mjr 1:d913e0afb2ac 21 printf("Done\r\n\n");
mjr 1:d913e0afb2ac 22
mjr 1:d913e0afb2ac 23
mjr 1:d913e0afb2ac 24 while (true) {
mjr 1:d913e0afb2ac 25 }
mjr 1:d913e0afb2ac 26 }
mjr 1:d913e0afb2ac 27
mjr 1:d913e0afb2ac 28 */
mjr 1:d913e0afb2ac 29
mjr 1:d913e0afb2ac 30 #ifndef FREESCALEIAP_H
mjr 1:d913e0afb2ac 31 #define FREESCALEIAP_H
mjr 1:d913e0afb2ac 32
mjr 1:d913e0afb2ac 33 #include "mbed.h"
mjr 1:d913e0afb2ac 34
mjr 1:d913e0afb2ac 35 #ifdef TARGET_KLXX
mjr 1:d913e0afb2ac 36 #define SECTOR_SIZE 1024
mjr 1:d913e0afb2ac 37 #elif TARGET_K20D5M
mjr 1:d913e0afb2ac 38 #define SECTOR_SIZE 2048
mjr 1:d913e0afb2ac 39 #elif TARGET_K64F
mjr 1:d913e0afb2ac 40 #define SECTOR_SIZE 4096
mjr 1:d913e0afb2ac 41 #else
mjr 1:d913e0afb2ac 42 #define SECTOR_SIZE 1024
mjr 1:d913e0afb2ac 43 #endif
mjr 1:d913e0afb2ac 44
mjr 1:d913e0afb2ac 45 enum IAPCode {
mjr 1:d913e0afb2ac 46 BoundaryError = -99, //Commands may not span several sectors
mjr 1:d913e0afb2ac 47 AlignError, //Data must be aligned on longword (two LSBs zero)
mjr 1:d913e0afb2ac 48 ProtectionError, //Flash sector is protected
mjr 1:d913e0afb2ac 49 AccessError, //Something went wrong
mjr 1:d913e0afb2ac 50 CollisionError, //During writing something tried to flash which was written to
mjr 1:d913e0afb2ac 51 LengthError, //The length must be multiples of 4
mjr 1:d913e0afb2ac 52 RuntimeError,
mjr 1:d913e0afb2ac 53 EraseError, //The flash was not erased before writing to it
mjr 1:d913e0afb2ac 54 Success = 0
mjr 1:d913e0afb2ac 55 };
mjr 1:d913e0afb2ac 56
mjr 1:d913e0afb2ac 57 /** Erase a flash sector
mjr 1:d913e0afb2ac 58 *
mjr 1:d913e0afb2ac 59 * The size erased depends on the used device
mjr 1:d913e0afb2ac 60 *
mjr 1:d913e0afb2ac 61 * @param address address in the sector which needs to be erased
mjr 1:d913e0afb2ac 62 * @param return Success if no errors were encountered, otherwise one of the error states
mjr 1:d913e0afb2ac 63 */
mjr 1:d913e0afb2ac 64 IAPCode erase_sector(int address);
mjr 1:d913e0afb2ac 65
mjr 1:d913e0afb2ac 66 /** Program flash
mjr 1:d913e0afb2ac 67 *
mjr 1:d913e0afb2ac 68 * Before programming the used area needs to be erased. The erase state is checked
mjr 1:d913e0afb2ac 69 * before programming, and will return an error if not erased.
mjr 1:d913e0afb2ac 70 *
mjr 1:d913e0afb2ac 71 * @param address starting address where the data needs to be programmed (must be longword alligned: two LSBs must be zero)
mjr 1:d913e0afb2ac 72 * @param data pointer to array with the data to program
mjr 1:d913e0afb2ac 73 * @param length number of bytes to program (must be a multiple of 4)
mjr 1:d913e0afb2ac 74 * @param return Success if no errors were encountered, otherwise one of the error states
mjr 1:d913e0afb2ac 75 */
mjr 1:d913e0afb2ac 76 IAPCode program_flash(int address, char *data, unsigned int length);
mjr 1:d913e0afb2ac 77
mjr 1:d913e0afb2ac 78 /**
mjr 1:d913e0afb2ac 79 * Returns size of flash memory
mjr 1:d913e0afb2ac 80 *
mjr 1:d913e0afb2ac 81 * This is the first address which is not flash
mjr 1:d913e0afb2ac 82 *
mjr 1:d913e0afb2ac 83 * @param return length of flash memory in bytes
mjr 1:d913e0afb2ac 84 */
mjr 1:d913e0afb2ac 85 uint32_t flash_size(void);
mjr 1:d913e0afb2ac 86
mjr 1:d913e0afb2ac 87 #endif