/******************************************************************************* * 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