Get BQ communication to work
This commit is contained in:
		@ -149,6 +149,7 @@ uint8_t BQ_Read_Register(uint8_t registeraddress, uint8_t registersize,
 | 
				
			|||||||
  message[0] = FRM_WRT_R;
 | 
					  message[0] = FRM_WRT_R;
 | 
				
			||||||
  message[1] = 0;
 | 
					  message[1] = 0;
 | 
				
			||||||
  message[2] = registeraddress;
 | 
					  message[2] = registeraddress;
 | 
				
			||||||
 | 
					  // See BQ datasheet 7.5.3.1.2
 | 
				
			||||||
  message[3] = registersize - 1;
 | 
					  message[3] = registersize - 1;
 | 
				
			||||||
  Calculate_CRC(message, 6);
 | 
					  Calculate_CRC(message, 6);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -162,14 +163,21 @@ uint8_t BQ_Read_Register(uint8_t registeraddress, uint8_t registersize,
 | 
				
			|||||||
  if (crccheck == 0) {
 | 
					  if (crccheck == 0) {
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					  // See Response Frame Init in BQ datasheet 7.5.1.1
 | 
				
			||||||
 | 
					  uint8_t response_size = (recv_message[0] & 0x7F) + 1;
 | 
				
			||||||
 | 
					  if (response_size != registersize) {
 | 
				
			||||||
 | 
					    return 0;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  data[0] = 0;
 | 
					  data[0] = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (registersize > 4)
 | 
					  if (registersize > 4)
 | 
				
			||||||
    registersize = 4;
 | 
					    registersize = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // Data is returned big-endian as per 7.5.3.1.2.1
 | 
				
			||||||
  for (int n = 0; n < registersize; n++) {
 | 
					  for (int n = 0; n < registersize; n++) {
 | 
				
			||||||
    data[0] |= recv_message[1 + n] >> (8 * n);
 | 
					    int shift_amount = 8 * (registersize - n - 1);
 | 
				
			||||||
 | 
					    data[0] |= recv_message[1 + n] << shift_amount;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return 1;
 | 
					  return 1;
 | 
				
			||||||
@ -195,7 +203,7 @@ uint32_t BQ_ReadMeasurements(uint8_t* buffer, uint8_t bufferlength) {
 | 
				
			|||||||
  uint8_t recv_buf[recv_len];
 | 
					  uint8_t recv_buf[recv_len];
 | 
				
			||||||
  uint8_t uartstat = BQ_UART_Receive(recv_buf, recv_len);
 | 
					  uint8_t uartstat = BQ_UART_Receive(recv_buf, recv_len);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (Check_CRC(recv_buf, recv_len) == 0) {
 | 
					  if (uartstat != HAL_OK || Check_CRC(recv_buf, recv_len) == 0) {
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -21,7 +21,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/* Private includes ----------------------------------------------------------*/
 | 
					/* Private includes ----------------------------------------------------------*/
 | 
				
			||||||
/* USER CODE BEGIN Includes */
 | 
					/* USER CODE BEGIN Includes */
 | 
				
			||||||
 | 
					#include "BQ_Abstraction_Layer.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "stm32f4xx_hal.h"
 | 
				
			||||||
/* USER CODE END Includes */
 | 
					/* USER CODE END Includes */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Private typedef -----------------------------------------------------------*/
 | 
					/* Private typedef -----------------------------------------------------------*/
 | 
				
			||||||
@ -108,7 +110,9 @@ int main(void) {
 | 
				
			|||||||
  MX_USART3_UART_Init();
 | 
					  MX_USART3_UART_Init();
 | 
				
			||||||
  MX_USART6_UART_Init();
 | 
					  MX_USART6_UART_Init();
 | 
				
			||||||
  /* USER CODE BEGIN 2 */
 | 
					  /* USER CODE BEGIN 2 */
 | 
				
			||||||
 | 
					  HAL_GPIO_WritePin(DCDC_CTRL_GPIO_Port, DCDC_CTRL_Pin, GPIO_PIN_SET);
 | 
				
			||||||
 | 
					  HAL_Delay(100);
 | 
				
			||||||
 | 
					  afe_init(&huart2);
 | 
				
			||||||
  /* USER CODE END 2 */
 | 
					  /* USER CODE END 2 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /* Infinite loop */
 | 
					  /* Infinite loop */
 | 
				
			||||||
@ -117,6 +121,7 @@ int main(void) {
 | 
				
			|||||||
    /* USER CODE END WHILE */
 | 
					    /* USER CODE END WHILE */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* USER CODE BEGIN 3 */
 | 
					    /* USER CODE BEGIN 3 */
 | 
				
			||||||
 | 
					    afe_measure();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  /* USER CODE END 3 */
 | 
					  /* USER CODE END 3 */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user