TTS/Core/Src/HTPA_32x32d.c

57 lines
1.9 KiB
C

/*
* HTPA_32x32d.c
*
* Created on: Mar 24, 2023
* Author: Getac
*/
#include "main.h"
#include "HTPA_32x32d.h"
// I2C adress
#define HTPA_SENSOR_ADDRESS 0x1A
#define HTPA_EEPROM_ADDRESS 0x50
// Sensor configuration registers (write only)
#define HTPA_SENSOR_CONFIG 0x01 // Configuration register
#define HTPA_SENSOR_TRIM_1 0x03 // Amplification and ADC resolution
#define HTPA_SENSOR_TRIM_2 0x04 // Bias current of Top ADC
#define HTPA_SENSOR_TRIM_3 0x05 // Bias current of Bot ADC
#define HTPA_SENSOR_TRIM_4 0x06 // Clock frequency
#define HTPA_SENSOR_TRIM_5 0x07 // Common mode voltage preamplifier top
#define HTPA_SENSOR_TRIM_6 0x08 // Common mode voltage preamplifier bot
#define HTPA_SENSOR_TRIM_7 0x09 // Interal pull-ups SDA, SCL
// Sensor read only
#define HTPA_SENSOR_STATUS 0x02 // Status register
#define HTPA_SENSOR_READTOP 0x0A // Read top half
#define HTPA_SENSOR_READBOT 0x0B // Read bot half
// I2C transmit delay
#define I2C_MAX_DELAY 0xFFFFFFFF
I2C_HandleTypeDef i2c_handle;
HAL_StatusTypeDef i2c_return; // error handling maybe?
void HTPA_Init(I2C_HandleTypeDef *hi2c){
i2c_handle = *hi2c;
// Berechnung für clk / sample aus I2C parametern?
HTPA_WriteRegister(HTPA_SENSOR_CONFIG, 0x01); // Wakeup
HTPA_WriteRegister(HTPA_SENSOR_TRIM_1, 0x0C);
HTPA_WriteRegister(HTPA_SENSOR_TRIM_2, 0x0C);
HTPA_WriteRegister(HTPA_SENSOR_TRIM_3, 0x0C);
HTPA_WriteRegister(HTPA_SENSOR_TRIM_4, 0x14);
HTPA_WriteRegister(HTPA_SENSOR_TRIM_5, 0x0C);
HTPA_WriteRegister(HTPA_SENSOR_TRIM_6, 0x0C);
HTPA_WriteRegister(HTPA_SENSOR_TRIM_7, 0x88);
//HTPA_WriteRegister(HTPA_SENSOR_CONFIG, 0x09); // Wakeup | Start
}
void HTPA_WriteRegister(uint8_t register_address, uint8_t byte){
uint8_t i2c_data = register_adress;
HAL_I2C_Master_Transmit(&i2c_handle, HTPA_SENSOR_ADDRESS, &i2c_data, 1, I2C_MAX_DELAY);
i2c_data = byte;
HAL_I2C_Master_Transmit(&i2c_handle, HTPA_SENSOR_ADDRESS, &i2c_data, 1, I2C_MAX_DELAY);
}