added status and block readout
This commit is contained in:
		@ -31,6 +31,7 @@
 | 
			
		||||
I2C_HandleTypeDef i2c_handle;
 | 
			
		||||
HAL_StatusTypeDef i2c_return;	// error handling maybe?
 | 
			
		||||
 | 
			
		||||
uint16_t blockData[128];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void HTPA_Init(I2C_HandleTypeDef *hi2c){
 | 
			
		||||
@ -44,13 +45,35 @@ void HTPA_Init(I2C_HandleTypeDef *hi2c){
 | 
			
		||||
	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_ReadBlock(uint8_t array_half, uint8_t block, uint16_t *pData[128]){
 | 
			
		||||
	uint8_t config = (block << 4);	// bit 5,4 block
 | 
			
		||||
	config |= 0x09;					// bit 3 start | bit 1 wakeup
 | 
			
		||||
	HTPA_WriteRegister(HTPA_SENSOR_CONFIG, config);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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);
 | 
			
		||||
	uint8_t i2c_data = register_address;
 | 
			
		||||
	uint8_t i2c_address = (HTPA_SENSOR_ADDRESS << 1);
 | 
			
		||||
	i2c_address |= 0x00;	// set read/write bit to write (0)
 | 
			
		||||
	HAL_I2C_Master_Transmit(&i2c_handle, i2c_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);
 | 
			
		||||
	HAL_I2C_Master_Transmit(&i2c_handle, i2c_address, &i2c_data, 1, I2C_MAX_DELAY);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
HTPA_Status HTPA_GetStatus(void){
 | 
			
		||||
	HTPA_Status status_return;
 | 
			
		||||
	uint8_t i2c_data = HTPA_SENSOR_STATUS;
 | 
			
		||||
	uint8_t i2c_address = (HTPA_SENSOR_ADDRESS << 1);
 | 
			
		||||
	uint8_t i2c_readData = 0;
 | 
			
		||||
	i2c_address |= 0x00;	// set read/write bit to write (0)
 | 
			
		||||
	HAL_I2C_Master_Transmit(&i2c_handle, i2c_address, &i2c_data, 1, I2C_MAX_DELAY);
 | 
			
		||||
	i2c_address |= 0x01;	// set read/write bit to read (1)
 | 
			
		||||
	HAL_I2C_Master_Receive(&i2c_handle, i2c_address, &i2c_readData, 1, I2C_MAX_DELAY);
 | 
			
		||||
	status_return.block = (i2c_readData >> 4) && 0xFC;
 | 
			
		||||
	status_return.vdd_meas = (i2c_readData >> 2) && 0xFE;
 | 
			
		||||
	status_return.blind = (i2c_readData >> 1) && 0xFE;
 | 
			
		||||
	status_return.eoc = i2c_readData && 0xFE;
 | 
			
		||||
	return status_return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user