167 lines
9.7 KiB
C
Executable File
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
|