Nucleo STM32 F401RE , NodeMCU and TCP Conneciton

Dependencies:   BufferedSerial mbed-rtos mbed

Fork of NucleoF401_ESP8622 by Veysel KARADAG

Connection SCHEMA

/media/uploads/veyselka/schema.jpg

SOCKET DATA

/media/uploads/veyselka/portpeeker.jpg

DETAIL DESCRIPTION

http://veyselkaradag.blogspot.com.tr/

Committer:
veyselka
Date:
Tue Jan 13 15:48:44 2015 +0000
Revision:
0:515a38e245a4
V.0001;

Who changed what in which revision?

UserRevisionLine numberNew 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