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