66 lines
1.8 KiB
C
66 lines
1.8 KiB
C
/* Reflow Oven Controller
|
|
*
|
|
* Copyright (C) 2020 Mario Hüttel <mario.huettel@gmx.net>
|
|
*
|
|
* This file is part of the Reflow Oven Controller Project.
|
|
*
|
|
* The reflow oven controller is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
* The Reflow Oven Control Firmware is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with the reflow oven controller project.
|
|
* If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <stm-periph/unique-id.h>
|
|
#include <stm32/stm32f4xx.h>
|
|
|
|
#define LOW_WORD_ADDR (0x1FFF7A10UL)
|
|
#define MID_WORD_ADDR (LOW_WORD_ADDR+4U)
|
|
#define HIGH_WORD_ADDR (LOW_WORD_ADDR+8U)
|
|
|
|
void stm_unique_id_get(uint32_t *high, uint32_t *mid, uint32_t *low)
|
|
{
|
|
if (!high || !mid || !low)
|
|
return;
|
|
|
|
*low = *((uint32_t *)LOW_WORD_ADDR);
|
|
*mid = *((uint32_t *)MID_WORD_ADDR);
|
|
*high = *((uint32_t *)HIGH_WORD_ADDR);
|
|
}
|
|
|
|
|
|
void stm_dev_rev_id_get(uint32_t *device_id, uint32_t *revision_id)
|
|
{
|
|
if (device_id)
|
|
*device_id = DBGMCU->IDCODE & DBGMCU_IDCODE_DEV_ID;
|
|
if (revision_id)
|
|
*revision_id = (DBGMCU->IDCODE & DBGMCU_IDCODE_REV_ID) >> 16;
|
|
}
|
|
|
|
void stm_cpuid_get(uint8_t *implementer, uint8_t *variant, uint16_t *part_no, uint8_t *rev)
|
|
{
|
|
uint32_t cpuid;
|
|
|
|
cpuid = SCB->CPUID;
|
|
|
|
if (implementer)
|
|
*implementer = (uint8_t)((cpuid >> 24) & 0xFFU);
|
|
|
|
if (variant)
|
|
*variant = (uint8_t)((cpuid >> 20) & 0x0FU);
|
|
|
|
if (part_no)
|
|
*part_no = (uint16_t)((cpuid >> 4) & 0x0FFFU);
|
|
|
|
if (rev)
|
|
*rev = (uint8_t)(cpuid & 0x0FU);
|
|
|
|
}
|