interface for the temperature sensor chip adt7320, with sw SPI interface
adt7320.cpp
- Committer:
- wbeaumont
- Date:
- 2014-10-02
- Revision:
- 0:e252ae2774e8
- Child:
- 1:1b9f706b8abc
File content as of revision 0:e252ae2774e8:
#include "adt7320.h" #define CS_ACTIVE 1 #define CS_DEACTIVE 0 adt7320::adt7320(SWSPI *spiinterface ,DigitalOut* chipselect ){ spi=spiinterface; cs=chipselect; } void adt7320::set_spi_mode(u8 nrbyte){ spi->format(nrbyte,1); spi->frequency(10000000); } u8 adt7320::format_cmd( u8 reg, bool rw){ u8 cmd=0; ; reg= reg & 0x7; cmd = reg << 3; if ( rw) cmd |= 0x40; // write bit 6 return cmd; } u8 adt7320::getR08( u8 reg){ set_spi_mode(16); u16 data=0x00FF; u16 cmd = (u16) format_cmd(reg,true); cmd = cmd <<8; data= data | cmd; cs->write(CS_ACTIVE); data= spi->write(data); cs->write(CS_DEACTIVE); return (u8)(0x00FF &data); } u16 adt7320::getR16( u8 reg){ set_spi_mode(24); u32 data=0x0000FFFF; u32 cmd =(u32) format_cmd(reg,true); cmd = cmd <<16; data= data | cmd; cs->write(CS_ACTIVE); data= spi->write(data); cs->write(CS_DEACTIVE); return (u16)(0x0000FFFF &data); } u8 adt7320::getId(){ return getR08(0x03); } u16 adt7320::get_TcritSP(){ return getR16(0x04); } u16 adt7320::get_T(){ return getR16(0x02); }