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 uint32_t framebufferwritepointer;
extern uint32_t framebufferreadpointer;
extern uint32_t frames_read;
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef* handle,
uint32_t interrupt_flags);

View File

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

View File

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