Sam Shi / Mbed 2 deprecated unytelogoanimation

Dependencies:   unytelogo BLE_API USBDevice mbed

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

Committer:
SamShiSS
Date:
Tue Jul 18 14:49:16 2017 +0000
Revision:
32:d1c11d170f0e
Unyte logo animation (growing leaf)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SamShiSS 32:d1c11d170f0e 1 /*******************************************************************************
SamShiSS 32:d1c11d170f0e 2 * Copyright (C) 2014 Maxim Integrated Products, Inc., All Rights Reserved.
SamShiSS 32:d1c11d170f0e 3 *
SamShiSS 32:d1c11d170f0e 4 * Permission is hereby granted, free of charge, to any person obtaining a
SamShiSS 32:d1c11d170f0e 5 * copy of this software and associated documentation files (the "Software"),
SamShiSS 32:d1c11d170f0e 6 * to deal in the Software without restriction, including without limitation
SamShiSS 32:d1c11d170f0e 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
SamShiSS 32:d1c11d170f0e 8 * and/or sell copies of the Software, and to permit persons to whom the
SamShiSS 32:d1c11d170f0e 9 * Software is furnished to do so, subject to the following conditions:
SamShiSS 32:d1c11d170f0e 10 *
SamShiSS 32:d1c11d170f0e 11 * The above copyright notice and this permission notice shall be included
SamShiSS 32:d1c11d170f0e 12 * in all copies or substantial portions of the Software.
SamShiSS 32:d1c11d170f0e 13 *
SamShiSS 32:d1c11d170f0e 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
SamShiSS 32:d1c11d170f0e 15 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
SamShiSS 32:d1c11d170f0e 16 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
SamShiSS 32:d1c11d170f0e 17 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
SamShiSS 32:d1c11d170f0e 18 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
SamShiSS 32:d1c11d170f0e 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
SamShiSS 32:d1c11d170f0e 20 * OTHER DEALINGS IN THE SOFTWARE.
SamShiSS 32:d1c11d170f0e 21 *
SamShiSS 32:d1c11d170f0e 22 * Except as contained in this notice, the name of Maxim Integrated
SamShiSS 32:d1c11d170f0e 23 * Products, Inc. shall not be used except as stated in the Maxim Integrated
SamShiSS 32:d1c11d170f0e 24 * Products, Inc. Branding Policy.
SamShiSS 32:d1c11d170f0e 25 *
SamShiSS 32:d1c11d170f0e 26 * The mere transfer of this software does not imply any licenses
SamShiSS 32:d1c11d170f0e 27 * of trade secrets, proprietary technology, copyrights, patents,
SamShiSS 32:d1c11d170f0e 28 * trademarks, maskwork rights, or any other form of intellectual
SamShiSS 32:d1c11d170f0e 29 * property whatsoever. Maxim Integrated Products, Inc. retains all
SamShiSS 32:d1c11d170f0e 30 * ownership rights.
SamShiSS 32:d1c11d170f0e 31 *******************************************************************************
SamShiSS 32:d1c11d170f0e 32 */
SamShiSS 32:d1c11d170f0e 33
SamShiSS 32:d1c11d170f0e 34 /* $Revision: 3277 $ $Date: 2014-10-02 13:39:01 -0500 (Thu, 02 Oct 2014) $ */
SamShiSS 32:d1c11d170f0e 35
SamShiSS 32:d1c11d170f0e 36 #include "./mxc_config.h"
SamShiSS 32:d1c11d170f0e 37
SamShiSS 32:d1c11d170f0e 38 #include <stdint.h>
SamShiSS 32:d1c11d170f0e 39 #include <string.h>
SamShiSS 32:d1c11d170f0e 40
SamShiSS 32:d1c11d170f0e 41 #include "./flc.h"
SamShiSS 32:d1c11d170f0e 42 #include "./icc_regs.h"
SamShiSS 32:d1c11d170f0e 43
SamShiSS 32:d1c11d170f0e 44
SamShiSS 32:d1c11d170f0e 45 int32_t FLC_Erase(uint32_t address, uint8_t erase_code, uint8_t unlock_key)
SamShiSS 32:d1c11d170f0e 46 {
SamShiSS 32:d1c11d170f0e 47 if(!MXC_ICC->ctrl_stat_f.enable) {
SamShiSS 32:d1c11d170f0e 48 return -1;
SamShiSS 32:d1c11d170f0e 49 }
SamShiSS 32:d1c11d170f0e 50
SamShiSS 32:d1c11d170f0e 51 mxc_flc_ctrl_t fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 52 fcntl.erase_code = 0; /* clear erase code */
SamShiSS 32:d1c11d170f0e 53 fcntl.auto_incre_mode = 0; /* clear burst */
SamShiSS 32:d1c11d170f0e 54 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 55
SamShiSS 32:d1c11d170f0e 56 fcntl.flsh_unlock = unlock_key;
SamShiSS 32:d1c11d170f0e 57 fcntl.erase_code = erase_code;
SamShiSS 32:d1c11d170f0e 58 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 59
SamShiSS 32:d1c11d170f0e 60 MXC_FLC->faddr = (address & MXC_FLC_PAGE_ERASE_MSK); /* set bank address */
SamShiSS 32:d1c11d170f0e 61
SamShiSS 32:d1c11d170f0e 62 fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 63 fcntl.page_erase = 1; /* set and start erase operation */
SamShiSS 32:d1c11d170f0e 64 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 65
SamShiSS 32:d1c11d170f0e 66 do {
SamShiSS 32:d1c11d170f0e 67 fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 68 } while (fcntl.pending); /* wait until done */
SamShiSS 32:d1c11d170f0e 69
SamShiSS 32:d1c11d170f0e 70 fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 71 fcntl.erase_code = 0; /* lock flash */
SamShiSS 32:d1c11d170f0e 72 fcntl.flsh_unlock = 0;
SamShiSS 32:d1c11d170f0e 73 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 74
SamShiSS 32:d1c11d170f0e 75 return 0;
SamShiSS 32:d1c11d170f0e 76 }
SamShiSS 32:d1c11d170f0e 77
SamShiSS 32:d1c11d170f0e 78 int32_t FLC_WriteBlock(uint32_t address, const void *data, uint32_t length, uint8_t unlock_key)
SamShiSS 32:d1c11d170f0e 79 {
SamShiSS 32:d1c11d170f0e 80 uint32_t *word = (uint32_t *) data;
SamShiSS 32:d1c11d170f0e 81
SamShiSS 32:d1c11d170f0e 82 if(!MXC_ICC->ctrl_stat_f.enable) {
SamShiSS 32:d1c11d170f0e 83 return -1;
SamShiSS 32:d1c11d170f0e 84 }
SamShiSS 32:d1c11d170f0e 85
SamShiSS 32:d1c11d170f0e 86 if(address & 3) { /* address needs to be aligned with word */
SamShiSS 32:d1c11d170f0e 87 return -1;
SamShiSS 32:d1c11d170f0e 88 }
SamShiSS 32:d1c11d170f0e 89
SamShiSS 32:d1c11d170f0e 90 length = length & 0xfffffffc;
SamShiSS 32:d1c11d170f0e 91
SamShiSS 32:d1c11d170f0e 92 mxc_flc_ctrl_t fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 93 fcntl.erase_code = 0; /* clear erase code */
SamShiSS 32:d1c11d170f0e 94 fcntl.auto_incre_mode = 0; /* clear burst */
SamShiSS 32:d1c11d170f0e 95 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 96
SamShiSS 32:d1c11d170f0e 97 fcntl.flsh_unlock = unlock_key; /* set unlock */
SamShiSS 32:d1c11d170f0e 98 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 99
SamShiSS 32:d1c11d170f0e 100 while (length)
SamShiSS 32:d1c11d170f0e 101 {
SamShiSS 32:d1c11d170f0e 102 MXC_FLC->faddr = address;
SamShiSS 32:d1c11d170f0e 103 MXC_FLC->fdata = *word;
SamShiSS 32:d1c11d170f0e 104
SamShiSS 32:d1c11d170f0e 105 fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 106 fcntl.write = 1;
SamShiSS 32:d1c11d170f0e 107 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 108
SamShiSS 32:d1c11d170f0e 109 address += 4;
SamShiSS 32:d1c11d170f0e 110 word++;
SamShiSS 32:d1c11d170f0e 111 length -= 4;
SamShiSS 32:d1c11d170f0e 112
SamShiSS 32:d1c11d170f0e 113 do {
SamShiSS 32:d1c11d170f0e 114 fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 115 } while (fcntl.pending);
SamShiSS 32:d1c11d170f0e 116 }
SamShiSS 32:d1c11d170f0e 117
SamShiSS 32:d1c11d170f0e 118 fcntl = MXC_FLC->ctrl_f;
SamShiSS 32:d1c11d170f0e 119 fcntl.erase_code = 0; /* lock flash */
SamShiSS 32:d1c11d170f0e 120 fcntl.flsh_unlock = 0;
SamShiSS 32:d1c11d170f0e 121 MXC_FLC->ctrl_f = fcntl;
SamShiSS 32:d1c11d170f0e 122
SamShiSS 32:d1c11d170f0e 123 return 0;
SamShiSS 32:d1c11d170f0e 124 }
SamShiSS 32:d1c11d170f0e 125