Difference between revisions of "Geehy APM32F0xx"
SebastianB (talk | contribs) (Created page with "__TOC__ The Geehy APM32F0xx are Cortex-M3 based MCUs. ==Internal Flash== ===Supported Regions=== The internal flash is divided into 2 to 3 different regions: *Main storage a...") |
Arne.kulinna (talk | contribs) |
||
(4 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
__TOC__ |
__TOC__ |
||
− | The Geehy APM32F0xx are Cortex- |
+ | The Geehy APM32F0xx are Cortex-M0+ based MCUs. Following information also applies for devices of the Geehy APM32A0xx family. |
==Internal Flash== |
==Internal Flash== |
||
===Supported Regions=== |
===Supported Regions=== |
||
− | The internal flash is divided into |
+ | The internal flash is divided into 3 different regions: |
− | *Main storage area with up to 512KB |
+ | *Main storage area starting at 0x08000000 with up to 512KB (256KB for APM32A0xx) |
− | * |
+ | *Reserved bootloader area starting at 0x1FFFD800 with up to 8KB |
+ | *Option byte area starting at 0x1FFFF800 with 16 bytes |
||
− | *Reserved bootloader area (all but APM32F003) |
||
+ | |||
+ | APM32F003 devices do not have a reserved bootloader area: |
||
+ | *Main storage area starting at 0x0 with up to 32KB |
||
+ | *Option byte area starting at 0x00020400 with 16 bytes |
||
For now, the J-Link supports the main storage and option byte area. |
For now, the J-Link supports the main storage and option byte area. |
||
+ | |||
+ | ===Option Byte Programming=== |
||
+ | The APM32F0 series devices provide some option bytes which allow some "permanent" configuration as well as readout protection for the device. The option bytes become effective after a reset, or, if the read protection is set while a debugger is still connected through JTAG/SWD, become effective after a power-on-reset. The sequence, to program the option bytes consists of multiple read / write accesses to special function registers of the APM32F0 MCU. |
||
+ | |||
+ | The option byte area consists of the actual option bytes and their corresponding complementary bytes. |
||
+ | All complementary bytes are automatically set when writing the option bytes. |
||
+ | |||
+ | The following tables describes the structure of the option byte sector: |
||
+ | {| class="wikitable" |
||
+ | |+ APM32F00x |
||
+ | |- |
||
+ | ! Address !! [31:24] !! [23:16] !! [15:08] !! [07:00] |
||
+ | |- |
||
+ | | 0x00020400 || nUOB || UOB || nREADPROT || READPROT |
||
+ | |- |
||
+ | | 0x00020404 || nData1 || Data1 || nData0 || Data0 |
||
+ | |- |
||
+ | | 0x00020408 || nWRP1 || WRP1 || nWRP0 || WRP0 |
||
+ | |- |
||
+ | | 0x0002040C || nWRP3 || WRP3 || nWRP2 || WRP2 |
||
+ | |- |
||
+ | | 0x00020410 || --- || --- || nAFR|| AFR |
||
+ | |} |
||
+ | |||
+ | {| class="wikitable" |
||
+ | |+ APM32F0xx |
||
+ | |- |
||
+ | ! Address !! [31:24] !! [23:16] !! [15:08] !! [07:00] |
||
+ | |- |
||
+ | | 0x1FFFF800 || nUOB || UOB || nREADPROT || READPROT |
||
+ | |- |
||
+ | | 0x1FFFF804 || nData1 || Data1 || nData0 || Data0 |
||
+ | |- |
||
+ | | 0x1FFFF808 || nWRP1 || WRP1 || nWRP0 || WRP0 |
||
+ | |- |
||
+ | | 0x1FFFF80C || nWRP3 || WRP3 || nWRP2 || WRP2 |
||
+ | |} |
||
+ | |||
+ | {{Note|1= |
||
+ | Writing a value of 0xFF inside READPROT will read-protect the APM32F0. In order to keep the device unprotected you have to write the correct key value to READPROT. |
||
+ | * APM32F00x = 0xA5 |
||
+ | * APM32F0xx = 0xAA |
||
+ | }} |
||
+ | |||
+ | ==Reset== |
||
+ | No device specific reset is necessary. The normal Cortex-M reset is performed. |
||
+ | |||
+ | See here for more information: https://wiki.segger.com/J-Link_Reset_Strategies#Type_0:_Normal |
||
==Evaluation Boards== |
==Evaluation Boards== |
Latest revision as of 10:14, 28 March 2023
Contents
The Geehy APM32F0xx are Cortex-M0+ based MCUs. Following information also applies for devices of the Geehy APM32A0xx family.
Internal Flash
Supported Regions
The internal flash is divided into 3 different regions:
- Main storage area starting at 0x08000000 with up to 512KB (256KB for APM32A0xx)
- Reserved bootloader area starting at 0x1FFFD800 with up to 8KB
- Option byte area starting at 0x1FFFF800 with 16 bytes
APM32F003 devices do not have a reserved bootloader area:
- Main storage area starting at 0x0 with up to 32KB
- Option byte area starting at 0x00020400 with 16 bytes
For now, the J-Link supports the main storage and option byte area.
Option Byte Programming
The APM32F0 series devices provide some option bytes which allow some "permanent" configuration as well as readout protection for the device. The option bytes become effective after a reset, or, if the read protection is set while a debugger is still connected through JTAG/SWD, become effective after a power-on-reset. The sequence, to program the option bytes consists of multiple read / write accesses to special function registers of the APM32F0 MCU.
The option byte area consists of the actual option bytes and their corresponding complementary bytes. All complementary bytes are automatically set when writing the option bytes.
The following tables describes the structure of the option byte sector:
Address | [31:24] | [23:16] | [15:08] | [07:00] |
---|---|---|---|---|
0x00020400 | nUOB | UOB | nREADPROT | READPROT |
0x00020404 | nData1 | Data1 | nData0 | Data0 |
0x00020408 | nWRP1 | WRP1 | nWRP0 | WRP0 |
0x0002040C | nWRP3 | WRP3 | nWRP2 | WRP2 |
0x00020410 | --- | --- | nAFR | AFR |
Address | [31:24] | [23:16] | [15:08] | [07:00] |
---|---|---|---|---|
0x1FFFF800 | nUOB | UOB | nREADPROT | READPROT |
0x1FFFF804 | nData1 | Data1 | nData0 | Data0 |
0x1FFFF808 | nWRP1 | WRP1 | nWRP0 | WRP0 |
0x1FFFF80C | nWRP3 | WRP3 | nWRP2 | WRP2 |
Writing a value of 0xFF inside READPROT will read-protect the APM32F0. In order to keep the device unprotected you have to write the correct key value to READPROT.
- APM32F00x = 0xA5
- APM32F0xx = 0xAA
Reset
No device specific reset is necessary. The normal Cortex-M reset is performed.
See here for more information: https://wiki.segger.com/J-Link_Reset_Strategies#Type_0:_Normal
Evaluation Boards
- Geehy APM32F003F6P6 evaluation board: https://wiki.segger.com/Geehy_APM32F003F6P6
- Geehy APM32F030RCT6 evaluation board: https://wiki.segger.com/Geehy_APM32F030RCT6
- Geehy APM32F051R8T6 evaluation board: https://wiki.segger.com/Geehy_APM32F051R8T6
- Geehy APM32F072VBT6 evaluation board: https://wiki.segger.com/Geehy_APM32F072VBT6
- Geehy APM32F091VCT6 evaluation board: https://wiki.segger.com/Geehy_APM32F091VCT6
Example Application
- Geehy APM32F003F6P6 evaluation board: https://wiki.segger.com/Geehy_APM32F003F6P6#Example_Project
- Geehy APM32F030RCT6 evaluation board: https://wiki.segger.com/Geehy_APM32F030RCT6#Example_Project
- Geehy APM32F051R8T6 evaluation board: https://wiki.segger.com/Geehy_APM32F051R8T6#Example_Project
- Geehy APM32F072VBT6 evaluation board: https://wiki.segger.com/Geehy_APM32F072VBT6#Example_Project
- Geehy APM32F091VCT6 evaluation board: https://wiki.segger.com/Geehy_APM32F091VCT6#Example_Project