Skip to content

Latest commit

 

History

History
278 lines (195 loc) · 10.2 KB

README_ja.md

File metadata and controls

278 lines (195 loc) · 10.2 KB

English | 简体中文 | 繁體中文 | 日本語 | Deutsch | 한국어

LibDriver ADXL345

MISRA API License

ADXL345は、アナログ・デバイセズが発売した小型、薄型、超低電力の3軸加速度計です。最大±16gの高分解能(13ビット)測定が可能です。デジタル出力データは16ビット2の補数としてフォーマットされ、SPI(3線式または4線式)またはI2Cデジタルインターフェースを介してアクセスできます。ADXL345はモバイルデバイスアプリケーションに最適です。傾斜検知アプリケーションでの静的重力加速度、およびモーションや衝撃から生じる動的加速度を測定します。その高分解能(3.9mg / LSB)により、1.0°未満の傾斜変化の測定が可能です。いくつかの特別な検知機能が提供されています。活動および非活動の検知は、任意の軸の加速度をユーザーが設定したしきい値と比較することにより、動きの有無を検出します。タップ検知は、任意の方向のシングルタップとダブルタップを検出します。自由落下検知は、デバイスが落下しているかどうかを検出します。これらの機能は、2つの割り込み出力ピンのいずれかに個別にマッピングできます.32レベルの先入れ先出し(FIFO)バッファを備えた統合メモリ管理システムを使用してデータを保存し、ホストプロセッサのアクティビティを最小限に抑え、システム全体の消費電力を削減できます。低電力モードは、非常に低い電力消費でしきい値検知とアクティブ加速度測定を備えたインテリジェントなモーションベースの電力管理を可能にします。

LibDriver ADXL345は、LibDriverによって起動されたadxl345の全機能ドライバーです。加速度の読み取り、加速度FIFOモードの取得、自由落下の検出、アクティビティ/非アクティブ状態の検出、タップの検出などの機能を提供します。 LibDriverはMISRAに準拠しています。

目次

説明

/ srcディレクトリには、LibDriver ADXL345のソースファイルが含まれています。

/ interfaceディレクトリには、LibDriver ADXL345用のプラットフォームに依存しないIIC, SPIバステンプレートが含まれています。

/ testディレクトリには、チップの必要な機能を簡単にテストできるLibDriver ADXL345ドライバーテストプログラムが含まれています。

/ exampleディレクトリには、LibDriver ADXL345プログラミング例が含まれています。

/ docディレクトリには、LibDriver ADXL345オフラインドキュメントが含まれています。

/ datasheetディレクトリには、ADXL345データシートが含まれています。

/ projectディレクトリには、一般的に使用されるLinuxおよびマイクロコントローラー開発ボードのプロジェクトサンプルが含まれています。 すべてのプロジェクトは、デバッグ方法としてシェルスクリプトを使用しています。詳細については、各プロジェクトのREADME.mdを参照してください。

/ misraはLibDriver misraコードスキャン結果を含む。

インストール

/ interfaceディレクトリにあるプラットフォームに依存しないIIC, SPIバステンプレートを参照して、指定したプラットフォームのIIC, SPIバスドライバを完成させます。

/src ディレクトリ、プラットフォームのインターフェイス ドライバー、および独自のドライバーをプロジェクトに追加します。デフォルトのサンプル ドライバーを使用する場合は、/example ディレクトリをプロジェクトに追加します。

使用

/example ディレクトリ内のサンプルを参照して、独自のドライバーを完成させることができます。

/src ディレクトリ、プラットフォームのインターフェイス ドライバー、および独自のドライバーをプロジェクトに追加します。デフォルトのサンプル ドライバーを使用する場合は、/example ディレクトリをプロジェクトに追加します。

example basic

#include "driver_adxl345_basic.h"

uint8_t res;
uint8_t i;
float g[3];

res = adxl345_basic_init(ADXL345_INTERFACE_IIC, ADXL345_ADDRESS_ALT_0);                
if (res != 0)
{
    return 1;
}

...
    
for (i = 0; i < 3; i++)
{
    res = adxl345_basic_read((float *)g);
    if (res != 0)
    {
        (void)adxl345_basic_deinit();
        
        return 1;
    }
    adxl345_interface_debug_print("adxl345: x is %0.3f.\n", g[0]);
    adxl345_interface_debug_print("adxl345: y is %0.3f.\n", g[1]);
    adxl345_interface_debug_print("adxl345: z is %0.3f.\n", g[2]);
    adxl345_interface_delay_ms(1000);
    
    ...
        
}

...
    
(void)adxl345_basic_deinit();

return 0;

example fifo

#include "driver_adxl345_fifo.h"

uint8_t res;
float g[3];

void fifo_callback(float (*g)[3], uint16_t len)
{
    ...
    
    return 0;
}

res = gpio_interrupt_init(adxl345_fifo_irq_handler);
if (res != 0)
{
    return 1;
}
res = adxl345_fifo_init(ADXL345_INTERFACE_IIC, ADXL345_ADDRESS_ALT_0, fifo_callback);
if (res != 0)
{
    (void)gpio_interrupt_deinit();

    return 1;
}

while (1)
{
    adxl345_interface_delay_ms(10);
    
    ...    
}
...
    
(void)gpio_interrupt_deinit();
(void)adxl345_fifo_deinit();

return 0;

example interrupt

#include "driver_adxl345_interrupt.h"

uint8_t res;

void interrupt_callback(uint8_t type)
{
    switch (type)
    {
        case ADXL345_INTERRUPT_DATA_READY :
        {
            ...
                
            break;
        }
        case ADXL345_INTERRUPT_SINGLE_TAP :
        {
            adxl345_interface_debug_print("adxl345: irq single tap.\n");
         
            ...
                
            break;
        }
        case ADXL345_INTERRUPT_DOUBLE_TAP :
        {
            adxl345_interface_debug_print("adxl345: irq double tap.\n");
            
            ...
                
            break;
        }
        case ADXL345_INTERRUPT_ACTIVITY :
        {
            adxl345_interface_debug_print("adxl345: irq activity.\n");
            
            ...
                
            break;
        }
        case ADXL345_INTERRUPT_INACTIVITY :
        {
            adxl345_interface_debug_print("adxl345: irq inactivity.\n");
            
            ...
                
            break;
        }
        case ADXL345_INTERRUPT_FREE_FALL :
        {
            adxl345_interface_debug_print("adxl345: irq free fall.\n");
            
            ...
                
            break;
        }
        case ADXL345_INTERRUPT_OVERRUN :
        {
            ...
                
            break;
        }
        default :
        {
            ...
                
            break;
        }
    }
}

res = gpio_interrupt_init(adxl345_interrupt_irq_handler);
if (res != 0)
{
    return 1;
}
res = adxl345_interrupt_init(ADXL345_INTERFACE_SPI, ADXL345_ADDRESS_ALT_0,
                             interrupt_callback,
                             ADXL345_BOOL_TRUE 
                             ADXL345_BOOL_TRUE,
                             ADXL345_BOOL_TRUE,
                             ADXL345_BOOL_TRUE
                            );
if (res != 0)
{
    (void)gpio_interrupt_deinit();

    return 1;
}

...
    
while (1)
{
    if (adxl345_interrupt_server() != 0)
    {
        return 1;
    }
    adxl345_interface_delay_ms(10);
    
    ...
}

...
    
(void)gpio_interrupt_deinit();
(void)adxl345_interrupt_deinit();

return 0;

ドキュメント

オンラインドキュメント: https://www.libdriver.com/docs/adxl345/index.html

オフラインドキュメント: /doc/html/index.html。

貢献

CONTRIBUTING.mdを参照してください。

著作権

著作権(c)2015-今 LibDriver 全著作権所有

MITライセンス(MIT)

このソフトウェアおよび関連するドキュメントファイル(「ソフトウェア」)のコピーを取得した人は、無制限の使用、複製、変更、組み込み、公開、配布、サブライセンスを含む、ソフトウェアを処分する権利を制限なく付与されます。ソフトウェアのライセンスおよび/またはコピーの販売、および上記のようにソフトウェアが配布された人の権利のサブライセンスは、次の条件に従うものとします。

上記の著作権表示およびこの許可通知は、このソフトウェアのすべてのコピーまたは実体に含まれるものとします。

このソフトウェアは「現状有姿」で提供され、商品性、特定目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示または黙示を問わず、いかなる種類の保証もありません。 いかなる場合も、作者または著作権所有者は、契約、不法行為、またはその他の方法で、本ソフトウェアおよび本ソフトウェアの使用またはその他の廃棄に起因または関連して、請求、損害、またはその他の責任を負わないものとします。

連絡して

お問い合わせくださいlishifenging@outlook.com