This version has been verified for basic register R/W. No calibration has been added yet. See example main code at https://os.mbed.com/users/laserdad/code/MAX11410_testing/
Dependents: MAX11410_testing MAX11410_test MAX11410-test
MAX11410.cpp
- Committer:
- laserdad
- Date:
- 2018-01-03
- Revision:
- 1:266f681fea17
- Parent:
- 0:b90ccc530cb1
- Child:
- 2:4784f0a3b76d
File content as of revision 1:266f681fea17:
#include "MAX11410.h" #include "mbed.h" extern Serial pc; //write functions MAX11410::MAX11410(SPI *spi_itf, DigitalOut *cs_pin) { spi = spi_itf; cs = cs_pin; *cs = 1; // Assert CS high wait_us(5); //POR, wake it up, turn on buffer, etc. }; void MAX11410::reset() {93+ write8bitReg(REG_PD, MODE_RESET); } bool MAX11410::interrupt() { spi->format(8,0); *cs = 0; bool result = spi->write(_READ(0)); *cs =1; return !result; //low = interrupt } void MAX11410::write8bitReg(char regAddr, char bits2write) { spi->format(8,0); *cs = 0; spi->write( _WRITE(regAddr) ); spi->write( bits2write ); *cs = 1; } void MAX11410::write24bitReg(char regAddr, uint32_t bits2write) { spi->format(16,0); uint16_t write_buffer[2]; write_buffer[0] = (_WRITE(regAddr) << 8) | (bits2write>>16); write_buffer[1] = (uint16_t) bits2write; *cs = 0; spi->write(write_buffer[0]); spi->write(write_buffer[1]); *cs = 1; } char MAX11410::read8bits(char regAddr, bool *int_status) { //the interrupt status (INTB) is the MISO value during the register write, 0 = interrupt is assert spi->format(8,0); *int_status = spi->write(_READ(regAddr)); return spi->write(0x00); } uint32_t MAX11410::read24bits(char regAddr, bool *int_status) { //the interrupt status is the MISO value during the register write uint16_t read_buffer[2]; spi->format(16,0); *cs = 0; read_buffer[0] = spi->write( (uint16_t) (_READ(regAddr)<<8) ); read_buffer[1] = spi->write( 0x0000); *cs = 1; *int_status = (bool) read_buffer[0]>>8; return (read_buffer[0]<<16) | read_buffer[1]; } void MAX11410::calOffset() { } void MAX11410::calGain() { } uint32_t MAX11410::readStatus(bool *int_status) { return read24bits(REG_STATUS,int_status); }