no-OS
Loading...
Searching...
No Matches
tmc7300.c File Reference

Source file for the TMC7300 driver. More...

#include <stdlib.h>
#include <stdint.h>
#include <stdbool.h>
#include "no_os_uart.h"
#include "no_os_alloc.h"
#include "no_os_error.h"
#include "no_os_util.h"
#include "tmc7300.h"
Include dependency graph for tmc7300.c:

Functions

int tmc7300_reg_write (struct tmc7300_desc *desc, uint32_t addr, uint32_t val)
 Write a register.
 
int tmc7300_reg_read (struct tmc7300_desc *desc, uint32_t addr, uint32_t *val)
 Read a register.
 
int tmc7300_reg_update (struct tmc7300_desc *desc, uint32_t addr, uint32_t mask, uint32_t val)
 Update a register.
 
int tmc7300_get_load_indicator (struct tmc7300_desc *desc, enum tmc7300_bridge bridge, uint32_t *val)
 Get the load indicator.
 
int tmc7300_drv_enable (struct tmc7300_desc *desc, bool enable)
 Enable the bridge driver.
 
int tmc7300_set_pwm_duty (struct tmc7300_desc *desc, enum tmc7300_bridge bridge, int32_t duty)
 Set the PWM duty cycle.
 
int tmc7300_set_current_limit (struct tmc7300_desc *desc, uint32_t val)
 Set the current limit.
 
int tmc7300_set_send_delay (struct tmc7300_desc *desc, uint8_t delay)
 Set the UART response delay.
 
int tmc7300_get_ifcnt (struct tmc7300_desc *desc, uint8_t *ifcnt)
 Get the number of UART valid write accesses. Wraps around at 255.
 
int tmc7300_get_drv_status (struct tmc7300_desc *desc, union tmc7300_drv_status *status)
 Read the driver status register.
 
int tmc7300_get_ioin (struct tmc7300_desc *desc, union tmc7300_ioin *ioin)
 Read the IOIN register.
 
int tmc7300_set_standstill_mode (struct tmc7300_desc *desc, enum tmc7300_standstill_mode mode)
 Set the standstill mode. The motorrun bit will be set to 0.
 
int tmc7300_set_pwm_freq (struct tmc7300_desc *desc, enum tmc7300_pwm_freq freq)
 Set the frequency of the PWM signal.
 
int tmc7300_get_pwm_freq (struct tmc7300_desc *desc, enum tmc7300_pwm_freq *freq)
 Get the frequency of the PWM signal.
 
int tmc7300_set_blank_time (struct tmc7300_desc *desc, enum tmc7300_blank_time time)
 Set the comparator blank time register.
 
int tmc7300_get_blank_time (struct tmc7300_desc *desc, enum tmc7300_blank_time *time)
 Get the comparator blank time register.
 
int tmc7300_set_pwm_duty_dir (struct tmc7300_desc *desc, enum tmc7300_bridge bridge, uint8_t duty, enum tmc7300_motor_dir dir)
 Set the PWM duty cycle and direction.
 
int tmc7300_init (struct tmc7300_desc **desc, struct tmc7300_init_param *param)
 Initialize the TMC7300 driver.
 
int tmc7300_remove (struct tmc7300_desc *desc)
 Free the resources allocated by tmc7300_init().
 

Detailed Description

Source file for the TMC7300 driver.

Author
Ciprian Regus (cipri.nosp@m.an.r.nosp@m.egus@.nosp@m.anal.nosp@m.og.co.nosp@m.m)

Copyright 2024(c) Analog Devices, Inc.

SPDX-License-Identifier: BSD-3-Clause

Function Documentation

◆ tmc7300_drv_enable()

int tmc7300_drv_enable ( struct tmc7300_desc * desc,
bool enable )

Enable the bridge driver.

Parameters
desc- The TMC7300 descriptor.
enable- Enable or disable the driver.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_get_blank_time()

int tmc7300_get_blank_time ( struct tmc7300_desc * desc,
enum tmc7300_blank_time * time )

Get the comparator blank time register.

Parameters
desc- The TMC7300 descriptor.
time- The blank time setting.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_get_drv_status()

int tmc7300_get_drv_status ( struct tmc7300_desc * desc,
union tmc7300_drv_status * status )

Read the driver status register.

Parameters
desc- The TMC7300 descriptor.
status- The driver status.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_get_ifcnt()

int tmc7300_get_ifcnt ( struct tmc7300_desc * desc,
uint8_t * ifcnt )

Get the number of UART valid write accesses. Wraps around at 255.

Parameters
desc- The TMC7300 descriptor.
ifcnt- The number of valid write accesses.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_get_ioin()

int tmc7300_get_ioin ( struct tmc7300_desc * desc,
union tmc7300_ioin * ioin )

Read the IOIN register.

Parameters
desc- The TMC7300 descriptor.
ioin- The IOIN register value.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_get_load_indicator()

int tmc7300_get_load_indicator ( struct tmc7300_desc * desc,
enum tmc7300_bridge bridge,
uint32_t * val )

Get the load indicator.

Parameters
desc- The TMC7300 descriptor.
bridge- The bridge to get the load indicator for.
val- The load indicator value.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_get_pwm_freq()

int tmc7300_get_pwm_freq ( struct tmc7300_desc * desc,
enum tmc7300_pwm_freq * freq )

Get the frequency of the PWM signal.

Parameters
desc- The TMC7300 descriptor.
freq- Division factor for the internal clock oscillator (12 MHz).
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_init()

int tmc7300_init ( struct tmc7300_desc ** desc,
struct tmc7300_init_param * param )

Initialize the TMC7300 driver.

Parameters
desc- The TMC7300 descriptor.
param- The initialization parameters.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_reg_read()

int tmc7300_reg_read ( struct tmc7300_desc * desc,
uint32_t addr,
uint32_t * val )

Read a register.

Parameters
desc- The TMC7300 descriptor.
addr- The register address.
val- The value to read.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_reg_update()

int tmc7300_reg_update ( struct tmc7300_desc * desc,
uint32_t addr,
uint32_t mask,
uint32_t val )

Update a register.

Parameters
desc- The TMC7300 descriptor.
addr- The register address.
mask- The mask to apply.
val- The value of the field specified by the mask. Will be shifted to the correct position.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_reg_write()

int tmc7300_reg_write ( struct tmc7300_desc * desc,
uint32_t addr,
uint32_t val )

Write a register.

Parameters
desc- The TMC7300 descriptor.
addr- The register address.
val- The value to write.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_remove()

int tmc7300_remove ( struct tmc7300_desc * desc)

Free the resources allocated by tmc7300_init().

Parameters
desc- The TMC7300 descriptor.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_set_blank_time()

int tmc7300_set_blank_time ( struct tmc7300_desc * desc,
enum tmc7300_blank_time time )

Set the comparator blank time register.

Parameters
desc- The TMC7300 descriptor.
time- The blank time setting.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_set_current_limit()

int tmc7300_set_current_limit ( struct tmc7300_desc * desc,
uint32_t val )

Set the current limit.

Parameters
desc- The TMC7300 descriptor.
val- The current limit value.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_set_pwm_duty()

int tmc7300_set_pwm_duty ( struct tmc7300_desc * desc,
enum tmc7300_bridge bridge,
int32_t duty )

Set the PWM duty cycle.

Parameters
desc- The TMC7300 descriptor.
bridge- The bridge to set the PWM duty cycle for.
duty- The duty cycle value.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_set_pwm_duty_dir()

int tmc7300_set_pwm_duty_dir ( struct tmc7300_desc * desc,
enum tmc7300_bridge bridge,
uint8_t duty,
enum tmc7300_motor_dir dir )

Set the PWM duty cycle and direction.

Parameters
desc- The TMC7300 descriptor.
bridge- The bridge to set the PWM duty cycle for.
duty- The duty cycle value.
dir- The direction of the motor.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_set_pwm_freq()

int tmc7300_set_pwm_freq ( struct tmc7300_desc * desc,
enum tmc7300_pwm_freq freq )

Set the frequency of the PWM signal.

Parameters
desc- The TMC7300 descriptor.
freq- Division factor for the internal clock oscillator (12 MHz).
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_set_send_delay()

int tmc7300_set_send_delay ( struct tmc7300_desc * desc,
uint8_t delay )

Set the UART response delay.

Parameters
desc- The TMC7300 descriptor.
delay- The delay value.
Returns
0 in case of success, negative error code otherwise.

◆ tmc7300_set_standstill_mode()

int tmc7300_set_standstill_mode ( struct tmc7300_desc * desc,
enum tmc7300_standstill_mode mode )

Set the standstill mode. The motorrun bit will be set to 0.

Parameters
desc- The TMC7300 descriptor.
mode- The standstill mode setting (freewheeling or break).
Returns
0 in case of success, negative error code otherwise.