SPI 接続の温度センサ ADT7310 用のライブラリ. Library for temperature sensor ADT7310 connected using SPI interface.

Dependents:   Demo_ADT7310

Committer:
MikamiUitOpen
Date:
Sat Oct 28 14:51:32 2017 +0000
Revision:
1:38a276440674
Parent:
0:6890e1214ea6
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:6890e1214ea6 1 //--------------------------------------------------------------
MikamiUitOpen 1:38a276440674 2 // Class for ADT7310 on one-shot mode
MikamiUitOpen 0:6890e1214ea6 3 // Default: 13-bit resolution
MikamiUitOpen 1:38a276440674 4 // 2017/10/28, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:6890e1214ea6 5 //--------------------------------------------------------------
MikamiUitOpen 0:6890e1214ea6 6
MikamiUitOpen 0:6890e1214ea6 7 #include "ADT7310.hpp"
MikamiUitOpen 0:6890e1214ea6 8
MikamiUitOpen 0:6890e1214ea6 9 namespace Mikami
MikamiUitOpen 0:6890e1214ea6 10 {
MikamiUitOpen 0:6890e1214ea6 11 // Constructor
MikamiUitOpen 0:6890e1214ea6 12 ADT7310::ADT7310(PinName ss,
MikamiUitOpen 0:6890e1214ea6 13 PinName mosi, PinName miso, PinName sck)
MikamiUitOpen 0:6890e1214ea6 14 : ss_(ss, 1), spi_(mosi, miso, sck)
MikamiUitOpen 0:6890e1214ea6 15 {
MikamiUitOpen 0:6890e1214ea6 16 Reset();
MikamiUitOpen 0:6890e1214ea6 17 spi_.format(8, 3); // mode: 8 bits, POL = 1, PHA = 1
MikamiUitOpen 1:38a276440674 18 SetConfigReg(0x00); // Clear configuration register.
MikamiUitOpen 0:6890e1214ea6 19 }
MikamiUitOpen 0:6890e1214ea6 20
MikamiUitOpen 0:6890e1214ea6 21 // Software reset
MikamiUitOpen 0:6890e1214ea6 22 void ADT7310::Reset()
MikamiUitOpen 0:6890e1214ea6 23 {
MikamiUitOpen 0:6890e1214ea6 24 Select();
MikamiUitOpen 0:6890e1214ea6 25 for (int n=0; n<4; n++) SendData(0xFF);
MikamiUitOpen 0:6890e1214ea6 26 Deselect();
MikamiUitOpen 0:6890e1214ea6 27 wait_us(500);
MikamiUitOpen 0:6890e1214ea6 28 }
MikamiUitOpen 0:6890e1214ea6 29
MikamiUitOpen 0:6890e1214ea6 30 // Set configuration register
MikamiUitOpen 0:6890e1214ea6 31 void ADT7310::SetConfigReg(uint8_t value)
MikamiUitOpen 0:6890e1214ea6 32 {
MikamiUitOpen 0:6890e1214ea6 33 Select();
MikamiUitOpen 0:6890e1214ea6 34 SendWrite(CONFIG); // for write to config. reg.
MikamiUitOpen 0:6890e1214ea6 35 SendData(value);
MikamiUitOpen 0:6890e1214ea6 36 Deselect();
MikamiUitOpen 0:6890e1214ea6 37 }
MikamiUitOpen 0:6890e1214ea6 38
MikamiUitOpen 0:6890e1214ea6 39 // Set resolution
MikamiUitOpen 0:6890e1214ea6 40 void ADT7310::SetResolution16(bool res)
MikamiUitOpen 0:6890e1214ea6 41 {
MikamiUitOpen 0:6890e1214ea6 42 uint8_t config = GetConfigReg() & 0x7f;
MikamiUitOpen 0:6890e1214ea6 43 if (res) SetConfigReg(config | 0x80);
MikamiUitOpen 0:6890e1214ea6 44 else SetConfigReg(config);
MikamiUitOpen 0:6890e1214ea6 45 }
MikamiUitOpen 0:6890e1214ea6 46
MikamiUitOpen 0:6890e1214ea6 47 // Get specified register
MikamiUitOpen 0:6890e1214ea6 48 uint8_t ADT7310::GetReg(Reg myReg)
MikamiUitOpen 0:6890e1214ea6 49 {
MikamiUitOpen 0:6890e1214ea6 50 Select();
MikamiUitOpen 0:6890e1214ea6 51 SendRead(myReg);
MikamiUitOpen 0:6890e1214ea6 52 uint8_t value = SendData(0x00);
MikamiUitOpen 0:6890e1214ea6 53 Deselect();
MikamiUitOpen 0:6890e1214ea6 54 return value;
MikamiUitOpen 0:6890e1214ea6 55 }
MikamiUitOpen 0:6890e1214ea6 56
MikamiUitOpen 0:6890e1214ea6 57 // Read data and translate to temperature
MikamiUitOpen 0:6890e1214ea6 58 float ADT7310::Read()
MikamiUitOpen 0:6890e1214ea6 59 {
MikamiUitOpen 0:6890e1214ea6 60 while ((GetStatusReg() & 0x80) != 0x00) {}
MikamiUitOpen 0:6890e1214ea6 61
MikamiUitOpen 0:6890e1214ea6 62 Select();
MikamiUitOpen 0:6890e1214ea6 63 SendRead(DATA);
MikamiUitOpen 0:6890e1214ea6 64 int16_t data = SendData() << 8;
MikamiUitOpen 0:6890e1214ea6 65 data |= SendData();
MikamiUitOpen 0:6890e1214ea6 66 Deselect();
MikamiUitOpen 0:6890e1214ea6 67
MikamiUitOpen 0:6890e1214ea6 68 uint8_t config = GetConfigReg() & 0x80;
MikamiUitOpen 1:38a276440674 69 SetConfigReg(0x20 | config); // One-shot mode, Start conversion
MikamiUitOpen 0:6890e1214ea6 70
MikamiUitOpen 0:6890e1214ea6 71 return data/128.0f;
MikamiUitOpen 0:6890e1214ea6 72 }
MikamiUitOpen 0:6890e1214ea6 73 }
MikamiUitOpen 1:38a276440674 74