ADT7320 temperature sensor.

Dependents:   sscm

Fork of T_adt7320 by wimbeaumont Project

Committer:
wbeaumont
Date:
Sun Oct 05 17:12:21 2014 +0000
Revision:
1:1b9f706b8abc
Parent:
0:e252ae2774e8
Child:
2:186e3c0afcad
dummy init functions added, version class added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wbeaumont 0:e252ae2774e8 1 #include "adt7320.h"
wbeaumont 0:e252ae2774e8 2
wbeaumont 0:e252ae2774e8 3
wbeaumont 0:e252ae2774e8 4 #define CS_ACTIVE 1
wbeaumont 0:e252ae2774e8 5 #define CS_DEACTIVE 0
wbeaumont 0:e252ae2774e8 6
wbeaumont 1:1b9f706b8abc 7 #define ADT7320_SRC_VER "1.13"
wbeaumont 1:1b9f706b8abc 8
wbeaumont 1:1b9f706b8abc 9
wbeaumont 1:1b9f706b8abc 10
wbeaumont 1:1b9f706b8abc 11
wbeaumont 1:1b9f706b8abc 12 adt7320::adt7320(SWSPI *spiinterface ,DigitalOut* chipselect )
wbeaumont 1:1b9f706b8abc 13 :getVersion( ADT7320_HDR_VER ,ADT7320_SRC_VER , __TIME__, __DATE__)
wbeaumont 1:1b9f706b8abc 14 {
wbeaumont 0:e252ae2774e8 15 spi=spiinterface;
wbeaumont 0:e252ae2774e8 16 cs=chipselect;
wbeaumont 0:e252ae2774e8 17 }
wbeaumont 0:e252ae2774e8 18
wbeaumont 0:e252ae2774e8 19 void adt7320::set_spi_mode(u8 nrbyte){
wbeaumont 0:e252ae2774e8 20 spi->format(nrbyte,1);
wbeaumont 0:e252ae2774e8 21 spi->frequency(10000000);
wbeaumont 0:e252ae2774e8 22 }
wbeaumont 0:e252ae2774e8 23
wbeaumont 0:e252ae2774e8 24
wbeaumont 0:e252ae2774e8 25 u8 adt7320::format_cmd( u8 reg, bool rw){
wbeaumont 0:e252ae2774e8 26 u8 cmd=0; ;
wbeaumont 0:e252ae2774e8 27 reg= reg & 0x7;
wbeaumont 0:e252ae2774e8 28 cmd = reg << 3;
wbeaumont 0:e252ae2774e8 29 if ( rw) cmd |= 0x40; // write bit 6
wbeaumont 0:e252ae2774e8 30 return cmd;
wbeaumont 0:e252ae2774e8 31 }
wbeaumont 0:e252ae2774e8 32
wbeaumont 0:e252ae2774e8 33
wbeaumont 0:e252ae2774e8 34
wbeaumont 0:e252ae2774e8 35 u8 adt7320::getR08( u8 reg){
wbeaumont 0:e252ae2774e8 36 set_spi_mode(16);
wbeaumont 0:e252ae2774e8 37 u16 data=0x00FF;
wbeaumont 0:e252ae2774e8 38 u16 cmd = (u16) format_cmd(reg,true);
wbeaumont 0:e252ae2774e8 39 cmd = cmd <<8;
wbeaumont 0:e252ae2774e8 40 data= data | cmd;
wbeaumont 0:e252ae2774e8 41 cs->write(CS_ACTIVE);
wbeaumont 0:e252ae2774e8 42 data= spi->write(data);
wbeaumont 0:e252ae2774e8 43 cs->write(CS_DEACTIVE);
wbeaumont 0:e252ae2774e8 44 return (u8)(0x00FF &data);
wbeaumont 0:e252ae2774e8 45
wbeaumont 0:e252ae2774e8 46 }
wbeaumont 0:e252ae2774e8 47
wbeaumont 1:1b9f706b8abc 48
wbeaumont 1:1b9f706b8abc 49 void adt7320::setR08( u8 reg, u8 datain){
wbeaumont 1:1b9f706b8abc 50 set_spi_mode(16);
wbeaumont 1:1b9f706b8abc 51 u16 data=0x0000;
wbeaumont 1:1b9f706b8abc 52 u16 cmd = (u16) format_cmd(reg,false);
wbeaumont 1:1b9f706b8abc 53 cmd = cmd <<8;
wbeaumont 1:1b9f706b8abc 54 data= datain | cmd;
wbeaumont 1:1b9f706b8abc 55 cs->write(CS_ACTIVE);
wbeaumont 1:1b9f706b8abc 56 data= spi->write(data);
wbeaumont 1:1b9f706b8abc 57 cs->write(CS_DEACTIVE);
wbeaumont 1:1b9f706b8abc 58 }
wbeaumont 1:1b9f706b8abc 59
wbeaumont 0:e252ae2774e8 60 u16 adt7320::getR16( u8 reg){
wbeaumont 0:e252ae2774e8 61 set_spi_mode(24);
wbeaumont 0:e252ae2774e8 62 u32 data=0x0000FFFF;
wbeaumont 0:e252ae2774e8 63 u32 cmd =(u32) format_cmd(reg,true);
wbeaumont 0:e252ae2774e8 64 cmd = cmd <<16;
wbeaumont 0:e252ae2774e8 65 data= data | cmd;
wbeaumont 0:e252ae2774e8 66 cs->write(CS_ACTIVE);
wbeaumont 0:e252ae2774e8 67 data= spi->write(data);
wbeaumont 0:e252ae2774e8 68 cs->write(CS_DEACTIVE);
wbeaumont 0:e252ae2774e8 69 return (u16)(0x0000FFFF &data);
wbeaumont 0:e252ae2774e8 70 }
wbeaumont 0:e252ae2774e8 71
wbeaumont 1:1b9f706b8abc 72 void adt7320::setR16( u8 reg,u16 datain){
wbeaumont 1:1b9f706b8abc 73 set_spi_mode(24);
wbeaumont 1:1b9f706b8abc 74 u32 data=0x00000000;
wbeaumont 1:1b9f706b8abc 75 u32 cmd =(u32) format_cmd(reg,false);
wbeaumont 1:1b9f706b8abc 76 cmd = cmd <<16;
wbeaumont 1:1b9f706b8abc 77 data= datain | cmd;
wbeaumont 1:1b9f706b8abc 78 cs->write(CS_ACTIVE);
wbeaumont 1:1b9f706b8abc 79 data= spi->write(data);
wbeaumont 1:1b9f706b8abc 80 cs->write(CS_DEACTIVE);
wbeaumont 1:1b9f706b8abc 81 }
wbeaumont 1:1b9f706b8abc 82
wbeaumont 1:1b9f706b8abc 83
wbeaumont 0:e252ae2774e8 84
wbeaumont 0:e252ae2774e8 85 u8 adt7320::getId(){
wbeaumont 0:e252ae2774e8 86 return getR08(0x03);
wbeaumont 0:e252ae2774e8 87 }
wbeaumont 0:e252ae2774e8 88
wbeaumont 0:e252ae2774e8 89 u16 adt7320::get_TcritSP(){
wbeaumont 0:e252ae2774e8 90 return getR16(0x04);
wbeaumont 0:e252ae2774e8 91 }
wbeaumont 0:e252ae2774e8 92
wbeaumont 1:1b9f706b8abc 93 void adt7320::set_TcritSP(u16 tcrit){
wbeaumont 1:1b9f706b8abc 94
wbeaumont 1:1b9f706b8abc 95 setR16(0x04,tcrit );
wbeaumont 1:1b9f706b8abc 96 }
wbeaumont 1:1b9f706b8abc 97
wbeaumont 1:1b9f706b8abc 98
wbeaumont 1:1b9f706b8abc 99
wbeaumont 0:e252ae2774e8 100 u16 adt7320::get_T(){
wbeaumont 0:e252ae2774e8 101 return getR16(0x02);
wbeaumont 0:e252ae2774e8 102 }
wbeaumont 0:e252ae2774e8 103
wbeaumont 1:1b9f706b8abc 104
wbeaumont 1:1b9f706b8abc 105 void adt7320::init1(){}
wbeaumont 1:1b9f706b8abc 106 void adt7320::init2(){}
wbeaumont 1:1b9f706b8abc 107
wbeaumont 1:1b9f706b8abc 108
wbeaumont 1:1b9f706b8abc 109