|
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