このライブラリーはテストに作ったものです。近いうちに他の関数を加えた形でアップデートするつもりです。 read_8(int reg)、read_16(int reg) で レジスターregの値を8bit、16bitで読み込み、そのまま返します。受け取り側の変数をint8_t、int16_t で定義すれば正負に分かれた値を得られます。 write_8(int reg,int data)、write_16(int reg,int data)で レジスターregに8bit、16bit 書き込み、成功したら0、失敗したら1を返します。確認はread_8、read_16を用いています。 conect() でデバイスが使用可能かを調べ、見つかれば0、なければ1を返します。 reg_reset() で全てのレジスタの値を0にします。成功したら0、失敗したらその時点で処理を停止し、失敗したレジスタを返します。 レジスタは公式のデータシートに書いてあるものと文字は同じです。 もしかしたらうまく行かない関数があるかもしれません。次のアプデのときに修正予定です。

Dependents:   Nucleo_L3GD20_MMA7361_Kalman

Committer:
hirokimineshita
Date:
Thu Sep 29 08:53:42 2016 +0000
Revision:
8:ed3bb603fe71
Parent:
7:7bacf1cef92f
Child:
9:2989e90f78fe
+a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hirokimineshita 0:f2770227e24c 1 #ifndef _L3GD20_H_20150124_1526_
hirokimineshita 0:f2770227e24c 2 #define _L3GD20_H_20150124_1526_
hirokimineshita 0:f2770227e24c 3
hirokimineshita 1:354deb9168c0 4 #include "binary.h"
hirokimineshita 1:354deb9168c0 5
hirokimineshita 0:f2770227e24c 6 #define WHO_AM_I 0x0F
hirokimineshita 0:f2770227e24c 7 #define CTRL_REG1 0x20
hirokimineshita 0:f2770227e24c 8 #define CTRL_REG2 0x21
hirokimineshita 0:f2770227e24c 9 #define CTRL_REG3 0x22
hirokimineshita 0:f2770227e24c 10 #define CTRL_REG4 0x23
hirokimineshita 0:f2770227e24c 11 #define CTRL_REG5 0x24
hirokimineshita 0:f2770227e24c 12 #define REFERENCE 0x25
hirokimineshita 0:f2770227e24c 13 #define OUT_TEMP 0x26
hirokimineshita 0:f2770227e24c 14 #define STATUS_REG 0x27
hirokimineshita 0:f2770227e24c 15 #define OUT_X_L 0x28
hirokimineshita 0:f2770227e24c 16 #define OUT_X_H 0x29
hirokimineshita 0:f2770227e24c 17 #define OUT_Y_L 0x2A
hirokimineshita 0:f2770227e24c 18 #define OUT_Y_H 0x2B
hirokimineshita 0:f2770227e24c 19 #define OUT_Z_L 0x2C
hirokimineshita 0:f2770227e24c 20 #define OUT_Z_H 0x2D
hirokimineshita 0:f2770227e24c 21 #define FIFO_CTRL_REG 0x2E
hirokimineshita 0:f2770227e24c 22 #define FIFO_SRC_REG 0x2F
hirokimineshita 0:f2770227e24c 23 #define INT1_CFG 0x30
hirokimineshita 0:f2770227e24c 24 #define INT1_SRC 0x31
hirokimineshita 0:f2770227e24c 25 #define INT1_TSH_XH 0x32
hirokimineshita 0:f2770227e24c 26 #define INT1_TSH_XL 0x33
hirokimineshita 0:f2770227e24c 27 #define INT1_TSH_YH 0x34
hirokimineshita 0:f2770227e24c 28 #define INT1_TSH_YL 0x35
hirokimineshita 0:f2770227e24c 29 #define INT1_TSH_ZH 0x36
hirokimineshita 0:f2770227e24c 30 #define INT1_TSH_ZL 0x37
hirokimineshita 0:f2770227e24c 31 #define INT1_DURATION 0x38
hirokimineshita 0:f2770227e24c 32 #define READ 0x80
hirokimineshita 0:f2770227e24c 33 #define WRITE 0x00
hirokimineshita 1:354deb9168c0 34 #define X 0
hirokimineshita 1:354deb9168c0 35 #define Y 2
hirokimineshita 1:354deb9168c0 36 #define Z 4
hirokimineshita 0:f2770227e24c 37
hirokimineshita 8:ed3bb603fe71 38 /** This progrum is to be easy to control L3GD20 sensor\n
hirokimineshita 6:26002aa6f35e 39 * site http://akizukidenshi.com/catalog/g/gK-06779/
hirokimineshita 2:de6dc4af9b75 40 */
hirokimineshita 0:f2770227e24c 41 class l3gd20{
hirokimineshita 0:f2770227e24c 42 private:
hirokimineshita 0:f2770227e24c 43 SPI l3gdev;
hirokimineshita 0:f2770227e24c 44 DigitalOut l3gcs;
hirokimineshita 1:354deb9168c0 45 Serial pcdev;
hirokimineshita 1:354deb9168c0 46 int scale;
hirokimineshita 0:f2770227e24c 47 public:
hirokimineshita 2:de6dc4af9b75 48 /** constracta
hirokimineshita 3:76a16de2531d 49 *
hirokimineshita 8:ed3bb603fe71 50 * use default parm, mosi,miso,sck,cs is set to PB_15-PB_12\n
hirokimineshita 8:ed3bb603fe71 51 * SPI frequency:1000000\n
hirokimineshita 2:de6dc4af9b75 52 * SPI mode:3
hirokimineshita 2:de6dc4af9b75 53 */
hirokimineshita 0:f2770227e24c 54 l3gd20();
hirokimineshita 2:de6dc4af9b75 55
hirokimineshita 2:de6dc4af9b75 56 /** constracta
hirokimineshita 8:ed3bb603fe71 57 * only set frequency parm\n
hirokimineshita 8:ed3bb603fe71 58 * mosi,miso,sck,cs is set to PB_15-PB_12\n
hirokimineshita 2:de6dc4af9b75 59 * SPI mode:3
hirokimineshita 2:de6dc4af9b75 60 * @param fhz SPI frequency
hirokimineshita 2:de6dc4af9b75 61 */
hirokimineshita 0:f2770227e24c 62 l3gd20(int fhz);
hirokimineshita 8:ed3bb603fe71 63
hirokimineshita 8:ed3bb603fe71 64 /** constracta
hirokimineshita 8:ed3bb603fe71 65 * mosi,miso,sck is set to PB_15-PB_13\n
hirokimineshita 8:ed3bb603fe71 66 * SPI mode:3
hirokimineshita 8:ed3bb603fe71 67 * @parm cs SPI's cs pin
hirokimineshita 8:ed3bb603fe71 68 * @param fhz SPI frequency
hirokimineshita 8:ed3bb603fe71 69 */
hirokimineshita 0:f2770227e24c 70 l3gd20(PinName cs,int fhz);
hirokimineshita 2:de6dc4af9b75 71 l3gd20(PinName miso,PinName mosi,PinName sck,PinName cs,int fhz,int mode = 3);
hirokimineshita 0:f2770227e24c 72 int reg_reset();
hirokimineshita 0:f2770227e24c 73 int conect();
hirokimineshita 0:f2770227e24c 74 uint8_t read_8(uint8_t reg);
hirokimineshita 0:f2770227e24c 75 uint16_t read_16(uint8_t reg);
hirokimineshita 0:f2770227e24c 76 int write_8(uint8_t reg,uint8_t data);
hirokimineshita 1:354deb9168c0 77 void s_write_8(uint8_t reg,uint8_t data);
hirokimineshita 0:f2770227e24c 78 int write_16(uint8_t reg,uint16_t data);
hirokimineshita 1:354deb9168c0 79 int get_scale();
hirokimineshita 1:354deb9168c0 80 int set_scale(int dps);
hirokimineshita 1:354deb9168c0 81 int get_temp();
hirokimineshita 1:354deb9168c0 82 int16_t get_rotate_by_bit(int axis);
hirokimineshita 1:354deb9168c0 83 float get_rotate_by_rad(int axis);
hirokimineshita 1:354deb9168c0 84 float get_rotate(int axis);
hirokimineshita 1:354deb9168c0 85 float deg_to_rad(float deg);
hirokimineshita 0:f2770227e24c 86 };
hirokimineshita 0:f2770227e24c 87
hirokimineshita 0:f2770227e24c 88 #endif