57 lines
1.9 KiB
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);
|
|
}
|