test upload STMicroelectronics L6470

Dependents:   test L6470exaple

Committer:
Brid
Date:
Wed Mar 05 06:17:55 2014 +0000
Revision:
2:97c203ed65da
Parent:
1:bb4bb05904cb
ver1.01

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Brid 1:bb4bb05904cb 1 //This 'L6470' libraly maked by Brid
Brid 1:bb4bb05904cb 2
Brid 0:26699d53cd2a 3 #ifndef MBED_L6470
Brid 0:26699d53cd2a 4 #define MBED_L6470
Brid 0:26699d53cd2a 5
Brid 0:26699d53cd2a 6 #include "mbed.h"
Brid 0:26699d53cd2a 7
Brid 0:26699d53cd2a 8 #define FORWARD 1
Brid 0:26699d53cd2a 9 #define REVERSE 0
Brid 0:26699d53cd2a 10
Brid 2:97c203ed65da 11 //
Brid 2:97c203ed65da 12 //INI = ResetHex
Brid 2:97c203ed65da 13 //My specification for Initial value
Brid 2:97c203ed65da 14 #define INI_ABS_POS 0 //Current position
Brid 2:97c203ed65da 15 #define INI_EL_POS 0 //Electrical position
Brid 2:97c203ed65da 16 #define INI_MARK 0 //Mark position
Brid 2:97c203ed65da 17 #define INI_SPEED 0 //Current speed
Brid 2:97c203ed65da 18 #define INI_ACC 0x8A //Acceleration
Brid 2:97c203ed65da 19 #define INI_DEC 0x8A //Deceleration
Brid 2:97c203ed65da 20 #define INI_MAX_SPEED 0x20 //Maximum speed
Brid 2:97c203ed65da 21 #define INI_MIN_SPEED 0 //Minimum speed
Brid 2:97c203ed65da 22 #define INI_KVAL_HOLD 0xFF //Full step speed
Brid 2:97c203ed65da 23 #define INI_KVAL_RUN 0xFF //
Brid 2:97c203ed65da 24 #define INI_KVAL_ACC 0xFF //
Brid 2:97c203ed65da 25 #define INI_KVAL_DEC 0xFF //
Brid 2:97c203ed65da 26 #define INI_INT_SPD 0x408 //
Brid 2:97c203ed65da 27 #define INI_ST_SLP 0x19 //
Brid 2:97c203ed65da 28 #define INI_FN_SLP_ACC 0x29 //
Brid 2:97c203ed65da 29 #define INI_FN_SLP_DEC 0x29 //
Brid 2:97c203ed65da 30 #define INI_K_THERA 0x0 //
Brid 2:97c203ed65da 31 // ADC_OUT ReadOnly
Brid 2:97c203ed65da 32 #define INI_OCR_TH 0xF
Brid 2:97c203ed65da 33 #define INI_STALL_TH 0x7F
Brid 2:97c203ed65da 34 #define INI_FS_SPD 0x27
Brid 2:97c203ed65da 35 #define INI_STEP_MODE 0x7
Brid 2:97c203ed65da 36 #define INI_ARARM_FN 0xFF
Brid 2:97c203ed65da 37 #define INI_CONFIG 0x2E88
Brid 2:97c203ed65da 38 // INI_STATUS ReadOnly
Brid 2:97c203ed65da 39
Brid 2:97c203ed65da 40
Brid 2:97c203ed65da 41 #define LEN_ABS_POS 22
Brid 2:97c203ed65da 42 #define LEN_EL_POS 9
Brid 2:97c203ed65da 43 #define LEN_MARK 22
Brid 2:97c203ed65da 44 #define LEN_SPEED 20
Brid 2:97c203ed65da 45 #define LEN_ACC 12
Brid 2:97c203ed65da 46 #define LEN_DEC 12
Brid 2:97c203ed65da 47 #define LEN_MAX_SPEED 10
Brid 2:97c203ed65da 48 #define LEN_MIN_SPEED 13
Brid 2:97c203ed65da 49 #define LEN_KVAL_HOLD 8
Brid 2:97c203ed65da 50 #define LEN_KVAL_RUN 8
Brid 2:97c203ed65da 51 #define LEN_KVAL_ACC 8
Brid 2:97c203ed65da 52 #define LEN_KVAL_DEC 8
Brid 2:97c203ed65da 53 #define LEN_INT_SPD 14
Brid 2:97c203ed65da 54 #define LEN_ST_SLP 8
Brid 2:97c203ed65da 55 #define LEN_FN_SLP_ACC 8
Brid 2:97c203ed65da 56 #define LEN_FN_SLP_DEC 8
Brid 2:97c203ed65da 57 #define LEN_K_THERA 4
Brid 2:97c203ed65da 58 #define LEN_ADC_OUT 5
Brid 2:97c203ed65da 59 #define LEN_OCR_TH 4
Brid 2:97c203ed65da 60 #define LEN_STALL_TH 7
Brid 2:97c203ed65da 61 #define LEN_FS_SPD 10
Brid 2:97c203ed65da 62 #define LEN_STEP_MODE 8
Brid 2:97c203ed65da 63 #define LEN_ARARM_FN 8
Brid 2:97c203ed65da 64 #define LEN_CONFIG 16
Brid 2:97c203ed65da 65 #define LEN_STATUS 16
Brid 2:97c203ed65da 66
Brid 2:97c203ed65da 67
Brid 2:97c203ed65da 68 #define ADD_ABS_POS 0x01
Brid 2:97c203ed65da 69 #define ADD_EL_POS 0x02
Brid 2:97c203ed65da 70 #define ADD_MARK 0x03
Brid 2:97c203ed65da 71 #define ADD_SPEED 0x04
Brid 2:97c203ed65da 72 #define ADD_ACC 0x05
Brid 2:97c203ed65da 73 #define ADD_DEC 0x06
Brid 2:97c203ed65da 74 #define ADD_MAX_SPEED 0x07
Brid 2:97c203ed65da 75 #define ADD_MIN_SPEED 0x08
Brid 2:97c203ed65da 76 #define ADD_KVAL_HOLD 0x09
Brid 2:97c203ed65da 77 #define ADD_KVAL_RUN 0x0A
Brid 2:97c203ed65da 78 #define ADD_KVAL_ACC 0x0B
Brid 2:97c203ed65da 79 #define ADD_KVAL_DEC 0x0C
Brid 2:97c203ed65da 80 #define ADD_INT_SPD 0x0D
Brid 2:97c203ed65da 81 #define ADD_ST_SLP 0x0E
Brid 2:97c203ed65da 82 #define ADD_FN_SLP_ACC 0x0F
Brid 2:97c203ed65da 83 #define ADD_FN_SLP_DEC 0x10
Brid 2:97c203ed65da 84 #define ADD_K_THERA 0x11
Brid 2:97c203ed65da 85 #define ADD_ADC_OUT 0x12
Brid 2:97c203ed65da 86 #define ADD_OCR_TH 0x13
Brid 2:97c203ed65da 87 #define ADD_STALL_TH 0x14
Brid 2:97c203ed65da 88 #define ADD_FS_SPD 0x15
Brid 2:97c203ed65da 89 #define ADD_STEP_MODE 0x16
Brid 2:97c203ed65da 90 #define ADD_ARARM_FN 0x17
Brid 2:97c203ed65da 91 #define ADD_CONFIG 0x18
Brid 2:97c203ed65da 92 #define ADD_STATUS 0x19
Brid 0:26699d53cd2a 93
Brid 0:26699d53cd2a 94
Brid 0:26699d53cd2a 95
Brid 0:26699d53cd2a 96
Brid 2:97c203ed65da 97 enum L6470_Register{
Brid 2:97c203ed65da 98 ABS_POS = 0x01,
Brid 2:97c203ed65da 99 EL_POS,
Brid 2:97c203ed65da 100 MARK,
Brid 2:97c203ed65da 101 SPEED,
Brid 2:97c203ed65da 102 ACC,
Brid 2:97c203ed65da 103 DEC,
Brid 2:97c203ed65da 104 MAX_SPEED,
Brid 2:97c203ed65da 105 MIN_SPEED,
Brid 2:97c203ed65da 106 KVAL_HOLD,
Brid 2:97c203ed65da 107 KVAL_RUN,
Brid 2:97c203ed65da 108 KVAL_ACC,
Brid 2:97c203ed65da 109 KVAL_DEC,
Brid 2:97c203ed65da 110 INT_SPD,
Brid 2:97c203ed65da 111 ST_SLP,
Brid 2:97c203ed65da 112 FN_SLP_ACC,
Brid 2:97c203ed65da 113 FN_SLP_DEC,
Brid 2:97c203ed65da 114 K_THERA,
Brid 2:97c203ed65da 115 ADC_OUT,
Brid 2:97c203ed65da 116 OCR_TH,
Brid 2:97c203ed65da 117 STALL_TH,
Brid 2:97c203ed65da 118 FS_SPD,
Brid 2:97c203ed65da 119 STEP_MODE,
Brid 2:97c203ed65da 120 ARARM_FN,
Brid 2:97c203ed65da 121 CONFIG,
Brid 2:97c203ed65da 122 STATUS
Brid 2:97c203ed65da 123 };
Brid 0:26699d53cd2a 124
Brid 0:26699d53cd2a 125 class L6470{
Brid 0:26699d53cd2a 126 public:
Brid 0:26699d53cd2a 127 L6470(PinName mosi, PinName miso, PinName sclk, PinName cs);
Brid 0:26699d53cd2a 128
Brid 0:26699d53cd2a 129 unsigned char send(unsigned char temp);
Brid 0:26699d53cd2a 130 void send_bytes(unsigned char temp[],int i);
Brid 0:26699d53cd2a 131 void NOP();
Brid 2:97c203ed65da 132 void SetParam(L6470_Register param,int value);
Brid 2:97c203ed65da 133 int GetParam(L6470_Register param);
Brid 0:26699d53cd2a 134 void Run(unsigned char dir,int spd);
Brid 0:26699d53cd2a 135 void StepClock(unsigned char dir);
Brid 0:26699d53cd2a 136 void Move(unsigned char dir,int n_step);
Brid 0:26699d53cd2a 137 void GoTo(int abs_pos);
Brid 0:26699d53cd2a 138 void GoTo_DIR(unsigned char dir,int abs_pos);
Brid 0:26699d53cd2a 139 void GoUntil(unsigned char act,unsigned char dir,int spd);
Brid 0:26699d53cd2a 140 void ReleaseSW(unsigned char act,unsigned char dir);
Brid 0:26699d53cd2a 141 void GoHome();
Brid 0:26699d53cd2a 142 void GoMark();
Brid 0:26699d53cd2a 143 void ResetPos();
Brid 0:26699d53cd2a 144 void ResetDevice();
Brid 0:26699d53cd2a 145 void SoftStop();
Brid 0:26699d53cd2a 146 void HardStop();
Brid 0:26699d53cd2a 147 void SoftHiZ();
Brid 0:26699d53cd2a 148 void HardHiZ();
Brid 0:26699d53cd2a 149 void Resets();
Brid 0:26699d53cd2a 150
Brid 0:26699d53cd2a 151 private:
Brid 0:26699d53cd2a 152 SPI m_spi;
Brid 0:26699d53cd2a 153 DigitalOut m_cs;
Brid 0:26699d53cd2a 154 };
Brid 0:26699d53cd2a 155
Brid 0:26699d53cd2a 156
Brid 0:26699d53cd2a 157 #endif