AM243x Motor Control SDK  09.02.00
APIs for BiSSC Encoder

Introduction

Here is the list of APIs used for BiSSC encoder communication protocol

Functions

int32_t bissc_command_process (struct bissc_priv *priv)
 Send the BiSSC command and wait till firmware acknowledges. More...
 
void bissc_command_send (struct bissc_priv *priv)
 Trigger sending the BiSSC command in PRU. More...
 
int32_t bissc_command_wait (struct bissc_priv *priv)
 Wait till PRU finishes BiSSC transaction. More...
 
int32_t bissc_get_pos (struct bissc_priv *priv)
 Get single cycle BiSS-C position data. More...
 
void bissc_config_clock (struct bissc_priv *priv, struct bissc_clk_cfg *clk_cfg)
 Configure EnDat clock. More...
 
void bissc_config_channel (struct bissc_priv *priv, int32_t mask, int32_t totalch)
 Select channel to be used by BiSSC receiver. More...
 
void bissc_config_load_share (struct bissc_priv *priv, int32_t mask)
 Configure the channels to be used by BiSSC receiver. More...
 
void bissc_enable_load_share_mode (struct bissc_priv *priv)
 Enable load share mode for BiSSC receiver. More...
 
void bissc_config_primary_core_mask (struct bissc_priv *priv, uint8_t mask)
 Configure the primary core for load share mode. More...
 
int32_t bissc_wait_for_fw_initialization (struct bissc_priv *priv, uint32_t timeout, uint8_t mask)
 Wait for BiSSC receiver firmware to initialize. More...
 
void bissc_hw_init (struct bissc_priv *priv)
 Initialize BiSSC hardware interface. More...
 
struct bissc_privbissc_init (PRUICSS_Handle gPruIcssXHandle, int32_t slice, uint32_t frequency, uint32_t core_clk_freq, uint32_t uart_clk_freq)
 Initialize BiSSC firmware interface address and get the pointer to struct bissc_priv instance. More...
 
void bissc_update_max_proc_delay (struct bissc_priv *priv)
 Update max processing time and bit index to poll in fifo data. More...
 
int32_t bissc_wait_measure_proc_delay (struct bissc_priv *priv, uint32_t timeout)
 Wait for BiSSC receiver firmware to measure processing time. More...
 
void bissc_set_default_initialization (struct bissc_priv *priv, uint64_t icssgclk)
 Set default configuration parameters for BiSSC receiver firmware. More...
 
void bissc_update_data_len (struct bissc_priv *priv, uint32_t single_turn_len[], uint32_t multi_turn_len[], int32_t ch_num)
 Update data length with encoder bit width for BiSSC receiver firmware. More...
 
int32_t bissc_set_ctrl_cmd_and_process (struct bissc_priv *priv, uint32_t ctrl_cmd[])
 Set control command and process the ctrl communication read/write. More...
 
void bissc_config_endat_mode (struct bissc_priv *priv)
 Configure the receiver for EnDat mode. More...
 
void bissc_config_clr_cfg0 (struct bissc_priv *priv)
 Clear the channel specific frame size cfg registers. More...
 
void bissc_get_enc_proc_delay (struct bissc_priv *priv)
 Get measured processing delay of individual channel. More...
 
int32_t bissc_calc_clock (struct bissc_priv *priv, struct bissc_clk_cfg *clk_cfg)
 Calculate Rx and Tx divisors for given frequency. More...
 
void bissc_config_periodic_trigger (struct bissc_priv *priv)
 Configure periodic trigger operation mode. More...
 
void bissc_config_host_trigger (struct bissc_priv *priv)
 Configure host trigger operation mode. More...
 
uint32_t bissc_generate_ctrl_cmd (struct bissc_priv *priv, int8_t ls_ch, uint32_t ctrl_write_status, uint32_t ctrl_reg_address, uint32_t ctrl_reg_data, uint32_t ctrl_enc_id)
 Generate control communication Hex equivalent command. More...
 
uint32_t bissc_get_current_channel (struct bissc_priv *priv, uint32_t ch_idx)
 Retrives the current channel in use. More...
 
uint32_t bissc_get_totalchannels (struct bissc_priv *priv)
 Retrives total number of channels configured. More...
 
void bissc_clear_data_len (struct bissc_priv *priv)
 Clears all the encoder resolution parameters. More...
 
void bissc_update_clock_freq (struct bissc_priv *priv, uint32_t frequency)
 Update the operating bud rate as specified by the user. More...
 
void bissc_enable_safety (struct bissc_priv *priv, uint32_t enc_num, uint32_t ch_num)
 Enable Safety for connected BiSS-C encoder. More...
 
void bissc_disable_safety (struct bissc_priv *priv)
 Disable Safety for connected BiSS-C encoder. More...
 

Function Documentation

◆ bissc_command_process()

int32_t bissc_command_process ( struct bissc_priv priv)

Send the BiSSC command and wait till firmware acknowledges.

Parameters
[in]privcookie returned by bissc_init
Return values
SystemP_SUCCESSfor success, SystemP_FAILURE for failure

◆ bissc_command_send()

void bissc_command_send ( struct bissc_priv priv)

Trigger sending the BiSSC command in PRU.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_command_wait()

int32_t bissc_command_wait ( struct bissc_priv priv)

Wait till PRU finishes BiSSC transaction.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_get_pos()

int32_t bissc_get_pos ( struct bissc_priv priv)

Get single cycle BiSS-C position data.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_config_clock()

void bissc_config_clock ( struct bissc_priv priv,
struct bissc_clk_cfg clk_cfg 
)

Configure EnDat clock.

Parameters
[in]privcookie returned by bissc_init
[in]clk_cfgpointer to structure containing clock configuration data

◆ bissc_config_channel()

void bissc_config_channel ( struct bissc_priv priv,
int32_t  mask,
int32_t  totalch 
)

Select channel to be used by BiSSC receiver.

Parameters
[in]privcookie returned by bissc_init
[in]maskchannel mask
[in]totalchtotal number of channels in use

◆ bissc_config_load_share()

void bissc_config_load_share ( struct bissc_priv priv,
int32_t  mask 
)

Configure the channels to be used by BiSSC receiver.

Parameters
[in]privcookie returned by bissc_init
[in]maskchannel mask

◆ bissc_enable_load_share_mode()

void bissc_enable_load_share_mode ( struct bissc_priv priv)

Enable load share mode for BiSSC receiver.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_config_primary_core_mask()

void bissc_config_primary_core_mask ( struct bissc_priv priv,
uint8_t  mask 
)

Configure the primary core for load share mode.

Parameters
[in]privcookie returned by bissc_init
[in]maskchannel mask

◆ bissc_wait_for_fw_initialization()

int32_t bissc_wait_for_fw_initialization ( struct bissc_priv priv,
uint32_t  timeout,
uint8_t  mask 
)

Wait for BiSSC receiver firmware to initialize.

Parameters
[in]privcookie returned by bissc_init
[in]timeouttimeout to wait for initialization
[in]maskchannel mask
Return values
SystemP_SUCCESSfor success, SystemP_FAILURE for failure

◆ bissc_hw_init()

void bissc_hw_init ( struct bissc_priv priv)

Initialize BiSSC hardware interface.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_init()

struct bissc_priv* bissc_init ( PRUICSS_Handle  gPruIcssXHandle,
int32_t  slice,
uint32_t  frequency,
uint32_t  core_clk_freq,
uint32_t  uart_clk_freq 
)

Initialize BiSSC firmware interface address and get the pointer to struct bissc_priv instance.

Parameters
[in]gPruIcssXHandleBiSSC firmware interface address
[in]sliceICSS PRU SLICE
[in]frequencyInput frequency
[in]core_clk_freqCore clock frequency
[in]uart_clk_freqUart clock frequency
Return values
privpointer to struct bissc_priv instance

◆ bissc_update_max_proc_delay()

void bissc_update_max_proc_delay ( struct bissc_priv priv)

Update max processing time and bit index to poll in fifo data.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_wait_measure_proc_delay()

int32_t bissc_wait_measure_proc_delay ( struct bissc_priv priv,
uint32_t  timeout 
)

Wait for BiSSC receiver firmware to measure processing time.

Parameters
[in]privcookie returned by bissc_init
[in]timeouttimeout to wait for initialization
Return values
SystemP_SUCCESSfor success, SystemP_FAILURE for failure

◆ bissc_set_default_initialization()

void bissc_set_default_initialization ( struct bissc_priv priv,
uint64_t  icssgclk 
)

Set default configuration parameters for BiSSC receiver firmware.

Parameters
[in]privcookie returned by bissc_init
[in]icssgclkICSSG core clock for firmware reference

◆ bissc_update_data_len()

void bissc_update_data_len ( struct bissc_priv priv,
uint32_t  single_turn_len[],
uint32_t  multi_turn_len[],
int32_t  ch_num 
)

Update data length with encoder bit width for BiSSC receiver firmware.

Parameters
[in]privcookie returned by bissc_init
[in]single_turn_lenEncoder's single turn resolution
[in]multi_turn_lenEncoder's multi turn resolution
[in]ch_numnumber(index) of PRU in use

◆ bissc_set_ctrl_cmd_and_process()

int32_t bissc_set_ctrl_cmd_and_process ( struct bissc_priv priv,
uint32_t  ctrl_cmd[] 
)

Set control command and process the ctrl communication read/write.

Parameters
[in]privcookie returned by bissc_init
[in]ctrl_cmdHex equivalent of control command
Return values
SystemP_SUCCESSfor success, SystemP_FAILURE for failure

◆ bissc_config_endat_mode()

void bissc_config_endat_mode ( struct bissc_priv priv)

Configure the receiver for EnDat mode.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_config_clr_cfg0()

void bissc_config_clr_cfg0 ( struct bissc_priv priv)

Clear the channel specific frame size cfg registers.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_get_enc_proc_delay()

void bissc_get_enc_proc_delay ( struct bissc_priv priv)

Get measured processing delay of individual channel.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_calc_clock()

int32_t bissc_calc_clock ( struct bissc_priv priv,
struct bissc_clk_cfg clk_cfg 
)

Calculate Rx and Tx divisors for given frequency.

Parameters
[in]privcookie returned by bissc_init
[in]clk_cfgpointer to structure containing clock configuration data.

◆ bissc_config_periodic_trigger()

void bissc_config_periodic_trigger ( struct bissc_priv priv)

Configure periodic trigger operation mode.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_config_host_trigger()

void bissc_config_host_trigger ( struct bissc_priv priv)

Configure host trigger operation mode.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_generate_ctrl_cmd()

uint32_t bissc_generate_ctrl_cmd ( struct bissc_priv priv,
int8_t  ls_ch,
uint32_t  ctrl_write_status,
uint32_t  ctrl_reg_address,
uint32_t  ctrl_reg_data,
uint32_t  ctrl_enc_id 
)

Generate control communication Hex equivalent command.

Parameters
[in]privcookie returned by bissc_init
[in]ls_chchannel in use for load share
[in]ctrl_write_statusstatus for control commmunication write access
[in]ctrl_reg_addressaddress of encoder's register for control commuincation access
[in]ctrl_reg_datadata to write in encoder's register in control communication
[in]ctrl_enc_idID of encoder based on it's place in daisy chain
Return values
ctrl_cmdHex equivalent control communication 32 bit command

◆ bissc_get_current_channel()

uint32_t bissc_get_current_channel ( struct bissc_priv priv,
uint32_t  ch_idx 
)

Retrives the current channel in use.

Parameters
[in]privcookie returned by bissc_init
[in]ch_idxindex of current channel to be selected
Return values
channel[ch_idx]current channel in use

◆ bissc_get_totalchannels()

uint32_t bissc_get_totalchannels ( struct bissc_priv priv)

Retrives total number of channels configured.

Parameters
[in]privcookie returned by bissc_init
Return values
totalchannelstotal number of channels configured

◆ bissc_clear_data_len()

void bissc_clear_data_len ( struct bissc_priv priv)

Clears all the encoder resolution parameters.

Parameters
[in]privcookie returned by bissc_init

◆ bissc_update_clock_freq()

void bissc_update_clock_freq ( struct bissc_priv priv,
uint32_t  frequency 
)

Update the operating bud rate as specified by the user.

Parameters
[in]privcookie returned by bissc_init
[in]frequencyfrequency specified by the user through UART menu

◆ bissc_enable_safety()

void bissc_enable_safety ( struct bissc_priv priv,
uint32_t  enc_num,
uint32_t  ch_num 
)

Enable Safety for connected BiSS-C encoder.

Parameters
[in]privcookie returned by bissc_init
[in]enc_numnumber(index) of encoder in use
[in]ch_numnumber(index) of PRU in use

◆ bissc_disable_safety()

void bissc_disable_safety ( struct bissc_priv priv)

Disable Safety for connected BiSS-C encoder.

Parameters
[in]privcookie returned by bissc_init