このライブラリーはテストに作ったものです。近いうちに他の関数を加えた形でアップデートするつもりです。 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

Revision:
0:f2770227e24c
Child:
1:354deb9168c0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/l3gd20.h	Wed Jan 28 05:16:22 2015 +0000
@@ -0,0 +1,52 @@
+#ifndef _L3GD20_H_20150124_1526_
+#define _L3GD20_H_20150124_1526_
+
+#define WHO_AM_I         0x0F
+#define CTRL_REG1        0x20
+#define CTRL_REG2        0x21
+#define CTRL_REG3        0x22
+#define CTRL_REG4        0x23
+#define CTRL_REG5        0x24
+#define REFERENCE        0x25
+#define OUT_TEMP         0x26
+#define STATUS_REG       0x27
+#define OUT_X_L          0x28
+#define OUT_X_H          0x29
+#define OUT_Y_L          0x2A
+#define OUT_Y_H          0x2B
+#define OUT_Z_L          0x2C
+#define OUT_Z_H          0x2D
+#define FIFO_CTRL_REG    0x2E
+#define FIFO_SRC_REG     0x2F
+#define INT1_CFG         0x30
+#define INT1_SRC         0x31
+#define INT1_TSH_XH      0x32
+#define INT1_TSH_XL      0x33
+#define INT1_TSH_YH      0x34
+#define INT1_TSH_YL      0x35
+#define INT1_TSH_ZH      0x36
+#define INT1_TSH_ZL      0x37
+#define INT1_DURATION    0x38
+#define READ             0x80
+#define WRITE            0x00
+
+
+class l3gd20{
+private:
+    SPI l3gdev;
+    DigitalOut l3gcs;
+public:
+    l3gd20();
+    l3gd20(int fhz);
+    l3gd20(PinName cs,int fhz);
+    l3gd20(PinName miso,PinName mosi,PinName sck,PinName cs,int fhz);
+    l3gd20(PinName miso,PinName mosi,PinName sck,PinName cs,int fhz,int mode);
+    int reg_reset();
+    int conect();
+    uint8_t read_8(uint8_t reg);
+    uint16_t read_16(uint8_t reg);
+    int write_8(uint8_t reg,uint8_t data);
+    int write_16(uint8_t reg,uint16_t data);
+};
+
+#endif
\ No newline at end of file