📄 srvttm.h
字号:
/**************************************************
*
* srvttm.h
*
* CVS ID: $Id: srvttm.h,v 1.10 2007/09/26 15:11:13 dellorto Exp $
* Author: Fabio Dell'Orto [FD] - STM
* Date: $Date: 2007/09/26 15:11:13 $
* Revision: $Revision: 1.10 $
*
* Description:
*
*
***************************************************
*
* COPYRIGHT (C) ST Microelectronics 2005
* All Rights Reserved
*
***************************************************
*
* STM CVS Log:
*
* $Log: srvttm.h,v $ * Revision 1.10 2007/09/26 15:11:13 dellorto * improvement to make ttm recover safe * * Revision 1.9 2007/08/14 15:29:57 dellorto * multiple mechanisms *
* Revision 1.8 2007/03/16 14:25:56 dellorto
* added command for improved ttm recover
*
* Revision 1.7 2006/10/09 15:16:26 dellorto
* no message
*
* Revision 1.6 2006/09/18 09:55:26 belardi
* Corrected CVS keyword usage
*
* Revision 1.5 2006/09/18 09:25:49 belardi
* AddeLogg$ CVS keyword into file header
*
*
***************************************************/
#ifndef __SRVTTM_H
#define __SRVTTM_H
typedef enum
{
TTM_CALLER_KICK_CMD,
TTM_CALLER_BRAKE_CMD,
TTM_CALLER_CHECK_SPEED_CMD,
TTM_CALLER_RECOVER_CMD,
TTM_CALLER_MAX_CMD,
TTM_CALLER_TIMEOUT = TTM_CALLER_MAX_CMD,
TTM_CALLER_CAV_ISR,
TTM_CALLER_DSP_SPEED_OK,
TTM_CALLER_DSP_SPEED_NOT_OK,
TTM_CALLER_SPEED_RESET,
TTM_CALLER_DELTA_TRK_OK
} t_ttm_caller;
typedef enum
{
TTM_NO_EVENT = NO_EVENT,
TTM_EVENT_UNKNOWN,
TTM_EVENT_BRAKING,
TTM_EVENT_STOPPED,
TTM_EVENT_STOP_ERROR,
TTM_EVENT_STARTING,
TTM_EVENT_SPEED_CHANGING,
TTM_EVENT_ON_SPEED,
TTM_EVENT_SPEED_ERROR
} t_ttm_event;
typedef struct
{
UInt ttm_speed_ok : 1;
UInt ttm_speed_error : 1;
#ifdef APM_PICKUP
UInt stop_ttm_error : 1;
UInt unused : 5;
#else
UInt unused : 6;
#endif
} SERVO_TTM_FLAGS_STRUCT;
typedef union
{
uint8 all;
SERVO_TTM_FLAGS_STRUCT field;
} SERVO_TTM_FLAGS_UNION;
typedef enum
{
SET_SPEED_RESULT_OK,
SET_SPEED_RESULT_DEC_RATIO_CHANGED,
SET_SPEED_RESULT_CLV_ENABLED
} t_set_speed_result;
#ifdef ECC_WORKAROUND
typedef enum
{
CLV_IRQ_NO_EVENT = NO_EVENT,
CLV_IRQ_EVENT_OVERFLOW,
CLV_IRQ_EVENT_UNDERFLOW
} t_clv_irq_event;
#endif
void init_ttm_fsm(void);
void ttm_init(void);
RETVAL check_ttm_braking(void);
RETVAL check_ttm_speed(void);
void kick_ttm(void);
void brake_ttm(void);
void check_ttm_speed_request(void);
RETVAL start_ttm(void);
void prepare_ttm_for_recover(void);
void ttm_fsm_call(t_ttm_caller ttm_caller);
t_set_speed_result set_speed(uint8 speed);
void set_disc_control(uint8 disc_control_mode);
#ifdef ECC_WORKAROUND
void clv_isr_irq(void);
#endif
/*----------------------------------------------------------------------------*/
/* TTM defines */
/*----------------------------------------------------------------------------*/
#define DISC_CONTROL_RECOVER 0x00
#define DISC_CONTROL_SET_SPEED 0x01
#define DISC_CONTROL_LONG_JUMP 0x02
#define DISC_CONTROL_SHORT_JUMP 0x03
#define DISC_MODE 0x70
#define DISC_SPEED 0x0F
#define CDV_AUX_FLAG 0x80
#define CLV 0x00 /* CLV mode */
#define CDV 0x10 /* CDV mode */
#define CDV_PREPARED 0x20 /* CDV mode prepared (will be active after starting kick) */
#define SCP_CLV 0x40 /* CLV mode without CLV buffer control */
#define CLV_1X 0x01
#define CLV_2X 0x02
#define CDV_1X_IN_DISC 0x01
#define CDV_AUX 0x0A
/*
FREQ_CLV_1X = BIT_RATE * 2^(17+dec_ratio) / Fsys
= 4.3218[Mb/s] * 2^(17+2) / 13.54[Mhz]
For DSP: FREQ_1T_CLV_1X = FREQ_CLV_1X >> 4
*/
#define FREQ_1T_CLV_1X 0x28DB
#define FREQ_1T_CLV_2X 0x51B6
/*----------------------------------------------------------------------------*/
/* TTM FSM State defines */
/*----------------------------------------------------------------------------*/
typedef enum
{
TTM_STATE_IDLE = STATE_1,
TTM_STATE_START_KICK = STATE_2,
TTM_STATE_RECOVER_KICK = STATE_3,
TTM_STATE_RECOVER_CHECK = STATE_4,
TTM_STATE_WAIT_KICK = STATE_5,
TTM_STATE_WAIT_SPIN_UP = STATE_6,
TTM_STATE_CHECK_ON_SPEED = STATE_7,
TTM_STATE_ACTIVE = STATE_8,
TTM_STATE_START_BRAKE = STATE_9,
TTM_STATE_WAIT_BRAKE = STATE_10,
TTM_STATE_WAIT_SPIN_DOWN = STATE_11
} t_ttm_state;
#define IS_TTM_MOVING(x) (((x) != TTM_STATE_IDLE) && ((x) < TTM_STATE_START_BRAKE))
extern t_ttm_state ttm_fsm_state;
extern sint16 aux_ttm_input;
extern uint32 freq_1T;
extern uint16 target_freq_1T;
extern uint8 target_ttm_speed;
extern uint8 current_ttm_speed;
#endif /* __SRVTTM_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -