Nucleo STM32 F401RE , NodeMCU and TCP Conneciton
Dependencies: BufferedSerial mbed-rtos mbed
Fork of NucleoF401_ESP8622 by
Connection SCHEMA
SOCKET DATA
DETAIL DESCRIPTION
http://veyselkaradag.blogspot.com.tr/
ID_STM32F4.h@0:515a38e245a4, 2015-01-13 (annotated)
- Committer:
- veyselka
- Date:
- Tue Jan 13 15:48:44 2015 +0000
- Revision:
- 0:515a38e245a4
V.0001;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
veyselka | 0:515a38e245a4 | 1 | /** |
veyselka | 0:515a38e245a4 | 2 | * Identification library for STM32F4 |
veyselka | 0:515a38e245a4 | 3 | * |
veyselka | 0:515a38e245a4 | 4 | * @author Tilen Majerle |
veyselka | 0:515a38e245a4 | 5 | * @email tilen@majerle.eu |
veyselka | 0:515a38e245a4 | 6 | * @website http://stm32f4-discovery.com |
veyselka | 0:515a38e245a4 | 7 | * @link http://stm32f4-discovery.com/2014/12/library-44-stm32f4-unique-id-and-flash-size |
veyselka | 0:515a38e245a4 | 8 | * @version v1.0 |
veyselka | 0:515a38e245a4 | 9 | * @ide Keil uVision |
veyselka | 0:515a38e245a4 | 10 | * @license GNU GPL v3 |
veyselka | 0:515a38e245a4 | 11 | * |
veyselka | 0:515a38e245a4 | 12 | * |---------------------------------------------------------------------- |
veyselka | 0:515a38e245a4 | 13 | * | Copyright (C) Tilen Majerle, 2014 |
veyselka | 0:515a38e245a4 | 14 | * | |
veyselka | 0:515a38e245a4 | 15 | * | This program is free software: you can redistribute it and/or modify |
veyselka | 0:515a38e245a4 | 16 | * | it under the terms of the GNU General Public License as published by |
veyselka | 0:515a38e245a4 | 17 | * | the Free Software Foundation, either version 3 of the License, or |
veyselka | 0:515a38e245a4 | 18 | * | any later version. |
veyselka | 0:515a38e245a4 | 19 | * | |
veyselka | 0:515a38e245a4 | 20 | * | This program is distributed in the hope that it will be useful, |
veyselka | 0:515a38e245a4 | 21 | * | but WITHOUT ANY WARRANTY; without even the implied warranty of |
veyselka | 0:515a38e245a4 | 22 | * | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
veyselka | 0:515a38e245a4 | 23 | * | GNU General Public License for more details. |
veyselka | 0:515a38e245a4 | 24 | * | |
veyselka | 0:515a38e245a4 | 25 | * | You should have received a copy of the GNU General Public License |
veyselka | 0:515a38e245a4 | 26 | * | along with this program. If not, see <http://www.gnu.org/licenses/>. |
veyselka | 0:515a38e245a4 | 27 | * |---------------------------------------------------------------------- |
veyselka | 0:515a38e245a4 | 28 | * |
veyselka | 0:515a38e245a4 | 29 | * This library allows you to read following things: |
veyselka | 0:515a38e245a4 | 30 | * - Device's 96bit unique ID |
veyselka | 0:515a38e245a4 | 31 | * - Device signature |
veyselka | 0:515a38e245a4 | 32 | * - Revision |
veyselka | 0:515a38e245a4 | 33 | * - Flash size |
veyselka | 0:515a38e245a4 | 34 | * |
veyselka | 0:515a38e245a4 | 35 | * Revisions possible: |
veyselka | 0:515a38e245a4 | 36 | * - 0x1000: Revision A |
veyselka | 0:515a38e245a4 | 37 | * - 0x1001: Revision Z |
veyselka | 0:515a38e245a4 | 38 | * - 0x1003: Revision Y |
veyselka | 0:515a38e245a4 | 39 | * - 0x1007: Revision 1 |
veyselka | 0:515a38e245a4 | 40 | * - 0x2001: Revision 3 |
veyselka | 0:515a38e245a4 | 41 | * |
veyselka | 0:515a38e245a4 | 42 | * Device signatures: |
veyselka | 0:515a38e245a4 | 43 | * - 0x0413: STM32F405xx/07xx and STM32F415xx/17xx) |
veyselka | 0:515a38e245a4 | 44 | * - 0x0419: STM32F42xxx and STM32F43xxx |
veyselka | 0:515a38e245a4 | 45 | * - 0x0423: STM32F401xB/C |
veyselka | 0:515a38e245a4 | 46 | * - 0x0433: STM32F401xD/E |
veyselka | 0:515a38e245a4 | 47 | * - 0x0431: STM32F411xC/E |
veyselka | 0:515a38e245a4 | 48 | * |
veyselka | 0:515a38e245a4 | 49 | * Flash size: |
veyselka | 0:515a38e245a4 | 50 | * - Device has stored value of flash size in kB |
veyselka | 0:515a38e245a4 | 51 | */ |
veyselka | 0:515a38e245a4 | 52 | #ifndef ID_STM32F4_H |
veyselka | 0:515a38e245a4 | 53 | #define ID_STM32F4_H |
veyselka | 0:515a38e245a4 | 54 | |
veyselka | 0:515a38e245a4 | 55 | |
veyselka | 0:515a38e245a4 | 56 | /* Addresses in device */ |
veyselka | 0:515a38e245a4 | 57 | #define ID_UNIQUE_ADDRESS 0x1FFF7A10 |
veyselka | 0:515a38e245a4 | 58 | #define ID_FLASH_ADDRESS 0x1FFF7A22 |
veyselka | 0:515a38e245a4 | 59 | #define ID_DBGMCU_IDCODE 0xE0042000 |
veyselka | 0:515a38e245a4 | 60 | |
veyselka | 0:515a38e245a4 | 61 | /** |
veyselka | 0:515a38e245a4 | 62 | * With this "function" you are able to get signature of device. |
veyselka | 0:515a38e245a4 | 63 | * |
veyselka | 0:515a38e245a4 | 64 | * Possible returns: |
veyselka | 0:515a38e245a4 | 65 | * - 0x0413: STM32F405xx/07xx and STM32F415xx/17xx) |
veyselka | 0:515a38e245a4 | 66 | * - 0x0419: STM32F42xxx and STM32F43xxx |
veyselka | 0:515a38e245a4 | 67 | * - 0x0423: STM32F401xB/C |
veyselka | 0:515a38e245a4 | 68 | * - 0x0433: STM32F401xD/E |
veyselka | 0:515a38e245a4 | 69 | * - 0x0431: STM32F411xC/E |
veyselka | 0:515a38e245a4 | 70 | * |
veyselka | 0:515a38e245a4 | 71 | * Returned data is in 16-bit mode, but only bits 11:0 are valid, bits 15:12 are always 0. |
veyselka | 0:515a38e245a4 | 72 | * Defined as macro |
veyselka | 0:515a38e245a4 | 73 | */ |
veyselka | 0:515a38e245a4 | 74 | #define TM_ID_GetSignature() ((*(uint16_t *) (ID_DBGMCU_IDCODE)) & 0x0FFF) |
veyselka | 0:515a38e245a4 | 75 | |
veyselka | 0:515a38e245a4 | 76 | /** |
veyselka | 0:515a38e245a4 | 77 | * With this "function" you are able to get revision of device. |
veyselka | 0:515a38e245a4 | 78 | * |
veyselka | 0:515a38e245a4 | 79 | * Revisions possible: |
veyselka | 0:515a38e245a4 | 80 | * - 0x1000: Revision A |
veyselka | 0:515a38e245a4 | 81 | * - 0x1001: Revision Z |
veyselka | 0:515a38e245a4 | 82 | * - 0x1003: Revision Y |
veyselka | 0:515a38e245a4 | 83 | * - 0x1007: Revision 1 |
veyselka | 0:515a38e245a4 | 84 | * - 0x2001: Revision 3 |
veyselka | 0:515a38e245a4 | 85 | * |
veyselka | 0:515a38e245a4 | 86 | * Returned data is in 16-bit mode. |
veyselka | 0:515a38e245a4 | 87 | * Defined as macro |
veyselka | 0:515a38e245a4 | 88 | */ |
veyselka | 0:515a38e245a4 | 89 | #define TM_ID_GetRevision() (*(uint16_t *) (ID_DBGMCU_IDCODE + 2)) |
veyselka | 0:515a38e245a4 | 90 | |
veyselka | 0:515a38e245a4 | 91 | /** |
veyselka | 0:515a38e245a4 | 92 | * With this "function" you are able to get flash size of device. |
veyselka | 0:515a38e245a4 | 93 | * |
veyselka | 0:515a38e245a4 | 94 | * Returned data is in 16-bit mode, returned value is flash size in kB (kilo bytes). |
veyselka | 0:515a38e245a4 | 95 | * Defined as macro |
veyselka | 0:515a38e245a4 | 96 | */ |
veyselka | 0:515a38e245a4 | 97 | #define TM_ID_GetFlashSize() (*(uint16_t *) (ID_FLASH_ADDRESS)) |
veyselka | 0:515a38e245a4 | 98 | |
veyselka | 0:515a38e245a4 | 99 | /** |
veyselka | 0:515a38e245a4 | 100 | * With this "function" you are able to get unique ID of device in 8-bit (byte) read mode. |
veyselka | 0:515a38e245a4 | 101 | * Unique ID is 96bit long, but if you need just some parts of it, you can read them with 8bit function. |
veyselka | 0:515a38e245a4 | 102 | * |
veyselka | 0:515a38e245a4 | 103 | * Parameters: |
veyselka | 0:515a38e245a4 | 104 | * - uint8_t x: |
veyselka | 0:515a38e245a4 | 105 | * Value between 0 and 11, corresponding to byte you want to read from 96bits (12bytes) |
veyselka | 0:515a38e245a4 | 106 | * |
veyselka | 0:515a38e245a4 | 107 | * Returned data is 8-bit |
veyselka | 0:515a38e245a4 | 108 | * Defined as macro |
veyselka | 0:515a38e245a4 | 109 | */ |
veyselka | 0:515a38e245a4 | 110 | #define TM_ID_GetUnique8(x) ((x >= 0 && x < 12) ? (*(uint8_t *) (ID_UNIQUE_ADDRESS + (x))) : 0) |
veyselka | 0:515a38e245a4 | 111 | |
veyselka | 0:515a38e245a4 | 112 | /** |
veyselka | 0:515a38e245a4 | 113 | * With this "function" you are able to get unique ID of device in 16-bit (byte) read mode. |
veyselka | 0:515a38e245a4 | 114 | * Unique ID is 96bit long, but if you need just some parts of it, you can read them with 16bit function. |
veyselka | 0:515a38e245a4 | 115 | * |
veyselka | 0:515a38e245a4 | 116 | * Parameters: |
veyselka | 0:515a38e245a4 | 117 | * - uint8_t x: |
veyselka | 0:515a38e245a4 | 118 | * Value between 0 and 5, corresponding to 2-bytes you want to read from 96bits (12bytes) |
veyselka | 0:515a38e245a4 | 119 | * |
veyselka | 0:515a38e245a4 | 120 | * Returned data is 16-bit |
veyselka | 0:515a38e245a4 | 121 | * Defined as macro |
veyselka | 0:515a38e245a4 | 122 | */ |
veyselka | 0:515a38e245a4 | 123 | #define TM_ID_GetUnique16(x) ((x >= 0 && x < 6) ? (*(uint16_t *) (ID_UNIQUE_ADDRESS + 2 * (x))) : 0) |
veyselka | 0:515a38e245a4 | 124 | |
veyselka | 0:515a38e245a4 | 125 | /** |
veyselka | 0:515a38e245a4 | 126 | * With this "function" you are able to get unique ID of device in 32-bit (byte) read mode. |
veyselka | 0:515a38e245a4 | 127 | * Unique ID is 96bit long, but if you need just some parts of it, you can read them with 32bit function. |
veyselka | 0:515a38e245a4 | 128 | * |
veyselka | 0:515a38e245a4 | 129 | * Parameters: |
veyselka | 0:515a38e245a4 | 130 | * - uint8_t x: |
veyselka | 0:515a38e245a4 | 131 | * Value between 0 and 2, corresponding to 4-bytes you want to read from 96bits (12bytes) |
veyselka | 0:515a38e245a4 | 132 | * |
veyselka | 0:515a38e245a4 | 133 | * Returned data is 32-bit |
veyselka | 0:515a38e245a4 | 134 | * Defined as macro |
veyselka | 0:515a38e245a4 | 135 | */ |
veyselka | 0:515a38e245a4 | 136 | #define TM_ID_GetUnique32(x) ((x >= 0 && x < 3) ? (*(uint32_t *) (ID_UNIQUE_ADDRESS + 4 * (x))) : 0) |
veyselka | 0:515a38e245a4 | 137 | |
veyselka | 0:515a38e245a4 | 138 | #endif |