Count CAN frames read in one cycle

This commit is contained in:
jazzpi 2022-07-28 22:05:20 +02:00
parent eaf86ff0ce
commit d9e8cc5f52
3 changed files with 10 additions and 7 deletions

View File

@ -33,6 +33,10 @@ typedef struct {
extern canFrame framebuffer[CANFRAMEBUFFERSIZE]; extern canFrame framebuffer[CANFRAMEBUFFERSIZE];
extern uint32_t framebufferwritepointer;
extern uint32_t framebufferreadpointer;
extern uint32_t frames_read;
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef* handle, void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef* handle,
uint32_t interrupt_flags); uint32_t interrupt_flags);

View File

@ -11,6 +11,7 @@
#include "stm32g4xx_hal_fdcan.h" #include "stm32g4xx_hal_fdcan.h"
#include <stdint.h>
#include <string.h> #include <string.h>
// 3 should be programmed with CAN id 2 // 3 should be programmed with CAN id 2
@ -19,8 +20,9 @@
const uint16_t slave_CAN_id_to_slave_index[7] = { const uint16_t slave_CAN_id_to_slave_index[7] = {
0, 1, 2, 3, 4, 5, 6}; // TODO: Make this pretty pls 0, 1, 2, 3, 4, 5, 6}; // TODO: Make this pretty pls
canFrame framebuffer[CANFRAMEBUFFERSIZE] = {0}; canFrame framebuffer[CANFRAMEBUFFERSIZE] = {0};
uint32_t framebufferwritepointer; uint32_t framebufferwritepointer = 0;
uint32_t framebufferreadpointer; uint32_t framebufferreadpointer = 0;
uint32_t frames_read = 0;
void CAN_Init(FDCAN_HandleTypeDef* hcan) { void CAN_Init(FDCAN_HandleTypeDef* hcan) {
HAL_FDCAN_Stop(hcan); HAL_FDCAN_Stop(hcan);
@ -51,6 +53,7 @@ void CAN_Init(FDCAN_HandleTypeDef* hcan) {
} }
uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan) { uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan) {
frames_read = 0;
while (framebufferreadpointer != framebufferwritepointer) { while (framebufferreadpointer != framebufferwritepointer) {
framebufferreadpointer++; framebufferreadpointer++;
@ -59,6 +62,7 @@ uint8_t CAN_Receive(FDCAN_HandleTypeDef* hcan) {
} }
canFrame rxFrame = framebuffer[framebufferreadpointer]; canFrame rxFrame = framebuffer[framebufferreadpointer];
frames_read++;
if ((rxFrame.FrameID & SLAVE_STATUS_BASE_ADDRESS) == if ((rxFrame.FrameID & SLAVE_STATUS_BASE_ADDRESS) ==
SLAVE_STATUS_BASE_ADDRESS) { SLAVE_STATUS_BASE_ADDRESS) {

View File

@ -61,11 +61,6 @@ extern FDCAN_HandleTypeDef hfdcan1;
extern SPI_HandleTypeDef hspi1; extern SPI_HandleTypeDef hspi1;
/* USER CODE BEGIN EV */ /* USER CODE BEGIN EV */
extern uint8_t framebufferwritepointer;
extern uint8_t framebufferreadpointer;
/* USER CODE END EV */ /* USER CODE END EV */
/******************************************************************************/ /******************************************************************************/