| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511 |
- /* ******************************************************************************** */
- /* */
- /* << LC898122 Evaluation Soft>> */
- /* Program Name : Ois.h */
- /* Explanation : LC898122 Global Declaration & ProtType Declaration */
- /* Design : Y.Yamada */
- /* History : First edition 2009.07.30 Y.Tashita */
- /* ******************************************************************************** */
- #ifdef OISINI
- #define OISINI__
- #else
- #define OISINI__ extern
- #endif
- #ifdef OISCMD
- #define OISCMD__
- #else
- #define OISCMD__ extern
- #endif
- /* Define According To Usage */
- /****************************** Define�à–¾ ******************************/
- /* USE_3WIRE_DGYRO Digital Gyro I/F 3�üModeŽg—p */
- /* USE_INVENSENSE Invensense Digital GyroŽg—p */
- /* USE_IDG2020 Inv IDG-2020Žg—p */
- /* STANDBY_MODE Standby�§ŒäŽg—p(–¢Šm”F) */
- /* GAIN_CONT :Gain control‹@”\Žg—p */
- /* (disable) DSC :ŽO‹rModeŽg—p */
- /* HALLADJ_HW Hall Calibration LSI‹@”\Žg—p */
- /************************************************************************/
- /**************** Select Gyro Sensor **************/
- /* #define USE_3WIRE_DGYRO //for D-Gyro SPI interface */
- #define USE_INVENSENSE /* INVENSENSE */
- #ifdef USE_INVENSENSE
- /* #define FS_SEL 0 */ /* �}262LSB/?/s */
- /* #define FS_SEL 1 */ /* �}131LSB/?/s */
- /* #define FS_SEL 2 */ /* �}65.5LSB/?/s */
- #define FS_SEL 3 /* �}32.8LSB/?/s */
- /* #define GYROSTBY */ /* Sleep+STBY */
- #endif
- /**************** Model name *****************/
- #define MN_3BSD05P1
- /**************** FW version *****************/
- #ifdef MN_3BSD05P1
- #define MDL_VER 0x06
- #define FW_VER 0x03
- #endif
- /**************** Select Mode **************/
- #define STANDBY_MODE /* STANDBY Mode */
- #define GAIN_CONT /* Gain Control Mode */
- /* #define HALLADJ_HW // H/W Hall adjustment */
- #define PWM_BREAK /* PWM mode select (disable zero cross) */
- #ifdef MN_3BSD05P1
- #define ACTREG_10P2OHM /* Use 10.2ohm */
- #endif
- #define DEF_SET /* default value re-setting */
- /* #define USE_EXTCLK_ALL // USE Ext clk for ALL */
- /* #define USE_EXTCLK_PWM // USE Ext clk for PWM */
- /* #define USE_VH_SYNC // USE V/H Sync for PWM */
- /* #define PWM_CAREER_TEST // PWM_CAREER_TEST */
- #define NEUTRAL_CENTER /* Upper Position Current 0mA Measurement */
- #define H1COEF_CHANGER /* H1 coef lvl chage */
- #define MONITOR_OFF /* default Monitor output */
- /* #define MODULE_CALIBRATION // for module maker use float */
- /* #define AF_PWMMODE // AF Driver PWM mode */
- /* #define CORRECT_1DEG // Correct 1deg disable 0.5deg */
- /* Command Status */
- #define EXE_END 0x02 /* Execute End (Adjust OK) */
- #define EXE_HXADJ 0x06 /* Adjust NG : X Hall NG (Gain or Offset) */
- #define EXE_HYADJ 0x0A /* Adjust NG : Y Hall NG (Gain or Offset) */
- #define EXE_LXADJ 0x12 /* Adjust NG : X Loop NG (Gain) */
- #define EXE_LYADJ 0x22 /* Adjust NG : Y Loop NG (Gain) */
- #define EXE_GXADJ 0x42 /* Adjust NG : X Gyro NG (offset) */
- #define EXE_GYADJ 0x82 /* Adjust NG : Y Gyro NG (offset) */
- #define EXE_OCADJ 0x402 /* Adjust NG : OSC Clock NG */
- #define EXE_ERR 0x99 /* Execute Error End */
- /* Common Define */
- #define SUCCESS 0x00 /* Success */
- #define FAILURE 0x01 /* Failure */
- #ifndef ON
- #define ON 0x01 /* ON */
- #define OFF 0x00 /* OFF */
- #endif
- #define SPC 0x02 /* Special Mode */
- #define X_DIR 0x00 /* X Direction */
- #define Y_DIR 0x01 /* Y Direction */
- #define X2_DIR 0x10 /* X Direction */
- #define Y2_DIR 0x11 /* Y Direction */
- #define NOP_TIME 0.00004166F
- #ifdef STANDBY_MODE
- /* Standby mode */
- #define STB1_ON 0x00 /* Standby1 ON */
- #define STB1_OFF 0x01 /* Standby1 OFF */
- #define STB2_ON 0x02 /* Standby2 ON */
- #define STB2_OFF 0x03 /* Standby2 OFF */
- #define STB3_ON 0x04 /* Standby3 ON */
- #define STB3_OFF 0x05 /* Standby3 OFF */
- #define STB4_ON 0x06 /* Standby4 ON for Digital Gyro Read */
- #define STB4_OFF 0x07 /* Standby4 OFF */
- #define STB2_OISON 0x08 /* Standby2 ON (only OIS) */
- #define STB2_OISOFF 0x09 /* Standby2 OFF(only OIS) */
- #define STB2_AFON 0x0A /* Standby2 ON (only AF) */
- #define STB2_AFOFF 0x0B /* Standby2 OFF(only AF) */
- #endif
- /* OIS Adjust Parameter */
- #define DAHLXO_INI 0x0000
- #define DAHLXB_INI 0xE000
- #define DAHLYO_INI 0x0000
- #define DAHLYB_INI 0xE000
- #define SXGAIN_INI 0x3000
- #define SYGAIN_INI 0x3000
- #define HXOFF0Z_INI 0x0000
- #define HYOFF1Z_INI 0x0000
- #ifdef ACTREG_6P5OHM /* MTM 9.5 Actuator *************************** */
- #define BIAS_CUR_OIS 0x33 /* 2.0mA/2.0mA */
- #define AMP_GAIN_X 0x05 /* x150 */
- #define AMP_GAIN_Y 0x05 /* x150 */
- /* OSC Init */
- #define OSC_INI 0x2E /* VDD=2.8V */
- /* AF Open para */
- #define RWEXD1_L_AF 0x7FFF /* */
- #define RWEXD2_L_AF 0x1094 /* */
- #define RWEXD3_L_AF 0x72BA /* */
- #define FSTCTIME_AF 0xED /* */
- #define FSTMODE_AF 0x02 /* */
- /* (0.3750114X^3+0.5937681X)*(0.3750114X^3+0.5937681X) 6.5ohm */
- #define A3_IEXP3 0x3EC0017F
- #define A1_IEXP1 0x3F180130
- #endif
- #ifdef ACTREG_10P2OHM /* MTM 10.2 Actuator *************************** */
- #define BIAS_CUR_OIS 0x33 /* 2.0mA/2.0mA */
- #define AMP_GAIN_X 0x05 /* x150 */
- #define AMP_GAIN_Y 0x05 /* x150 */
- /* OSC Init */
- #define OSC_INI 0x2E /* VDD=2.8V */
- /* AF Open para */
- #define RWEXD1_L_AF 0x7FFF /* */
- #define RWEXD2_L_AF 0x75FE /* */
- #define RWEXD3_L_AF 0x7F32 /* */
- #define FSTCTIME_AF 0xF1 /* */
- #define FSTMODE_AF 0x00 /* */
- /* (0.3750114X^3+0.55X)*(0.3750114X^3+0.55X) 10.2ohm */
- #define A3_IEXP3 0x3EC0017F
- #define A1_IEXP1 0x3F0CCCCD
- #endif
- #ifdef ACTREG_15OHM /* TDK 10.5 Actuator *************************** */
- #define BIAS_CUR_OIS 0x22 /* 1.0mA/1.0mA */
- #define AMP_GAIN_X 0x04 /* x100 */
- #define AMP_GAIN_Y 0x04 /* x100 */
- /* OSC Init */
- #define OSC_INI 0x2E /* VDD=2.8V */
- /* AF Open para */
- #define RWEXD1_L_AF 0x7FFF /* */
- #define RWEXD2_L_AF 0x5A00 /* */
- #define RWEXD3_L_AF 0x7000 /* */
- #define FSTCTIME_AF 0x5F /* */
- #define FSTMODE_AF 0x00 /* */
- /* (0.4531388X^3+0.4531388X)*(0.4531388X^3+0.4531388X) 15ohm */
- #define A3_IEXP3 0x3EE801CF
- #define A1_IEXP1 0x3EE801CF
- #endif
- /* AF adjust parameter */
- #define DAHLZB_INI 0x9000
- #define DAHLZO_INI 0x0000
- #define BIAS_CUR_AF 0x00 /* 0.25mA */
- #define AMP_GAIN_AF 0x00 /* x6 */
- /* Digital Gyro offset Initial value */
- #define DGYRO_OFST_XH 0x00
- #define DGYRO_OFST_XL 0x00
- #define DGYRO_OFST_YH 0x00
- #define DGYRO_OFST_YL 0x00
- #define SXGAIN_LOP 0x3000
- #define SYGAIN_LOP 0x3000
- #define TCODEH_ADJ 0x0000
- #define GYRLMT1H 0x3DCCCCCD /* 0.1F */
- #ifdef CORRECT_1DEG
- #define GYRLMT3_S1 0x3F19999A /* 0.60F */
- #define GYRLMT3_S2 0x3F19999A /* 0.60F */
- #define GYRLMT4_S1 0x40400000 /* 3.0F */
- #define GYRLMT4_S2 0x40400000 /* 3.0F */
- #define GYRA12_HGH 0x40000000 /* 2.00F */
- #define GYRA12_MID 0x3F800000 /* 1.0F */
- #define GYRA34_HGH 0x3F000000 /* 0.5F */
- #define GYRA34_MID 0x3DCCCCCD /* 0.1F */
- #define GYRB12_HGH 0x3E4CCCCD /* 0.20F */
- #define GYRB12_MID 0x3CA3D70A /* 0.02F */
- #define GYRB34_HGH 0x3CA3D70A /* 0.02F */
- #define GYRB34_MID 0x3C23D70A /* 0.001F */
- #else
- #define GYRLMT3_S1 0x3ECCCCCD /* 0.40F */
- #define GYRLMT3_S2 0x3ECCCCCD /* 0.40F */
- #define GYRLMT4_S1 0x40000000 /* 2.0F */
- #define GYRLMT4_S2 0x40000000 /* 2.0F */
- #define GYRA12_HGH 0x3FC00000 /* 1.50F */
- #define GYRA12_MID 0x3F800000 /* 1.0F */
- #define GYRA34_HGH 0x3F000000 /* 0.5F */
- #define GYRA34_MID 0x3DCCCCCD /* 0.1F */
- #define GYRB12_HGH 0x3E4CCCCD /* 0.20F */
- #define GYRB12_MID 0x3CA3D70A /* 0.02F */
- #define GYRB34_HGH 0x3CA3D70A /* 0.02F */
- #define GYRB34_MID 0x3C23D70A /* 0.001F */
- #endif
- /* #define OPTCEN_X 0x0000 */
- /* #define OPTCEN_Y 0x0000 */
- #ifdef USE_INVENSENSE
- #ifdef MN_3BSD05P1
- #define SXQ_INI 0x3F800000
- #define SYQ_INI 0xBF800000
- #define GXGAIN_INI 0xBF147AE1
- #define GYGAIN_INI 0xBF147AE1
- #define GYROX_INI 0x45
- #define GYROY_INI 0x43
- #define GXHY_GYHX 1
- #endif
- #endif
- /* Optical Center & Gyro Gain for Mode */
- #define VAL_SET 0x00 /* Setting mode */
- #define VAL_FIX 0x01 /* Fix Set value */
- #define VAL_SPC 0x02 /* Special mode */
- struct STFILREG {
- unsigned short UsRegAdd;
- unsigned char UcRegDat;
- }; /* Register Data Table */
- struct STFILRAM {
- unsigned short UsRamAdd;
- unsigned long UlRamDat;
- }; /* Filter Coefficient Table */
- struct STCMDTBL {
- unsigned short Cmd;
- unsigned int UiCmdStf;
- void (*UcCmdPtr) (void);
- };
- /*** caution [little-endian] ***/
- /* Word Data Union */
- union WRDVAL {
- unsigned short UsWrdVal;
- unsigned char UcWrkVal[2];
- struct {
- unsigned char UcLowVal;
- unsigned char UcHigVal;
- } StWrdVal;
- };
- typedef union WRDVAL UnWrdVal;
- union DWDVAL {
- unsigned long UlDwdVal;
- unsigned short UsDwdVal[2];
- struct {
- unsigned short UsLowVal;
- unsigned short UsHigVal;
- } StDwdVal;
- struct {
- unsigned char UcRamVa0;
- unsigned char UcRamVa1;
- unsigned char UcRamVa2;
- unsigned char UcRamVa3;
- } StCdwVal;
- };
- typedef union DWDVAL UnDwdVal;
- /* Float Data Union */
- union FLTVAL {
- float SfFltVal;
- unsigned long UlLngVal;
- unsigned short UsDwdVal[2];
- struct {
- unsigned short UsLowVal;
- unsigned short UsHigVal;
- } StFltVal;
- };
- typedef union FLTVAL UnFltVal;
- typedef struct STADJPAR {
- struct {
- unsigned char UcAdjPhs; /* Hall Adjust Phase */
- unsigned short UsHlxCna; /* Hall Center Value after Hall Adjust */
- unsigned short UsHlxMax; /* Hall Max Value */
- unsigned short UsHlxMxa; /* Hall Max Value after Hall Adjust */
- unsigned short UsHlxMin; /* Hall Min Value */
- unsigned short UsHlxMna; /* Hall Min Value after Hall Adjust */
- unsigned short UsHlxGan; /* Hall Gain Value */
- unsigned short UsHlxOff; /* Hall Offset Value */
- unsigned short UsAdxOff; /* Hall A/D Offset Value */
- unsigned short UsHlxCen; /* Hall Center Value */
- unsigned short UsHlyCna; /* Hall Center Value after Hall Adjust */
- unsigned short UsHlyMax; /* Hall Max Value */
- unsigned short UsHlyMxa; /* Hall Max Value after Hall Adjust */
- unsigned short UsHlyMin; /* Hall Min Value */
- unsigned short UsHlyMna; /* Hall Min Value after Hall Adjust */
- unsigned short UsHlyGan; /* Hall Gain Value */
- unsigned short UsHlyOff; /* Hall Offset Value */
- unsigned short UsAdyOff; /* Hall A/D Offset Value */
- unsigned short UsHlyCen; /* Hall Center Value */
- } StHalAdj;
- struct {
- unsigned short UsLxgVal; /* Loop Gain X */
- unsigned short UsLygVal; /* Loop Gain Y */
- unsigned short UsLxgSts; /* Loop Gain X Status */
- unsigned short UsLygSts; /* Loop Gain Y Status */
- } StLopGan;
- struct {
- unsigned short UsGxoVal; /* Gyro A/D Offset X */
- unsigned short UsGyoVal; /* Gyro A/D Offset Y */
- unsigned short UsGxoSts; /* Gyro Offset X Status */
- unsigned short UsGyoSts; /* Gyro Offset Y Status */
- } StGvcOff;
- unsigned char UcOscVal; /* OSC value */
- } stAdjPar;
- OISCMD__ stAdjPar StAdjPar; /* Execute Command Parameter */
- OISCMD__ unsigned char UcOscAdjFlg; /* For Measure trigger */
- #define MEASSTR 0x01
- #define MEASCNT 0x08
- #define MEASFIX 0x80
- OISINI__ unsigned short UsCntXof; /* OPTICAL Center Xvalue */
- OISINI__ unsigned short UsCntYof; /* OPTICAL Center Yvalue */
- OISINI__ unsigned char UcPwmMod; /* PWM MODE */
- #define PWMMOD_CVL 0x00 /* CVL PWM MODE */
- #define PWMMOD_PWM 0x01 /* PWM MODE */
- #define INIT_PWMMODE PWMMOD_CVL /* initial output mode */
- OISINI__ unsigned char UcCvrCod; /* CverCode */
- #define CVER122 0x93 /* LC898122 */
- #define CVER122A 0xA1 /* LC898122A */
- /* Prottype Declation */
- OISINI__ void IniSet(void); /* Initial Top Function */
- OISINI__ void IniSetAf(void); /* Initial Top Function */
- OISINI__ void ClrGyr(unsigned short, unsigned char); /* Clear Gyro RAM */
- #define CLR_FRAM0 0x01
- #define CLR_FRAM1 0x02
- #define CLR_ALL_RAM 0x03
- OISINI__ void BsyWit(unsigned short, unsigned char); /* Busy Wait Function */
- /* OISINI__ void WitTim_LC898122AF( unsigned short ) ; // Wait */
- OISINI__ void MemClr(unsigned char *, unsigned short); /* Memory Clear Function */
- OISINI__ void GyOutSignal(void); /* Slect Gyro Output signal Function */
- OISINI__ void GyOutSignalCont(void); /* Slect Gyro Output Continuos Function */
- #ifdef STANDBY_MODE
- OISINI__ void AccWit(unsigned char); /* Acc Wait Function */
- OISINI__ void SelectGySleep(unsigned char); /* Select Gyro Mode Function */
- #endif
- #ifdef GAIN_CONT
- OISINI__ void AutoGainControlSw(unsigned char); /* Auto Gain Control Sw */
- #endif
- OISINI__ void DrvSw(unsigned char UcDrvSw); /* Driver Mode setting function */
- OISINI__ void AfDrvSw(unsigned char UcDrvSw); /* AF Driver Mode setting function */
- OISINI__ void RamAccFixMod(unsigned char); /* Ram Access Fix Mode setting function */
- OISINI__ void IniPtMovMod(unsigned char); /* Pan/Tilt parameter setting by mode function */
- OISINI__ void ChkCvr(void); /* Check Function */
- OISCMD__ void SrvCon(unsigned char, unsigned char); /* Servo ON/OFF */
- OISCMD__ unsigned short TneRun(void); /* Hall System Auto Adjustment Function */
- OISCMD__ unsigned char RtnCen(unsigned char); /* Return to Center Function */
- OISCMD__ void OisEna(void); /* OIS Enable Function */
- OISCMD__ void OisEnaLin(void); /* OIS Enable Function for Line adjustment */
- OISCMD__ void TimPro(void); /* Timer Interrupt Process Function */
- OISCMD__ void S2cPro(unsigned char); /* S2 Command Process Function */
- #ifdef MN_3BSD05P1
- #define DIFIL_S2 0x3F7FFE00
- #endif
- OISCMD__ void SetSinWavePara(unsigned char, unsigned char); /* Sin wave Test Function */
- #define SINEWAVE 0
- #define XHALWAVE 1
- #define YHALWAVE 2
- #define CIRCWAVE 255
- OISCMD__ unsigned char TneGvc(void); /* Gyro VC Offset Adjust */
- OISCMD__ void SetZsp(unsigned char); /* Set Zoom Step parameter Function */
- OISCMD__ void OptCen(unsigned char, unsigned short, unsigned short); /* Set Optical Center adjusted value Function */
- OISCMD__ void StbOnnN(unsigned char, unsigned char); /* Stabilizer For Servo On Function */
- #ifdef MODULE_CALIBRATION
- OISCMD__ unsigned char LopGan(unsigned char); /* Loop Gain Adjust */
- #endif
- #ifdef STANDBY_MODE
- OISCMD__ void SetStandby(unsigned char); /* Standby control */
- #endif
- #ifdef MODULE_CALIBRATION
- OISCMD__ unsigned short OscAdj(void); /* OSC clock adjustment */
- #endif
- #ifdef HALLADJ_HW
- #ifdef MODULE_CALIBRATION
- OISCMD__ unsigned char LoopGainAdj(unsigned char);
- #endif
- OISCMD__ unsigned char BiasOffsetAdj(unsigned char, unsigned char);
- #endif
- OISCMD__ void GyrGan(unsigned char, unsigned long, unsigned long); /* Set Gyro Gain Function */
- OISCMD__ void SetPanTiltMode(unsigned char); /* Pan_Tilt control Function */
- #ifndef HALLADJ_HW
- OISCMD__ unsigned long TnePtp(unsigned char, unsigned char); /* Get Hall Peak to Peak Values */
- #ifdef MN_3BSD05P1
- #define HALL_H_VAL 0x3F800000 /* 1.0 */
- #endif
- OISCMD__ unsigned char TneCen(unsigned char, UnDwdVal); /* Tuning Hall Center */
- #define PTP_BEFORE 0
- #define PTP_AFTER 1
- #endif
- #ifdef GAIN_CONT
- OISCMD__ unsigned char TriSts(void); /* Read Status of Tripod mode Function */
- #endif
- OISCMD__ unsigned char DrvPwmSw(unsigned char); /* Select Driver mode Function */
- #define Mlnp 0 /* Linear PWM */
- #define Mpwm 1 /* PWM */
- #ifdef NEUTRAL_CENTER /* Gyro VC Offset Adjust */
- OISCMD__ unsigned char TneHvc(void); /* Hall VC Offset Adjust */
- #endif /* NEUTRAL_CENTER */
- OISCMD__ void SetGcf(unsigned char); /* Set DI filter coefficient Function */
- OISCMD__ unsigned long UlH1Coefval; /* H1 coefficient value */
- #ifdef H1COEF_CHANGER
- OISCMD__ unsigned char UcH1LvlMod; /* H1 level coef mode */
- OISCMD__ void SetH1cMod(unsigned char); /* Set H1C coefficient Level chang Function */
- #define S2MODE 0x40
- #define ACTMODE 0x80
- #define MOVMODE 0xFF
- #endif
- OISCMD__ unsigned short RdFwVr(void);
- void RegWriteA_LC898122AF(unsigned short RegAddr, unsigned char RegData);
- void RegReadA_LC898122AF(unsigned short RegAddr, unsigned char *RegData);
- void RamWriteA_LC898122AF(unsigned short RamAddr, unsigned short RamData);
- void RamReadA_LC898122AF(unsigned short RamAddr, void *ReadData);
- void RamWrite32A_LC898122AF(unsigned short RamAddr, unsigned long RamData);
- void RamRead32A_LC898122AF(unsigned short RamAddr, void *ReadData);
- void WitTim_LC898122AF(unsigned short UsWitTim);
- void LC898prtvalue(unsigned short value);
- /* Read Fw Version Function */
|