Browse code

Power saving changes, add new fonts, bitmaps and screens

Nils Faerber authored on 19/05/2013 00:07:04
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,127 @@
1
+/*******************************************************************************
2
+ *
3
+ * HAL_FLASH.c
4
+ * Flash Library for flash memory controller of MSP430F5xx/6xx family
5
+ * 
6
+ *
7
+ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ 
8
+ * 
9
+ * 
10
+ *  Redistribution and use in source and binary forms, with or without 
11
+ *  modification, are permitted provided that the following conditions 
12
+ *  are met:
13
+ *
14
+ *    Redistributions of source code must retain the above copyright 
15
+ *    notice, this list of conditions and the following disclaimer.
16
+ *
17
+ *    Redistributions in binary form must reproduce the above copyright
18
+ *    notice, this list of conditions and the following disclaimer in the 
19
+ *    documentation and/or other materials provided with the   
20
+ *    distribution.
21
+ *
22
+ *    Neither the name of Texas Instruments Incorporated nor the names of
23
+ *    its contributors may be used to endorse or promote products derived
24
+ *    from this software without specific prior written permission.
25
+ *
26
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
27
+ *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
28
+ *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29
+ *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
30
+ *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
31
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
32
+ *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33
+ *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34
+ *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
35
+ *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
36
+ *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
+ * 
38
+ * Created: Version 1.0 11/24/2009
39
+ * Updated: Version 2.0 01/18/2011
40
+ *  
41
+ ******************************************************************************/
42
+ 
43
+#include "msp430.h"
44
+#include "HAL_FLASH.h"
45
+
46
+void Flash_SegmentErase(unsigned int *Flash_ptr)
47
+{
48
+  FCTL3 = FWKEY;                            // Clear Lock bit
49
+  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
50
+  *Flash_ptr = 0;                           // Dummy write to erase Flash seg
51
+  while (FCTL3 & BUSY);                     // test busy
52
+  FCTL1 = FWKEY;                            // Clear WRT bit
53
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
54
+}
55
+
56
+unsigned char Flash_EraseCheck(unsigned int *Flash_ptr, unsigned int len)
57
+{
58
+  unsigned int i;
59
+  
60
+  for (i = 0; i < len; i++) {               // was erasing successfull?
61
+    if (*(Flash_ptr + i) != 0xFF) {
62
+      return FLASH_STATUS_ERROR;
63
+    }
64
+  }
65
+
66
+  return FLASH_STATUS_OK;
67
+}
68
+
69
+void FlashWrite_8(unsigned char *Data_ptr, unsigned char *Flash_ptr, unsigned int count)
70
+{
71
+  FCTL3 = FWKEY;                            // Clear Lock bit
72
+  FCTL1 = FWKEY+WRT;                        // Enable byte/word write mode
73
+  
74
+  while (count > 0) {
75
+    while (FCTL3 & BUSY);                   // test busy
76
+    *Flash_ptr++ = *Data_ptr++;             // Write to Flash
77
+    count--;
78
+  }
79
+
80
+  FCTL1 = FWKEY;                            // Clear write bit
81
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
82
+}
83
+
84
+void FlashWrite_16(unsigned int *Data_ptr, unsigned int *Flash_ptr, unsigned int count)
85
+{
86
+  FCTL3 = FWKEY;                            // Clear Lock bit
87
+  FCTL1 = FWKEY+WRT;                        // Enable byte/word write mode
88
+  
89
+  while (count > 0) {
90
+    while (FCTL3 & BUSY);                   // test busy
91
+    *Flash_ptr++ = *Data_ptr++;             // Write to Flash
92
+    count--;
93
+  }
94
+
95
+  FCTL1 = FWKEY;                            // Clear Erase bit
96
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
97
+}
98
+
99
+void FlashWrite_32(unsigned long *Data_ptr, unsigned long *Flash_ptr, unsigned int count)
100
+{
101
+  FCTL3 = FWKEY;                            // Clear Lock bit
102
+  FCTL1 = FWKEY + BLKWRT;                   // Enable long-word write
103
+  
104
+  while (count > 0) {
105
+    while (FCTL3 & BUSY);                   // test busy
106
+    *Flash_ptr++ = *Data_ptr++;             // Write to Flash
107
+    count--;
108
+  }
109
+
110
+  FCTL1 = FWKEY;                            // Clear Erase bit
111
+  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
112
+}
113
+
114
+void FlashMemoryFill_32(unsigned long value, unsigned long *Flash_ptr, unsigned int count)
115
+{
116
+  FCTL3 = FWKEY;                            // Clear Lock bit
117
+  FCTL1 = FWKEY + BLKWRT;                   // Enable long-word write
118
+
119
+  while (count > 0) {
120
+    while (FCTL3 & BUSY);                   // test busy
121
+    *Flash_ptr++ = value;                   // Write to Flash
122
+    count--;
123
+  }
124
+
125
+  FCTL1 = FWKEY;                            // Clear Erase bit
126
+  FCTL3 = FWKEY + LOCK;                      // Set LOCK bit
127
+}