Count CAN frames read in one cycle
This commit is contained in:
parent
eaf86ff0ce
commit
d9e8cc5f52
@ -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);
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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 */
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user