2013年3月31日日曜日

気圧センサMPL115A1を使う


KL25Zのピン配置図には載ってないが、SPIライブラリにはコードのあるSPI_1のピンで使ってみました。
ピン配置図:http://mbed.org/handbook/mbed-FRDM-KL25Z
mbed / libraries / mbed / vendor / Freescale / capi / spi_api.c
SPISPI_0SPI_0SPI_1
mosi PTD2 PTC6 PTE1
miso PTD3 PTC7 PTE3
sclk PTD1 PTC5 PTE2
ssel PTD0 PTC4 PTE4

mbed用のMPL115A1ライブラリは既にありました。
http://mbed.org/users/mk/code/MPL115A1/
MPL115A1のデータシート
http://www.freescale.com/files/sensors/doc/data_sheet/MPL115A1.pdf
http://www.freescale.com/files/sensors/doc/app_note/AN3785.pdf

レジスタ値だけを読み出すテストプログラム。

#include "mbed.h"
#include "mbed_debug.h"

#if defined(TARGET_KL25Z)
SPI spi(PTE1,PTE3,PTE2); // SPI_1
DigitalOut cs(PTE4);
#endif

int main()
{
    cs = 1;
    
    debug(" Read Coefficient(a0,b1,b2,c12)\n");
    cs = 0;
    for(int addr = 0x04; addr <= 0x0b; addr++) {
        spi.write((addr<<1)|0x80);
        uint8_t data = spi.write(0x00);
        debug("%02x: %02x\n", addr, data);
    }
    spi.write(0x00);
    cs = 1;

    while(1) {
        debug("Start Conversion\n");
        cs = 0;
        spi.write(0x12<<1);
        spi.write(0x00);
        cs = 1;
        wait_ms(3); //3ms delay
        debug("Read Results(Padc,Tadc)\n");
        cs = 0;
        for(int addr = 0x00; addr <= 0x03; addr++) {
            spi.write((addr<<1)|0x80);
            uint8_t data = spi.write(0x00);
            debug("%02x: %02x\n", addr, data);
        }
        spi.write(0x00);
        cs = 1;

        wait_ms(5*1000);
    }
}


(2013/3/31)
---

0 件のコメント: