test upload STMicroelectronics L6470

Dependents:   test L6470exaple

L6470.h

Committer:
Brid
Date:
2014-03-05
Revision:
2:97c203ed65da
Parent:
1:bb4bb05904cb

File content as of revision 2:97c203ed65da:

//This 'L6470' libraly maked by Brid

#ifndef MBED_L6470
#define MBED_L6470
 
#include "mbed.h"

#define FORWARD     1
#define REVERSE     0

//
//INI = ResetHex
//My specification for Initial value
#define INI_ABS_POS     0    //Current position         
#define INI_EL_POS      0    //Electrical position
#define INI_MARK        0    //Mark position
#define INI_SPEED       0    //Current speed
#define INI_ACC         0x8A    //Acceleration
#define INI_DEC         0x8A    //Deceleration
#define INI_MAX_SPEED   0x20    //Maximum speed
#define INI_MIN_SPEED   0    //Minimum speed
#define INI_KVAL_HOLD   0xFF    //Full step speed
#define INI_KVAL_RUN    0xFF    //
#define INI_KVAL_ACC    0xFF    //
#define INI_KVAL_DEC    0xFF    //
#define INI_INT_SPD     0x408   //
#define INI_ST_SLP      0x19    //
#define INI_FN_SLP_ACC  0x29    //
#define INI_FN_SLP_DEC  0x29    //
#define INI_K_THERA     0x0    //
//         ADC_OUT     ReadOnly
#define INI_OCR_TH      0xF      
#define INI_STALL_TH    0x7F
#define INI_FS_SPD      0x27
#define INI_STEP_MODE   0x7
#define INI_ARARM_FN    0xFF
#define INI_CONFIG      0x2E88    
//      INI_STATUS      ReadOnly


#define LEN_ABS_POS      22
#define LEN_EL_POS       9
#define LEN_MARK         22
#define LEN_SPEED        20
#define LEN_ACC          12
#define LEN_DEC          12
#define LEN_MAX_SPEED    10
#define LEN_MIN_SPEED    13
#define LEN_KVAL_HOLD    8
#define LEN_KVAL_RUN     8
#define LEN_KVAL_ACC     8
#define LEN_KVAL_DEC     8
#define LEN_INT_SPD      14
#define LEN_ST_SLP       8
#define LEN_FN_SLP_ACC   8
#define LEN_FN_SLP_DEC   8
#define LEN_K_THERA      4
#define LEN_ADC_OUT      5
#define LEN_OCR_TH       4
#define LEN_STALL_TH     7
#define LEN_FS_SPD       10
#define LEN_STEP_MODE    8
#define LEN_ARARM_FN     8
#define LEN_CONFIG       16
#define LEN_STATUS       16


#define ADD_ABS_POS      0x01
#define ADD_EL_POS       0x02
#define ADD_MARK         0x03
#define ADD_SPEED        0x04
#define ADD_ACC          0x05
#define ADD_DEC          0x06
#define ADD_MAX_SPEED    0x07
#define ADD_MIN_SPEED    0x08
#define ADD_KVAL_HOLD    0x09
#define ADD_KVAL_RUN     0x0A
#define ADD_KVAL_ACC     0x0B
#define ADD_KVAL_DEC     0x0C
#define ADD_INT_SPD      0x0D
#define ADD_ST_SLP       0x0E
#define ADD_FN_SLP_ACC   0x0F
#define ADD_FN_SLP_DEC   0x10
#define ADD_K_THERA      0x11
#define ADD_ADC_OUT      0x12
#define ADD_OCR_TH       0x13
#define ADD_STALL_TH     0x14
#define ADD_FS_SPD       0x15
#define ADD_STEP_MODE    0x16
#define ADD_ARARM_FN     0x17
#define ADD_CONFIG       0x18
#define ADD_STATUS       0x19




enum L6470_Register{
    ABS_POS = 0x01,
    EL_POS,
    MARK,
    SPEED,
    ACC,
    DEC,
    MAX_SPEED,
    MIN_SPEED,
    KVAL_HOLD,
    KVAL_RUN,
    KVAL_ACC,
    KVAL_DEC,
    INT_SPD,
    ST_SLP,
    FN_SLP_ACC,
    FN_SLP_DEC,
    K_THERA,
    ADC_OUT,
    OCR_TH,
    STALL_TH,
    FS_SPD,
    STEP_MODE,
    ARARM_FN,
    CONFIG,
    STATUS
};

class L6470{
public:
    L6470(PinName mosi, PinName miso, PinName sclk, PinName cs);

    unsigned char send(unsigned char temp);    
    void send_bytes(unsigned char temp[],int i);
    void NOP();
    void SetParam(L6470_Register param,int value);
    int GetParam(L6470_Register param);
    void Run(unsigned char dir,int spd);
    void StepClock(unsigned char dir);
    void Move(unsigned char dir,int n_step);
    void GoTo(int abs_pos);
    void GoTo_DIR(unsigned char dir,int abs_pos);
    void GoUntil(unsigned char act,unsigned char dir,int spd);
    void ReleaseSW(unsigned char act,unsigned char dir);
    void GoHome();
    void GoMark();
    void ResetPos();
    void ResetDevice();
    void SoftStop();
    void HardStop();
    void SoftHiZ();
    void HardHiZ();
    void Resets();

private:
    SPI m_spi;
    DigitalOut m_cs;
};

 
#endif