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/TMC7300/TMC7300_HW_Abstraction.h

167 lines
9.7 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 TMC7300_HW_ABSTRACTION
#define TMC7300_HW_ABSTRACTION
// Constants
#define TMC7300_MOTORS 1
#define TMC7300_REGISTER_COUNT 128
#define TMC7300_WRITE_BIT 0x80
#define TMC7300_ADDRESS_MASK 0x7F
// Registers
#define TMC7300_GCONF 0x00
#define TMC7300_GSTAT 0x01
#define TMC7300_IFCNT 0x02
#define TMC7300_SLAVECONF 0x03
#define TMC7300_IOIN 0x06
#define TMC7300_CURRENT_LIMIT 0x10
#define TMC7300_PWM_AB 0x22
#define TMC7300_CHOPCONF 0x6C
#define TMC7300_DRVSTATUS 0x6F
#define TMC7300_PWMCONF 0x70
// Register fields
#define TMC7300_PWM_DIRECT_MASK 0x00000001
#define TMC7300_PWM_DIRECT_SHIFT 0
#define TMC7300_PWM_DIRECT_FIELD ((RegisterField) {TMC7300_PWM_DIRECT_MASK, TMC7300_PWM_DIRECT_SHIFT, TMC7300_GCONF, false})
#define TMC7300_EXTCAP_MASK 0x00000002
#define TMC7300_EXTCAP_SHIFT 1
#define TMC7300_EXTCAP_FIELD ((RegisterField) {TMC7300_EXTCAP_MASK, TMC7300_EXTCAP_SHIFT, TMC7300_GCONF, false})
#define TMC7300_PAR_MODE_MASK 0x00000004
#define TMC7300_PAR_MODE_SHIFT 2
#define TMC7300_PAR_MODE_FIELD ((RegisterField) {TMC7300_PAR_MODE_MASK, TMC7300_PAR_MODE_SHIFT, TMC7300_GCONF, false})
#define TMC7300_TEST_MODE_MASK 0x00000080
#define TMC7300_TEST_MODE_SHIFT 7
#define TMC7300_TEST_MODE_FIELD ((RegisterField) {TMC7300_TEST_MODE_MASK, TMC7300_TEST_MODE_SHIFT, TMC7300_GCONF, false})
#define TMC7300_RESET_MASK 0x00000001
#define TMC7300_RESET_SHIFT 0
#define TMC7300_RESET_FIELD ((RegisterField) {TMC7300_RESET_MASK, TMC7300_RESET_SHIFT, TMC7300_GSTAT, false})
#define TMC7300_DRV_ERR_MASK 0x00000002
#define TMC7300_DRV_ERR_SHIFT 1
#define TMC7300_DRV_ERR_FIELD ((RegisterField) {TMC7300_DRV_ERR_MASK, TMC7300_DRV_ERR_SHIFT, TMC7300_GSTAT, false})
#define TMC7300_U3V5_MASK 0x00000004
#define TMC7300_U3V5_SHIFT 2
#define TMC7300_U3V5_FIELD ((RegisterField) {TMC7300_U3V5_MASK, TMC7300_U3V5_SHIFT, TMC7300_GSTAT, false})
#define TMC7300_IFCNT_MASK 0x000000FF
#define TMC7300_IFCNT_SHIFT 0
#define TMC7300_IFCNT_FIELD ((RegisterField) {TMC7300_IFCNT_MASK, TMC7300_IFCNT_SHIFT, TMC7300_IFCNT, false})
#define TMC7300_SLAVECONF_MASK 0x00000F00
#define TMC7300_SLAVECONF_SHIFT 8
#define TMC7300_SLAVECONF_FIELD ((RegisterField) {TMC7300_SLAVECONF_MASK, TMC7300_SLAVECONF_SHIFT, TMC7300_SLAVECONF, false})
#define TMC7300_EN_MASK 0x00000001
#define TMC7300_EN_SHIFT 0
#define TMC7300_EN_FIELD ((RegisterField) {TMC7300_EN_MASK, TMC7300_EN_SHIFT, TMC7300_IOIN, false})
#define TMC7300_NSTDBY_MASK 0x00000002
#define TMC7300_NSTDBY_SHIFT 1
#define TMC7300_NSTDBY_FIELD ((RegisterField) {TMC7300_NSTDBY_MASK, TMC7300_NSTDBY_SHIFT, TMC7300_IOIN, false})
#define TMC7300_AD0_MASK 0x00000004
#define TMC7300_AD0_SHIFT 2
#define TMC7300_AD0_FIELD ((RegisterField) {TMC7300_AD0_MASK, TMC7300_AD0_SHIFT, TMC7300_IOIN, false})
#define TMC7300_AD1_MASK 0x00000008
#define TMC7300_AD1_SHIFT 3
#define TMC7300_AD1_FIELD ((RegisterField) {TMC7300_AD1_MASK, TMC7300_AD1_SHIFT, TMC7300_IOIN, false})
#define TMC7300_DIAG_MASK 0x00000010
#define TMC7300_DIAG_SHIFT 4
#define TMC7300_DIAG_FIELD ((RegisterField) {TMC7300_DIAG_MASK, TMC7300_DIAG_SHIFT, TMC7300_IOIN, false})
#define TMC7300_UART_ENABLED_MASK 0x00000020
#define TMC7300_UART_ENABLED_SHIFT 5
#define TMC7300_UART_ENABLED_FIELD ((RegisterField) {TMC7300_UART_ENABLED_MASK, TMC7300_UART_ENABLED_SHIFT, TMC7300_IOIN, false})
#define TMC7300_UART_INPUT_MASK 0x00000040
#define TMC7300_UART_INPUT_SHIFT 6
#define TMC7300_UART_INPUT_FIELD ((RegisterField) {TMC7300_UART_INPUT_MASK, TMC7300_UART_INPUT_SHIFT, TMC7300_IOIN, false})
#define TMC7300_MODE_INPUT_MASK 0x00000080
#define TMC7300_MODE_INPUT_SHIFT 7
#define TMC7300_MODE_INPUT_FIELD ((RegisterField) {TMC7300_MODE_INPUT_MASK, TMC7300_MODE_INPUT_SHIFT, TMC7300_IOIN, false})
#define TMC7300_A2_MASK 0x00000100
#define TMC7300_A2_SHIFT 8
#define TMC7300_A2_FIELD ((RegisterField) {TMC7300_A2_MASK, TMC7300_A2_SHIFT, TMC7300_IOIN, false})
#define TMC7300_A1_MASK 0x00000200
#define TMC7300_A1_SHIFT 9
#define TMC7300_A1_FIELD ((RegisterField) {TMC7300_A1_MASK, TMC7300_A1_SHIFT, TMC7300_IOIN, false})
#define TMC7300_COMP_A1A2_MASK 0x00000400
#define TMC7300_COMP_A1A2_SHIFT 10
#define TMC7300_COMP_A1A2_FIELD ((RegisterField) {TMC7300_COMP_A1A2_MASK, TMC7300_COMP_A1A2_SHIFT, TMC7300_IOIN, false})
#define TMC7300_COMP_B1B2_MASK 0x00000800
#define TMC7300_COMP_B1B2_SHIFT 11
#define TMC7300_COMP_B1B2_FIELD ((RegisterField) {TMC7300_COMP_B1B2_MASK, TMC7300_COMP_B1B2_SHIFT, TMC7300_IOIN, false})
#define TMC7300_VERSION_MASK 0xFF000000
#define TMC7300_VERSION_SHIFT 24
#define TMC7300_VERSION_FIELD ((RegisterField) {TMC7300_VERSION_MASK, TMC7300_VERSION_SHIFT, TMC7300_IOIN, false})
#define TMC7300_MOTORRUN_MASK 0x00000001
#define TMC7300_MOTORRUN_SHIFT 0
#define TMC7300_MOTORRUN_FIELD ((RegisterField) {TMC7300_MOTORRUN_MASK, TMC7300_MOTORRUN_SHIFT, TMC7300_CURRENT_LIMIT, false})
#define TMC7300_IRUN_MASK 0x00001F00
#define TMC7300_IRUN_SHIFT 8
#define TMC7300_IRUN_FIELD ((RegisterField) {TMC7300_IRUN_MASK, TMC7300_IRUN_SHIFT, TMC7300_CURRENT_LIMIT, false})
#define TMC7300_PWM_A_MASK 0x000001FF
#define TMC7300_PWM_A_SHIFT 0
#define TMC7300_PWM_A_FIELD ((RegisterField) {TMC7300_PWM_A_MASK, TMC7300_PWM_A_SHIFT, TMC7300_PWM_AB, true})
#define TMC7300_PWM_B_MASK 0x01FF0000
#define TMC7300_PWM_B_SHIFT 16
#define TMC7300_PWM_B_FIELD ((RegisterField) {TMC7300_PWM_B_MASK, TMC7300_PWM_B_SHIFT, TMC7300_PWM_AB, true})
#define TMC7300_PWM_AB_MASK 0x000001FF
#define TMC7300_PWM_AB_SHIFT 0
#define TMC7300_PWM_AB_FIELD ((RegisterField) {TMC7300_PWM_AB_MASK, TMC7300_PWM_AB_SHIFT, TMC7300_PWM_AB, true})
#define TMC7300_ENABLEDRV_MASK 0x00000001
#define TMC7300_ENABLEDRV_SHIFT 0
#define TMC7300_ENABLEDRV_FIELD ((RegisterField) {TMC7300_ENABLEDRV_MASK, TMC7300_ENABLEDRV_SHIFT, TMC7300_CHOPCONF, false})
#define TMC7300_TBL_MASK 0x00018000
#define TMC7300_TBL_SHIFT 15
#define TMC7300_TBL_FIELD ((RegisterField) {TMC7300_TBL_MASK, TMC7300_TBL_SHIFT, TMC7300_CHOPCONF, false})
#define TMC7300_DISS2G_MASK 0x40000000
#define TMC7300_DISS2G_SHIFT 30
#define TMC7300_DISS2G_FIELD ((RegisterField) {TMC7300_DISS2G_MASK, TMC7300_DISS2G_SHIFT, TMC7300_CHOPCONF, false})
#define TMC7300_DISS2VS_MASK 0x80000000
#define TMC7300_DISS2VS_SHIFT 31
#define TMC7300_DISS2VS_FIELD ((RegisterField) {TMC7300_DISS2VS_MASK, TMC7300_DISS2VS_SHIFT, TMC7300_CHOPCONF, false})
#define TMC7300_OTPW_MASK 0x00000001
#define TMC7300_OTPW_SHIFT 0
#define TMC7300_OTPW_FIELD ((RegisterField) {TMC7300_OTPW_MASK, TMC7300_OTPW_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_OT_MASK 0x00000002
#define TMC7300_OT_SHIFT 1
#define TMC7300_OT_FIELD ((RegisterField) {TMC7300_OT_MASK, TMC7300_OT_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_S2GA_MASK 0x00000004
#define TMC7300_S2GA_SHIFT 2
#define TMC7300_S2GA_FIELD ((RegisterField) {TMC7300_S2GA_MASK, TMC7300_S2GA_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_S2GB_MASK 0x00000008
#define TMC7300_S2GB_SHIFT 3
#define TMC7300_S2GB_FIELD ((RegisterField) {TMC7300_S2GB_MASK, TMC7300_S2GB_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_S2VSA_MASK 0x00000010
#define TMC7300_S2VSA_SHIFT 4
#define TMC7300_S2VSA_FIELD ((RegisterField) {TMC7300_S2VSA_MASK, TMC7300_S2VSA_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_S2VSB_MASK 0x00000020
#define TMC7300_S2VSB_SHIFT 5
#define TMC7300_S2VSB_FIELD ((RegisterField) {TMC7300_S2VSB_MASK, TMC7300_S2VSB_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_OLA_MASK 0x00000040
#define TMC7300_OLA_SHIFT 6
#define TMC7300_OLA_FIELD ((RegisterField) {TMC7300_OLA_MASK, TMC7300_OLA_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_OLB_MASK 0x00000080
#define TMC7300_OLB_SHIFT 7
#define TMC7300_OLB_FIELD ((RegisterField) {TMC7300_OLB_MASK, TMC7300_OLB_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_T120_MASK 0x00000100
#define TMC7300_T120_SHIFT 8
#define TMC7300_T120_FIELD ((RegisterField) {TMC7300_T120_MASK, TMC7300_T120_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_T150_MASK 0x00000200
#define TMC7300_T150_SHIFT 9
#define TMC7300_T150_FIELD ((RegisterField) {TMC7300_T150_MASK, TMC7300_T150_SHIFT, TMC7300_DRV_STATUS, false})
#define TMC7300_PWM_FREQ_MASK 0x00030000
#define TMC7300_PWM_FREQ_SHIFT 16
#define TMC7300_PWM_FREQ_FIELD ((RegisterField) {TMC7300_PWM_FREQ_MASK, TMC7300_PWM_FREQ_SHIFT, TMC7300_PWMCONF, false})
#define TMC7300_FREEWHEEL_MASK 0x00300000
#define TMC7300_FREEWHEEL_SHIFT 20
#define TMC7300_FREEWHEEL_FIELD ((RegisterField) {TMC7300_FREEWHEEL_MASK, TMC7300_FREEWHEEL_SHIFT, TMC7300_PWMCONF, false})
#endif