|
13 | 13 |
|
14 | 14 | //***************************************************************************** |
15 | 15 | // |
16 | | -// Copyright (c) 2019, Ambiq Micro |
| 16 | +// Copyright (c) 2020, Ambiq Micro |
17 | 17 | // All rights reserved. |
18 | | -// |
| 18 | +// |
19 | 19 | // Redistribution and use in source and binary forms, with or without |
20 | 20 | // modification, are permitted provided that the following conditions are met: |
21 | | -// |
| 21 | +// |
22 | 22 | // 1. Redistributions of source code must retain the above copyright notice, |
23 | 23 | // this list of conditions and the following disclaimer. |
24 | | -// |
| 24 | +// |
25 | 25 | // 2. Redistributions in binary form must reproduce the above copyright |
26 | 26 | // notice, this list of conditions and the following disclaimer in the |
27 | 27 | // documentation and/or other materials provided with the distribution. |
28 | | -// |
| 28 | +// |
29 | 29 | // 3. Neither the name of the copyright holder nor the names of its |
30 | 30 | // contributors may be used to endorse or promote products derived from this |
31 | 31 | // software without specific prior written permission. |
32 | | -// |
| 32 | +// |
33 | 33 | // Third party software included in this distribution is subject to the |
34 | 34 | // additional license terms as defined in the /docs/licenses directory. |
35 | | -// |
| 35 | +// |
36 | 36 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
37 | 37 | // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
38 | 38 | // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
45 | 45 | // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
46 | 46 | // POSSIBILITY OF SUCH DAMAGE. |
47 | 47 | // |
48 | | -// This is part of revision v2.2.0-7-g63f7c2ba1 of the AmbiqSuite Development Package. |
| 48 | +// This is part of revision 2.4.1 of the AmbiqSuite Development Package. |
49 | 49 | // |
50 | 50 | //***************************************************************************** |
51 | 51 |
|
@@ -125,95 +125,113 @@ const struct |
125 | 125 | uint32_t ui32MemoryEvent; |
126 | 126 | uint32_t ui32MemoryMask; |
127 | 127 | uint32_t ui32StatusMask; |
| 128 | + uint32_t ui32PwdSlpEnable; |
128 | 129 | } |
129 | 130 | am_hal_pwrctrl_memory_control[AM_HAL_PWRCTRL_MEM_MAX] = |
130 | 131 | { |
131 | | - {0, 0, 0}, |
| 132 | + {0, 0, 0, 0, 0, 0}, |
132 | 133 | {AM_HAL_PWRCTRL_MEMEN_SRAM_8K_DTCM, |
133 | 134 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_8K_DTCM, |
134 | 135 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_8K_DTCM, |
135 | 136 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
136 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 137 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 138 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_8K_DTCM}, |
137 | 139 | {AM_HAL_PWRCTRL_MEMEN_SRAM_32K_DTCM, |
138 | 140 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_32K_DTCM, |
139 | 141 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_32K_DTCM, |
140 | 142 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
141 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 143 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 144 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_32K_DTCM}, |
142 | 145 | {AM_HAL_PWRCTRL_MEMEN_SRAM_64K_DTCM, |
143 | 146 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_64K_DTCM, |
144 | 147 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_64K_DTCM, |
145 | 148 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
146 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 149 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 150 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_64K_DTCM}, |
147 | 151 | {AM_HAL_PWRCTRL_MEMEN_SRAM_96K, |
148 | 152 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_96K, |
149 | 153 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_96K, |
150 | 154 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
151 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 155 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 156 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_96K}, |
152 | 157 | {AM_HAL_PWRCTRL_MEMEN_SRAM_128K, |
153 | 158 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_128K, |
154 | 159 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_128K, |
155 | 160 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
156 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 161 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 162 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_128K}, |
157 | 163 | {AM_HAL_PWRCTRL_MEMEN_SRAM_160K, |
158 | 164 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_160K, |
159 | 165 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_160K, |
160 | 166 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
161 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 167 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 168 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_160K}, |
162 | 169 | {AM_HAL_PWRCTRL_MEMEN_SRAM_192K, |
163 | 170 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_192K, |
164 | 171 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_192K, |
165 | 172 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
166 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 173 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 174 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_192K}, |
167 | 175 | {AM_HAL_PWRCTRL_MEMEN_SRAM_224K, |
168 | 176 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_224K, |
169 | 177 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_224K, |
170 | 178 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
171 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 179 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 180 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_224K}, |
172 | 181 | {AM_HAL_PWRCTRL_MEMEN_SRAM_256K, |
173 | 182 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_256K, |
174 | 183 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_256K, |
175 | 184 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
176 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 185 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 186 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_256K}, |
177 | 187 | {AM_HAL_PWRCTRL_MEMEN_SRAM_288K, |
178 | 188 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_288K, |
179 | 189 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_288K, |
180 | 190 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
181 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 191 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 192 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_288K}, |
182 | 193 | {AM_HAL_PWRCTRL_MEMEN_SRAM_320K, |
183 | 194 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_320K, |
184 | 195 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_320K, |
185 | 196 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
186 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 197 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 198 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_320K}, |
187 | 199 | {AM_HAL_PWRCTRL_MEMEN_SRAM_352K, |
188 | 200 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_352K, |
189 | 201 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_352K, |
190 | 202 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
191 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 203 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 204 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_352K}, |
192 | 205 | {AM_HAL_PWRCTRL_MEMEN_SRAM_384K, |
193 | 206 | AM_HAL_PWRCTRL_PWRONSTATUS_SRAM_384K, |
194 | 207 | AM_HAL_PWRCTRL_MEMPWREVENTEN_SRAM_384K, |
195 | 208 | AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
196 | | - AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK}, |
| 209 | + AM_HAL_PWRCTRL_MEM_REGION_SRAM_MASK, |
| 210 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_SRAM_384K}, |
197 | 211 | {AM_HAL_PWRCTRL_MEMEN_FLASH_512K, |
198 | 212 | AM_HAL_PWRCTRL_PWRONSTATUS_FLASH_512K, |
199 | 213 | AM_HAL_PWRCTRL_MEMPWREVENTEN_FLASH_512K, |
200 | 214 | AM_HAL_PWRCTRL_MEM_REGION_FLASH_MASK, |
201 | | - AM_HAL_PWRCTRL_MEM_REGION_FLASH_MASK}, |
| 215 | + AM_HAL_PWRCTRL_MEM_REGION_FLASH_MASK, |
| 216 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_FLASH_512K}, |
202 | 217 | {AM_HAL_PWRCTRL_MEMEN_FLASH_1M, |
203 | 218 | AM_HAL_PWRCTRL_PWRONSTATUS_FLASH_1M, |
204 | 219 | AM_HAL_PWRCTRL_MEMPWREVENTEN_FLASH_1M, |
205 | 220 | AM_HAL_PWRCTRL_MEM_REGION_FLASH_MASK, |
206 | | - AM_HAL_PWRCTRL_MEM_REGION_FLASH_MASK}, |
| 221 | + AM_HAL_PWRCTRL_MEM_REGION_FLASH_MASK, |
| 222 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_FLASH_1M}, |
207 | 223 | {AM_HAL_PWRCTRL_MEMEN_CACHE, |
208 | 224 | 0, |
209 | 225 | AM_HAL_PWRCTRL_MEMPWREVENTEN_CACHE, |
210 | 226 | AM_HAL_PWRCTRL_MEM_REGION_CACHE_MASK, |
211 | | - 0}, |
| 227 | + 0, |
| 228 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_CACHE}, |
212 | 229 | {AM_HAL_PWRCTRL_MEMEN_ALL, |
213 | 230 | AM_HAL_PWRCTRL_PWRONSTATUS_ALL, |
214 | 231 | AM_HAL_PWRCTRL_MEMPWREVENTEN_ALL, |
215 | 232 | AM_HAL_PWRCTRL_MEM_REGION_ALL_MASK, |
216 | | - AM_HAL_PWRCTRL_MEM_REGION_ALT_ALL_MASK} |
| 233 | + AM_HAL_PWRCTRL_MEM_REGION_ALT_ALL_MASK, |
| 234 | + AM_HAL_PWRCTRL_MEMPWDINSLEEP_ALL} |
217 | 235 | }; |
218 | 236 |
|
219 | 237 | // **************************************************************************** |
@@ -441,6 +459,50 @@ am_hal_pwrctrl_memory_enable(am_hal_pwrctrl_mem_e eMemConfig) |
441 | 459 | } |
442 | 460 | } |
443 | 461 |
|
| 462 | +// **************************************************************************** |
| 463 | +// |
| 464 | +// am_hal_pwrctrl_memory_deepsleep_powerdown() |
| 465 | +// Power down respective memory. |
| 466 | +// |
| 467 | +// **************************************************************************** |
| 468 | +uint32_t |
| 469 | +am_hal_pwrctrl_memory_deepsleep_powerdown(am_hal_pwrctrl_mem_e eMemConfig) |
| 470 | +{ |
| 471 | + if ( eMemConfig >= AM_HAL_PWRCTRL_MEM_MAX ) |
| 472 | + { |
| 473 | + return AM_HAL_STATUS_FAIL; |
| 474 | + } |
| 475 | + |
| 476 | + // |
| 477 | + // Power down the required memory. |
| 478 | + // |
| 479 | + PWRCTRL->MEMPWDINSLEEP |= am_hal_pwrctrl_memory_control[eMemConfig].ui32PwdSlpEnable; |
| 480 | + |
| 481 | + return AM_HAL_STATUS_SUCCESS; |
| 482 | +} |
| 483 | + |
| 484 | +// **************************************************************************** |
| 485 | +// |
| 486 | +// am_hal_pwrctrl_memory_deepsleep_retain() |
| 487 | +// Apply retention voltage to respective memory. |
| 488 | +// |
| 489 | +// **************************************************************************** |
| 490 | +uint32_t |
| 491 | +am_hal_pwrctrl_memory_deepsleep_retain(am_hal_pwrctrl_mem_e eMemConfig) |
| 492 | +{ |
| 493 | + if ( eMemConfig >= AM_HAL_PWRCTRL_MEM_MAX ) |
| 494 | + { |
| 495 | + return AM_HAL_STATUS_FAIL; |
| 496 | + } |
| 497 | + |
| 498 | + // |
| 499 | + // Retain the required memory. |
| 500 | + // |
| 501 | + PWRCTRL->MEMPWDINSLEEP &= ~am_hal_pwrctrl_memory_control[eMemConfig].ui32PwdSlpEnable; |
| 502 | + |
| 503 | + return AM_HAL_STATUS_SUCCESS; |
| 504 | +} |
| 505 | + |
444 | 506 | // **************************************************************************** |
445 | 507 | // |
446 | 508 | // am_hal_pwrctrl_low_power_init() |
@@ -472,6 +534,29 @@ am_hal_pwrctrl_low_power_init(void) |
472 | 534 | } |
473 | 535 | } |
474 | 536 |
|
| 537 | + // |
| 538 | + // Adjust the SIMOBUCK LP settings. |
| 539 | + // |
| 540 | + if (APOLLO3_GE_B0) |
| 541 | + { |
| 542 | + MCUCTRL->SIMOBUCK2_b.SIMOBUCKCORELPHIGHTONTRIM = 2; |
| 543 | + MCUCTRL->SIMOBUCK2_b.SIMOBUCKCORELPLOWTONTRIM = 3; |
| 544 | + MCUCTRL->SIMOBUCK3_b.SIMOBUCKCORELPHIGHTOFFTRIM = 5; |
| 545 | + MCUCTRL->SIMOBUCK3_b.SIMOBUCKCORELPLOWTOFFTRIM = 2; |
| 546 | + MCUCTRL->SIMOBUCK3_b.SIMOBUCKMEMLPHIGHTOFFTRIM = 6; |
| 547 | + MCUCTRL->SIMOBUCK3_b.SIMOBUCKMEMLPLOWTOFFTRIM = 1; |
| 548 | + MCUCTRL->SIMOBUCK3_b.SIMOBUCKMEMLPHIGHTONTRIM = 3; |
| 549 | + MCUCTRL->SIMOBUCK4_b.SIMOBUCKMEMLPLOWTONTRIM = 3; |
| 550 | + } |
| 551 | + |
| 552 | + // |
| 553 | + // Adjust the SIMOBUCK Timeout settings. |
| 554 | + // |
| 555 | + if (APOLLO3_GE_A1) |
| 556 | + { |
| 557 | + MCUCTRL->SIMOBUCK4_b.SIMOBUCKCOMP2TIMEOUTEN = 0; |
| 558 | + } |
| 559 | + |
475 | 560 | // |
476 | 561 | // Configure cache for low power and performance. |
477 | 562 | // |
@@ -528,6 +613,22 @@ am_hal_pwrctrl_low_power_init(void) |
528 | 613 | return AM_HAL_STATUS_SUCCESS; |
529 | 614 | } |
530 | 615 |
|
| 616 | +void am_hal_pwrctrl_blebuck_trim(void) |
| 617 | +{ |
| 618 | + // |
| 619 | + // Enable the BLE buck trim values |
| 620 | + // |
| 621 | + if ( APOLLO3_GE_A1 ) |
| 622 | + { |
| 623 | + AM_CRITICAL_BEGIN |
| 624 | + MCUCTRL->BLEBUCK2_b.BLEBUCKTONHITRIM = 0x19; |
| 625 | + MCUCTRL->BLEBUCK2_b.BLEBUCKTONLOWTRIM = 0xC; |
| 626 | + CLKGEN->BLEBUCKTONADJ_b.TONADJUSTEN = CLKGEN_BLEBUCKTONADJ_TONADJUSTEN_DIS; |
| 627 | + AM_CRITICAL_END |
| 628 | + } |
| 629 | + |
| 630 | +} |
| 631 | + |
531 | 632 | //***************************************************************************** |
532 | 633 | // |
533 | 634 | // End Doxygen group. |
|
0 commit comments