This repository has been archived on 2026-06-17. You can view files and clone it, but cannot push or open issues or pull requests.
FireWatchTower_2axis/firmware/lib/tmc/ic/TMC6100/TMC6100_HW_Abstraction.h

183 lines
12 KiB
C
Executable File

/*******************************************************************************
* Copyright © 2019 TRINAMIC Motion Control GmbH & Co. KG
* (now owned by Analog Devices Inc.),
*
* Copyright © 2024 Analog Devices Inc. All Rights Reserved.
* This software is proprietary to Analog Devices, Inc. and its licensors.
*******************************************************************************/
#ifndef TMC6100_HW_ABSTRACTION
#define TMC6100_HW_ABSTRACTION
// Constants
#define TMC6100_MOTORS 1
#define TMC6100_WRITE_BIT 0x80
#define TMC6100_ADDRESS_MASK 0x7F
#define TMC6100_MAX_VELOCITY 8388096
#define TMC6100_MAX_ACCELERATION (uint16_t) 65535
// Registers
#define TMC6100_GCONF 0x00
#define TMC6100_GSTAT 0x01
#define TMC6100_IOIN_OUTPUT 0x04
#define TMC6100_OTP_PROG 0x06
#define TMC6100_OTP_READ 0x07
#define TMC6100_FACTORY_CONF 0x08
#define TMC6100_SHORT_CONF 0x09
#define TMC6100_DRV_CONF 0x0A
// Register fields
#define TMC6100_DISABLE_MASK 0x00000001
#define TMC6100_DISABLE_SHIFT 0
#define TMC6100_DISABLE_FIELD ((RegisterField) {TMC6100_DISABLE_MASK, TMC6100_DISABLE_SHIFT, TMC6100_GCONF, false})
#define TMC6100_SINGLELINE_MASK 0x00000002
#define TMC6100_SINGLELINE_SHIFT 1
#define TMC6100_SINGLELINE_FIELD ((RegisterField) {TMC6100_SINGLELINE_MASK, TMC6100_SINGLELINE_SHIFT, TMC6100_GCONF, false})
#define TMC6100_FAULTDIRECT_MASK 0x00000004
#define TMC6100_FAULTDIRECT_SHIFT 2
#define TMC6100_FAULTDIRECT_FIELD ((RegisterField) {TMC6100_FAULTDIRECT_MASK, TMC6100_FAULTDIRECT_SHIFT, TMC6100_GCONF, false})
#define TMC6100_UNUSED_MASK 0x00000008
#define TMC6100_UNUSED_SHIFT 3
#define TMC6100_UNUSED_FIELD ((RegisterField) {TMC6100_UNUSED_MASK, TMC6100_UNUSED_SHIFT, TMC6100_GCONF, false})
#define TMC6100_RESERVED_MASK 0x00000040
#define TMC6100_RESERVED_SHIFT 6
#define TMC6100_RESERVED_FIELD ((RegisterField) {TMC6100_RESERVED_MASK, TMC6100_RESERVED_SHIFT, TMC6100_GCONF, false})
#define TMC6100_TEST_MODE_MASK 0x00000080
#define TMC6100_TEST_MODE_SHIFT 7
#define TMC6100_TEST_MODE_FIELD ((RegisterField) {TMC6100_TEST_MODE_MASK, TMC6100_TEST_MODE_SHIFT, TMC6100_GCONF, false})
#define TMC6100_RESET_MASK 0x00000001
#define TMC6100_RESET_SHIFT 0
#define TMC6100_RESET_FIELD ((RegisterField) {TMC6100_RESET_MASK, TMC6100_RESET_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_DRV_OTPW_MASK 0x00000002
#define TMC6100_DRV_OTPW_SHIFT 1
#define TMC6100_DRV_OTPW_FIELD ((RegisterField) {TMC6100_DRV_OTPW_MASK, TMC6100_DRV_OTPW_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_DRV_OT_MASK 0x00000004
#define TMC6100_DRV_OT_SHIFT 2
#define TMC6100_DRV_OT_FIELD ((RegisterField) {TMC6100_DRV_OT_MASK, TMC6100_DRV_OT_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_UV_CP_MASK 0x00000008
#define TMC6100_UV_CP_SHIFT 3
#define TMC6100_UV_CP_FIELD ((RegisterField) {TMC6100_UV_CP_MASK, TMC6100_UV_CP_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_SHORTDET_U_MASK 0x00000010
#define TMC6100_SHORTDET_U_SHIFT 4
#define TMC6100_SHORTDET_U_FIELD ((RegisterField) {TMC6100_SHORTDET_U_MASK, TMC6100_SHORTDET_U_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_S2GU_MASK 0x00000020
#define TMC6100_S2GU_SHIFT 5
#define TMC6100_S2GU_FIELD ((RegisterField) {TMC6100_S2GU_MASK, TMC6100_S2GU_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_S2VSU_MASK 0x00000040
#define TMC6100_S2VSU_SHIFT 6
#define TMC6100_S2VSU_FIELD ((RegisterField) {TMC6100_S2VSU_MASK, TMC6100_S2VSU_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_SHORTDET_V_MASK 0x00000100
#define TMC6100_SHORTDET_V_SHIFT 8
#define TMC6100_SHORTDET_V_FIELD ((RegisterField) {TMC6100_SHORTDET_V_MASK, TMC6100_SHORTDET_V_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_S2GV_MASK 0x00000200
#define TMC6100_S2GV_SHIFT 9
#define TMC6100_S2GV_FIELD ((RegisterField) {TMC6100_S2GV_MASK, TMC6100_S2GV_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_S2VSV_MASK 0x00000400
#define TMC6100_S2VSV_SHIFT 10
#define TMC6100_S2VSV_FIELD ((RegisterField) {TMC6100_S2VSV_MASK, TMC6100_S2VSV_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_SHORTDET_W_MASK 0x00001000
#define TMC6100_SHORTDET_W_SHIFT 12
#define TMC6100_SHORTDET_W_FIELD ((RegisterField) {TMC6100_SHORTDET_W_MASK, TMC6100_SHORTDET_W_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_S2GW_MASK 0x00002000
#define TMC6100_S2GW_SHIFT 13
#define TMC6100_S2GW_FIELD ((RegisterField) {TMC6100_S2GW_MASK, TMC6100_S2GW_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_S2VSW_MASK 0x00004000
#define TMC6100_S2VSW_SHIFT 14
#define TMC6100_S2VSW_FIELD ((RegisterField) {TMC6100_S2VSW_MASK, TMC6100_S2VSW_SHIFT, TMC6100_GSTAT, false})
#define TMC6100_UL_MASK 0x00000001
#define TMC6100_UL_SHIFT 0
#define TMC6100_UL_FIELD ((RegisterField) {TMC6100_UL_MASK, TMC6100_UL_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_UH_MASK 0x00000002
#define TMC6100_UH_SHIFT 1
#define TMC6100_UH_FIELD ((RegisterField) {TMC6100_UH_MASK, TMC6100_UH_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_VL_MASK 0x00000004
#define TMC6100_VL_SHIFT 2
#define TMC6100_VL_FIELD ((RegisterField) {TMC6100_VL_MASK, TMC6100_VL_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_VH_MASK 0x00000008
#define TMC6100_VH_SHIFT 3
#define TMC6100_VH_FIELD ((RegisterField) {TMC6100_VH_MASK, TMC6100_VH_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_WL_MASK 0x00000010
#define TMC6100_WL_SHIFT 4
#define TMC6100_WL_FIELD ((RegisterField) {TMC6100_WL_MASK, TMC6100_WL_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_WH_MASK 0x00000020
#define TMC6100_WH_SHIFT 5
#define TMC6100_WH_FIELD ((RegisterField) {TMC6100_WH_MASK, TMC6100_WH_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_DRV_EN_MASK 0x00000040
#define TMC6100_DRV_EN_SHIFT 6
#define TMC6100_DRV_EN_FIELD ((RegisterField) {TMC6100_DRV_EN_MASK, TMC6100_DRV_EN_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_OTPW_MASK 0x00000100
#define TMC6100_OTPW_SHIFT 8
#define TMC6100_OTPW_FIELD ((RegisterField) {TMC6100_OTPW_MASK, TMC6100_OTPW_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_OT136_C_MASK 0x00000200
#define TMC6100_OT136_C_SHIFT 9
#define TMC6100_OT136_C_FIELD ((RegisterField) {TMC6100_OT136_C_MASK, TMC6100_OT136_C_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_OT143_C_MASK 0x00000400
#define TMC6100_OT143_C_SHIFT 10
#define TMC6100_OT143_C_FIELD ((RegisterField) {TMC6100_OT143_C_MASK, TMC6100_OT143_C_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_OT150_C_MASK 0x00000800
#define TMC6100_OT150_C_SHIFT 11
#define TMC6100_OT150_C_FIELD ((RegisterField) {TMC6100_OT150_C_MASK, TMC6100_OT150_C_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_VERSION_MASK 0xFF000000
#define TMC6100_VERSION_SHIFT 24
#define TMC6100_VERSION_FIELD ((RegisterField) {TMC6100_VERSION_MASK, TMC6100_VERSION_SHIFT, TMC6100_IOIN_OUTPUT, false})
#define TMC6100_OTPBIT_MASK 0x00000007
#define TMC6100_OTPBIT_SHIFT 0
#define TMC6100_OTPBIT_FIELD ((RegisterField) {TMC6100_OTPBIT_MASK, TMC6100_OTPBIT_SHIFT, TMC6100_OTP_PROG, false})
#define TMC6100_OTPBYTE_MASK 0x00000030
#define TMC6100_OTPBYTE_SHIFT 4
#define TMC6100_OTPBYTE_FIELD ((RegisterField) {TMC6100_OTPBYTE_MASK, TMC6100_OTPBYTE_SHIFT, TMC6100_OTP_PROG, false})
#define TMC6100_OTPMAGIC_MASK 0x0000FF00
#define TMC6100_OTPMAGIC_SHIFT 8
#define TMC6100_OTPMAGIC_FIELD ((RegisterField) {TMC6100_OTPMAGIC_MASK, TMC6100_OTPMAGIC_SHIFT, TMC6100_OTP_PROG, false})
#define TMC6100_OTP_BBM_MASK 0x000000C0
#define TMC6100_OTP_BBM_SHIFT 6
#define TMC6100_OTP_BBM_FIELD ((RegisterField) {TMC6100_OTP_BBM_MASK, TMC6100_OTP_BBM_SHIFT, TMC6100_OTP_READ, false})
#define TMC6100_OTP_S2_LEVEL_MASK 0x00000020
#define TMC6100_OTP_S2_LEVEL_SHIFT 5
#define TMC6100_OTP_S2_LEVEL_FIELD ((RegisterField) {TMC6100_OTP_S2_LEVEL_MASK, TMC6100_OTP_S2_LEVEL_SHIFT, TMC6100_OTP_READ, false})
#define TMC6100_OTP_FCLKTRIM_MASK 0x0000001F
#define TMC6100_OTP_FCLKTRIM_SHIFT 0
#define TMC6100_OTP_FCLKTRIM_FIELD ((RegisterField) {TMC6100_OTP_FCLKTRIM_MASK, TMC6100_OTP_FCLKTRIM_SHIFT, TMC6100_OTP_READ, false})
#define TMC6100_FACTORY_CONF_MASK 0x0000001F
#define TMC6100_FACTORY_CONF_SHIFT 0
#define TMC6100_FACTORY_CONF_FIELD ((RegisterField) {TMC6100_FACTORY_CONF_MASK, TMC6100_FACTORY_CONF_SHIFT, TMC6100_FACTORY_CONF, false})
#define TMC6100_S2VS_LEVEL_MASK 0x0000000F
#define TMC6100_S2VS_LEVEL_SHIFT 0
#define TMC6100_S2VS_LEVEL_FIELD ((RegisterField) {TMC6100_S2VS_LEVEL_MASK, TMC6100_S2VS_LEVEL_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_S2G_LEVEL_MASK 0x00000F00
#define TMC6100_S2G_LEVEL_SHIFT 8
#define TMC6100_S2G_LEVEL_FIELD ((RegisterField) {TMC6100_S2G_LEVEL_MASK, TMC6100_S2G_LEVEL_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_SHORTFILTER_MASK 0x00030000
#define TMC6100_SHORTFILTER_SHIFT 16
#define TMC6100_SHORTFILTER_FIELD ((RegisterField) {TMC6100_SHORTFILTER_MASK, TMC6100_SHORTFILTER_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_SHORTDELAY_MASK 0x00100000
#define TMC6100_SHORTDELAY_SHIFT 20
#define TMC6100_SHORTDELAY_FIELD ((RegisterField) {TMC6100_SHORTDELAY_MASK, TMC6100_SHORTDELAY_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_RETRY_MASK 0x03000000
#define TMC6100_RETRY_SHIFT 24
#define TMC6100_RETRY_FIELD ((RegisterField) {TMC6100_RETRY_MASK, TMC6100_RETRY_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_PROTECT_PARALLEL_MASK 0x10000000
#define TMC6100_PROTECT_PARALLEL_SHIFT 28
#define TMC6100_PROTECT_PARALLEL_FIELD ((RegisterField) {TMC6100_PROTECT_PARALLEL_MASK, TMC6100_PROTECT_PARALLEL_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_DISABLE_S2G_MASK 0x20000000
#define TMC6100_DISABLE_S2G_SHIFT 29
#define TMC6100_DISABLE_S2G_FIELD ((RegisterField) {TMC6100_DISABLE_S2G_MASK, TMC6100_DISABLE_S2G_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_DISABLE_S2VS_MASK 0x40000000
#define TMC6100_DISABLE_S2VS_SHIFT 30
#define TMC6100_DISABLE_S2VS_FIELD ((RegisterField) {TMC6100_DISABLE_S2VS_MASK, TMC6100_DISABLE_S2VS_SHIFT, TMC6100_SHORT_CONF, false})
#define TMC6100_BBMCLKS_MASK 0x0000000F
#define TMC6100_BBMCLKS_SHIFT 0
#define TMC6100_BBMCLKS_FIELD ((RegisterField) {TMC6100_BBMCLKS_MASK, TMC6100_BBMCLKS_SHIFT, TMC6100_DRV_CONF, false})
#define TMC6100_OTSELECT_MASK 0x00030000
#define TMC6100_OTSELECT_SHIFT 16
#define TMC6100_OTSELECT_FIELD ((RegisterField) {TMC6100_OTSELECT_MASK, TMC6100_OTSELECT_SHIFT, TMC6100_DRV_CONF, false})
#define TMC6100_DRVSTRENGTH_MASK 0x000C0000
#define TMC6100_DRVSTRENGTH_SHIFT 18
#define TMC6100_DRVSTRENGTH_FIELD ((RegisterField) {TMC6100_DRVSTRENGTH_MASK, TMC6100_DRVSTRENGTH_SHIFT, TMC6100_DRV_CONF, false})
#endif