L6470を使用した秋月のステッピングモータードライバをうごかすライブラリとプログラム,なおもともとあるやつをぱくった上で機能を追加している
Dependencies: mbed
Diff: L6470_lib/L6470.h
- Revision:
- 0:298e718ad4cb
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/L6470_lib/L6470.h Tue Nov 11 09:11:47 2014 +0000 @@ -0,0 +1,134 @@ + +#ifndef L6470_STEP_H +#define L6470_STEP_H + +//Brid. respected +#include "mbed.h" + +//config name.reset data; +//first init config data. +#define INI_ABS_POS 0 +#define INI_EL_POS 0 +#define INI_MARK 180 +#define INI_SPEED 0 +#define INI_ACC 0x8A//8A//0010 +#define INI_DEC 0x8A +#define INI_MAX_SPEED 0x20 +#define INI_MIN_SPEED 0 +#define INI_FS_SPD 0x27 +#define INI_KVAL_HOLD 0x3F +#define INI_KVAL_RUN 0xFF +#define INI_KVAL_ACC 0x70 +#define INI_KVAL_DEC 0x70 +#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_THERM 0 +// INI_ADC_OUT read only desu. +#define INI_OCD_TH 0xF0 +#define INI_STALL_TH 0x7F +#define INI_STEP_MODE 0x70 +#define INI_ALARM_EN 0xFF +#define INI_CONFIG 0x2E88 +// INI_STATUS read only desu. + + + + +//レジスタのアドレス +// name length<<8 + address +#define ABS_POS ((22<<8)+0x01) +#define EL_POS ((9<<8)+0x02) +#define MARK ((22<<8)+0x03) +#define SPEED ((20<<8)+0x04) +#define ACC ((12<<8)+0x05) +#define DEC ((12<<8)+0x06) +#define MAX_SPEED ((10<<8)+0x07) +#define MIN_SPEED ((13<<8)+0x08) +#define FS_SPD ((10<<8)+0x15) +#define KVAL_HOLD ((8<<8)+0x09) +#define KVAL_RUN ((8<<8)+0x0A) +#define KVAL_ACC ((8<<8)+0x0B) +#define KVAL_DEC ((8<<8)+0x0C) +#define INT_SPD ((14<<8)+0x0D) +#define ST_SLP ((8<<8)+0x0E) +#define FN_SLP_ACC ((8<<8)+0x0F) +#define FN_SLP_DEC ((8<<8)+0x10) +#define K_THERM ((4<<8)+0x11) +#define ADC_OUT ((5<<8)+0x12) +#define OCD_TH ((4<<8)+0x13) +#define STALL_TH ((7<<8)+0x14) +#define STEP_MODE ((8<<8)+0x16) +#define ALARM_EN ((8<<8)+0x17) +#define CONFIG ((16<<8)+0x18) +#define STATUS ((16<<8)+0x19) + +class L6470{ + + public: + + /** + * + * @param mosi SPI mosi pin + * @param miso SPI miso pin + * @param sck SPI sck pin + * @param _cs #cs pin + * + */ + + L6470(PinName mosi, PinName miso, PinName sck, PinName cs, PinName busy); + + void send(uint8_t temp); + uint8_t send_r(uint8_t temp); + void send_bytes(uint8_t temp[], int i); + void send_bytes_r(uint8_t temp[], int i); + void NOP(); + void SetParam(int param, int value); + int GetParam(int param); + void Run(bool dir, int speed); + void StepClock(bool dir); + void Move(bool dir,int n_step );//n_step--22bit + void GoTo(int abs_pos); + void GoTo_dir(bool dir, int abs_pos); + void GoUntill(bool act, bool dir, int speed); + void ReleseSW(bool act,bool dir); + void GoHome(); + void GoMark(); + void ResetPos(); + void ResetDevice(); + void SoftStop(); + void HardStop(); + void SoftHiz(); + void HardHiz(); + void Resets(); + void BusyWait(unsigned int time); + void Step(int dosu); + + + + protected: + + SPI m_spi; + DigitalOut m_cs; + DigitalIn m_busy; + + + +}; +#endif + + + + + + + + + + + + + + +