MAX31855 Cold-Junction Compensated Thermocouple-to-Digital Converter

Committer:
mederic
Date:
Wed Jul 29 13:11:30 2015 +0000
Revision:
2:c4d43aacb666
Parent:
1:aa96d283eead
read spi 8bit mode (to be complient with all platform)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mederic 0:cd9dd4f2c484 1 #include "MAX31855.h"
mederic 0:cd9dd4f2c484 2
mederic 0:cd9dd4f2c484 3 //***********************************/************************************
mederic 0:cd9dd4f2c484 4 // Constructors //
mederic 0:cd9dd4f2c484 5 //***********************************/************************************
mederic 0:cd9dd4f2c484 6 MAX31855::MAX31855(PinName mosi, PinName miso, PinName sck, PinName ncs) :_spi(mosi,miso,sck), _ncs(ncs)
mederic 0:cd9dd4f2c484 7 {
mederic 0:cd9dd4f2c484 8 _ncs = 1; //CS high
mederic 2:c4d43aacb666 9 _spi.format(8,0);
mederic 0:cd9dd4f2c484 10 _spi.frequency(1000000);
mederic 0:cd9dd4f2c484 11 }
mederic 0:cd9dd4f2c484 12
mederic 1:aa96d283eead 13 MAX31855::MAX31855(SPI& spi, PinName ncs) :_spi(spi), _ncs(ncs)
mederic 1:aa96d283eead 14 {
mederic 1:aa96d283eead 15 _ncs = 1; //CS high
mederic 2:c4d43aacb666 16 _spi.format(8,0);
mederic 1:aa96d283eead 17 _spi.frequency(1000000);
mederic 1:aa96d283eead 18 }
mederic 1:aa96d283eead 19
mederic 0:cd9dd4f2c484 20 //***********************************/************************************
mederic 0:cd9dd4f2c484 21 // Get Set //
mederic 0:cd9dd4f2c484 22 //***********************************/************************************
mederic 0:cd9dd4f2c484 23 bool MAX31855::opened(void)
mederic 0:cd9dd4f2c484 24 {
mederic 0:cd9dd4f2c484 25 read();
mederic 0:cd9dd4f2c484 26 return _oc;
mederic 0:cd9dd4f2c484 27 }
mederic 0:cd9dd4f2c484 28
mederic 0:cd9dd4f2c484 29 bool MAX31855::fault(void)
mederic 0:cd9dd4f2c484 30 {
mederic 0:cd9dd4f2c484 31 read();
mederic 0:cd9dd4f2c484 32 return _fault;
mederic 0:cd9dd4f2c484 33 }
mederic 0:cd9dd4f2c484 34
mederic 0:cd9dd4f2c484 35 bool MAX31855::scToVcc(void)
mederic 0:cd9dd4f2c484 36 {
mederic 0:cd9dd4f2c484 37 read();
mederic 0:cd9dd4f2c484 38 return _scv;
mederic 0:cd9dd4f2c484 39 }
mederic 0:cd9dd4f2c484 40
mederic 0:cd9dd4f2c484 41 bool MAX31855::scToGnd(void)
mederic 0:cd9dd4f2c484 42 {
mederic 0:cd9dd4f2c484 43 read();
mederic 0:cd9dd4f2c484 44 return _scg;
mederic 0:cd9dd4f2c484 45 }
mederic 0:cd9dd4f2c484 46
mederic 0:cd9dd4f2c484 47
mederic 0:cd9dd4f2c484 48
mederic 0:cd9dd4f2c484 49 //***********************************/************************************
mederic 0:cd9dd4f2c484 50 // Public Methods //
mederic 0:cd9dd4f2c484 51 //***********************************/************************************
mederic 0:cd9dd4f2c484 52 float MAX31855::thermocouple(void)
mederic 0:cd9dd4f2c484 53 {
mederic 0:cd9dd4f2c484 54 read();
mederic 0:cd9dd4f2c484 55 return _t;
mederic 0:cd9dd4f2c484 56 }
mederic 0:cd9dd4f2c484 57
mederic 0:cd9dd4f2c484 58 float MAX31855::chip(void)
mederic 0:cd9dd4f2c484 59 {
mederic 0:cd9dd4f2c484 60 read();
mederic 0:cd9dd4f2c484 61 return _chip_t;
mederic 0:cd9dd4f2c484 62 }
mederic 0:cd9dd4f2c484 63
mederic 0:cd9dd4f2c484 64 //***********************************/************************************
mederic 0:cd9dd4f2c484 65 // Protected Methods //
mederic 0:cd9dd4f2c484 66 //***********************************/************************************
mederic 0:cd9dd4f2c484 67 void MAX31855::read(void)
mederic 0:cd9dd4f2c484 68 {
mederic 0:cd9dd4f2c484 69 _ncs = 0;
mederic 2:c4d43aacb666 70 unsigned short high = ((_spi.write(0)<<8)&0xff00) + ((_spi.write(0)&0x00ff));
mederic 2:c4d43aacb666 71 unsigned short low = ((_spi.write(0)<<8)&0xff00) + ((_spi.write(0)&0x00ff));
mederic 0:cd9dd4f2c484 72 _ncs = 1;
mederic 0:cd9dd4f2c484 73
mederic 0:cd9dd4f2c484 74 _t = (high>>2)/4.0;
mederic 0:cd9dd4f2c484 75 _chip_t = (low>>4)/16.0;
mederic 0:cd9dd4f2c484 76 _fault = high&0x01;
mederic 0:cd9dd4f2c484 77 _scv = low&0x04;
mederic 0:cd9dd4f2c484 78 _scg = low&0x02;
mederic 0:cd9dd4f2c484 79 _oc = low&0x01;
mederic 0:cd9dd4f2c484 80
mederic 0:cd9dd4f2c484 81 }