diff options
Diffstat (limited to 'testhal/STM32/I2C/max1236.c')
-rw-r--r-- | testhal/STM32/I2C/max1236.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/testhal/STM32/I2C/max1236.c b/testhal/STM32/I2C/max1236.c index 3e3dbd0c1..09e2c8b35 100644 --- a/testhal/STM32/I2C/max1236.c +++ b/testhal/STM32/I2C/max1236.c @@ -10,6 +10,10 @@ #include "max1236.h"
+
+#define max1236_addr 0b0110100
+
+
/* Data buffers */
static i2cblock_t max1236_rx_data[MAX1236_RX_DEPTH];
static i2cblock_t max1236_tx_data[MAX1236_TX_DEPTH];
@@ -31,10 +35,6 @@ static void i2c_max1236_cb(I2CDriver *i2cp, const I2CSlaveConfig *i2cscfg){ (void)*i2cp;
(void)*i2cscfg;
/* get ADC data */
- ch1 = ((max1236_rx_data[0] & 0xF) << 8) + max1236_rx_data[1];
- ch2 = ((max1236_rx_data[2] & 0xF) << 8) + max1236_rx_data[3];
- ch3 = ((max1236_rx_data[4] & 0xF) << 8) + max1236_rx_data[5];
- ch4 = ((max1236_rx_data[6] & 0xF) << 8) + max1236_rx_data[7];
}
@@ -45,7 +45,6 @@ static const I2CSlaveConfig max1236 = { i2c_max1236_error_cb,
};
-#define max1236_addr 0b0110100
/**
* Initilization routine. See datasheet on page 13 to understand
@@ -53,32 +52,24 @@ static const I2CSlaveConfig max1236 = { */
void init_max1236(void){
/* this data we must send via IC to setup ADC */
-#define RXBYTES 0
-#define TXBYTES 2
max1236_tx_data[0] = 0b10000011; /* config register content. Consult datasheet */
max1236_tx_data[1] = 0b00000111; /* config register content. Consult datasheet */
-
/* transmit out 2 bytes */
i2cAcquireBus(&I2CD2);
- i2cMasterTransmit(&I2CD2, &max1236, max1236_addr, max1236_tx_data, TXBYTES, max1236_rx_data, RXBYTES);
- while(I2CD2.id_state != I2C_READY){
- chThdSleepMilliseconds(1);
- }
+ i2cMasterTransmit(&I2CD2, &max1236, max1236_addr, max1236_tx_data, 2, max1236_rx_data, 0);
i2cReleaseBus(&I2CD2);
-#undef RXBYTES
-#undef TXBYTES
}
/* Now simply read 8 bytes to get all 4 ADC channels */
void read_max1236(void){
-#define TXBYTES 0
-#define RXBYTES 8
-
i2cAcquireBus(&I2CD2);
- i2cMasterReceive(&I2CD2, &max1236, max1236_addr, max1236_rx_data, RXBYTES);
+ i2cMasterReceive(&I2CD2, &max1236, max1236_addr, max1236_rx_data, 8);
i2cReleaseBus(&I2CD2);
-#undef RXBYTES
-#undef TXBYTES
+
+ ch1 = ((max1236_rx_data[0] & 0xF) << 8) + max1236_rx_data[1];
+ ch2 = ((max1236_rx_data[2] & 0xF) << 8) + max1236_rx_data[3];
+ ch3 = ((max1236_rx_data[4] & 0xF) << 8) + max1236_rx_data[5];
+ ch4 = ((max1236_rx_data[6] & 0xF) << 8) + max1236_rx_data[7];
}
|