Новая версия протокола CAN.
Пока без ответа на запрос в общее адресное пространство.
This commit is contained in:
@@ -26,7 +26,10 @@
|
||||
|
||||
//CAN Filter
|
||||
#define ID_MAIN_DEVICE 0x000
|
||||
#define CURRENT_ID_DEVICE 0x002
|
||||
|
||||
#define CURRENT_TYPE_DEVICE 0b001
|
||||
#define CURRENT_ID_DEVICE 0b0010
|
||||
|
||||
#define CAN_IDE_32 0b00000100 // Для 32-х битного масштаба
|
||||
|
||||
#define CAN_DATA_TYPE_FILTER 0x1F000000
|
||||
@@ -34,7 +37,7 @@
|
||||
#define CAN_SENSOR_TYPE_FILTER 0x00F80000
|
||||
#define CAN_SENSOR_ID_FILTER 0x0007FF00
|
||||
|
||||
union Byte{
|
||||
typedef union{
|
||||
struct bitfield{
|
||||
unsigned bit0:1;
|
||||
unsigned bit1:1;
|
||||
@@ -46,7 +49,19 @@ union Byte{
|
||||
unsigned bit7:1;
|
||||
}Bitfield;
|
||||
char AllBit;
|
||||
};
|
||||
}Byte;
|
||||
|
||||
/**
|
||||
* @brief HAL Status structures definition
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
CRR_OK = 0x00U,
|
||||
CRR_ERROR = 0x01U,
|
||||
CRR_BUSY = 0x02U,
|
||||
CRR_TIMEOUT = 0x03U
|
||||
} CRR_Status;
|
||||
|
||||
|
||||
_Bool IsLeapYear(uint8_t year);
|
||||
|
||||
@@ -58,6 +73,10 @@ _Bool IsLeapYear(uint8_t year);
|
||||
#define HighByteOfWord(WORD) (WORD>>8)&0xFF
|
||||
#define LowByteOfWord(WORD) WORD&0xFF
|
||||
|
||||
//Priority level
|
||||
#define PRIORITY_CRITICAL 0
|
||||
#define PRIORITY_STANDARD 1
|
||||
|
||||
//Route mode
|
||||
#define ROUTE_MASTER 0
|
||||
#define ROUTE_SLAVE 1
|
||||
@@ -67,33 +86,34 @@ _Bool IsLeapYear(uint8_t year);
|
||||
#define DATA_TYPE_DISCRETE 0b0001
|
||||
#define DATA_TYPE_ANALOG 0b0010
|
||||
#define DATA_TYPE_MODBUS_COIL 0b0011
|
||||
#define DATA_TYPE_MODBUS_DISCRETE 0b0100
|
||||
#define DATA_TYPE_MODBUS_HOLDING 0b0101
|
||||
#define DATA_TYPE_MODBUS_INPUT 0b0110
|
||||
#define DATA_TYPE_ERROR 0b0111
|
||||
#define DATA_TYPE_GENERAL_ADDRESS_SPACE 0b0100
|
||||
#define DATA_TYPE_MODBUS_DISCRETE 0b0101
|
||||
#define DATA_TYPE_MODBUS_HOLDING 0b0110
|
||||
#define DATA_TYPE_MODBUS_INPUT 0b0111
|
||||
#define DATA_TYPE_ERROR 0b1000
|
||||
#define DATA_TYPE_PULSE 0b1111
|
||||
|
||||
//Sensor Types for DATA_TYPE_BROADCAST
|
||||
#define SENSOR_TYPE_BROADCAST_STATUS 0b00000
|
||||
#define SENSOR_TYPE_BROADCAST_ONOFF 0b00001
|
||||
#define SENSOR_TYPE_BROADCAST_RESTARTDEVICE 0b00010
|
||||
#define SENSOR_TYPE_BROADCAST_RTCSETUP 0b00011
|
||||
#define SENSOR_TYPE_BROADCAST_STATUS 0b000000000000
|
||||
#define SENSOR_TYPE_BROADCAST_ONOFF 0b000000000001
|
||||
#define SENSOR_TYPE_BROADCAST_RESTARTDEVICE 0b000000000010
|
||||
#define SENSOR_TYPE_BROADCAST_RTCSETUP 0b000000000011
|
||||
|
||||
//Sensor Types for DATA_TYPE_DISCRETE
|
||||
#define SENSOR_TYPE_DISCRETE_ACCIDENT 0b00000
|
||||
#define SENSOR_TYPE_DISCRETE_WARNING 0b00001
|
||||
#define SENSOR_TYPE_DISCRETE_CONTROL_SIGNALS 0b00010
|
||||
#define SENSOR_TYPE_DISCRETE_FLAGS 0b00011
|
||||
#define SENSOR_TYPE_DISCRETE_RESET 0b00100
|
||||
#define SENSOR_TYPE_DISCRETE_CHANGE_MODE 0b00101
|
||||
#define SENSOR_TYPE_DISCRETE_REQUEST_LIST_OF_PARAMETERS 0b00110
|
||||
#define SENSOR_TYPE_DISCRETE_ACCIDENT 0b0000
|
||||
#define SENSOR_TYPE_DISCRETE_WARNING 0b0001
|
||||
#define SENSOR_TYPE_DISCRETE_CONTROL_SIGNALS 0b0010
|
||||
#define SENSOR_TYPE_DISCRETE_FLAGS 0b0011
|
||||
#define SENSOR_TYPE_DISCRETE_RESET 0b0100
|
||||
#define SENSOR_TYPE_DISCRETE_CHANGE_MODE 0b0101
|
||||
#define SENSOR_TYPE_DISCRETE_REQUEST_LIST_OF_PARAMETERS 0b0110
|
||||
|
||||
//Sensor Types for DATA_TYPE_ANALOG
|
||||
#define SENSOR_TYPE_ANALOG_UNIVERSAL 0b00000
|
||||
#define SENSOR_TYPE_ANALOG_USTAVKI 0b00001
|
||||
#define SENSOR_TYPE_ANALOG_U 0b00010
|
||||
#define SENSOR_TYPE_ANALOG_I 0b00011
|
||||
#define SENSOR_TYPE_ANALOG_T 0b00100
|
||||
#define SENSOR_TYPE_ANALOG_UNIVERSAL 0b0000
|
||||
#define SENSOR_TYPE_ANALOG_USTAVKI 0b0001
|
||||
#define SENSOR_TYPE_ANALOG_U 0b0010
|
||||
#define SENSOR_TYPE_ANALOG_I 0b0011
|
||||
#define SENSOR_TYPE_ANALOG_T 0b0100
|
||||
|
||||
//Error Code
|
||||
#define NONEXISTENT_ELEMENT 0x01
|
||||
@@ -129,21 +149,37 @@ union ext_ID_Modbus{
|
||||
unsigned int BitAll:29;
|
||||
};*/
|
||||
|
||||
typedef union _extID{
|
||||
struct extID_Standard_Fields{
|
||||
unsigned DeviceID:8;
|
||||
unsigned SensorID:11;
|
||||
unsigned SensorType:5;
|
||||
unsigned DataType:4;
|
||||
typedef union{
|
||||
struct extID_Fields{
|
||||
union{
|
||||
struct msgBody_Broadcast{
|
||||
unsigned Page:4;
|
||||
unsigned BroadcastType:12;
|
||||
}Broadcast;
|
||||
struct msgBody_Discrete{
|
||||
unsigned Body:12;
|
||||
unsigned Type:4;
|
||||
}Discrete;
|
||||
struct msgBody_Analog{
|
||||
unsigned SensorID:12;
|
||||
unsigned SensorType:4;
|
||||
}Analog;
|
||||
struct msgBody_Modbus{
|
||||
unsigned RegCount:4;
|
||||
unsigned StrAdr:12;
|
||||
}Modbus;
|
||||
struct msgBody_Error{
|
||||
unsigned ErrorCode:8;
|
||||
unsigned Info:8;
|
||||
}Error;
|
||||
unsigned Body:16;
|
||||
}Msg;
|
||||
unsigned MsgType:4;
|
||||
unsigned DeviceID:4;
|
||||
unsigned DeviceType:3;
|
||||
unsigned Route:1;
|
||||
}StandardFields;
|
||||
struct extID_Modbus_Fields{
|
||||
unsigned DeviceID:8;
|
||||
unsigned CountReg:8;
|
||||
unsigned StrAdr:8;
|
||||
unsigned DataType:4;
|
||||
unsigned Route:1;
|
||||
}ModbusFields;
|
||||
unsigned Priority:1;
|
||||
}Fields;
|
||||
unsigned int BitAll:29;
|
||||
}extID;
|
||||
|
||||
@@ -260,20 +296,20 @@ void REQUESTER_Init(void);
|
||||
void REQUESTER_MainWhile(void);
|
||||
void Boot_SystemClock_Config(void);
|
||||
|
||||
void REQUESTER_AnalogProcessing(struct RXMsg _rxMsg);
|
||||
CRR_Status REQUESTER_AnalogProcessing(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToAnalogUniversal(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToAnalogUSTAVKI(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToAnalogUSens(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToAnalogISens(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToAnalogTSens(struct RXMsg _rxMsg);
|
||||
|
||||
void REQUESTER_BroadcastProcessing(struct RXMsg _rxMsg);
|
||||
CRR_Status REQUESTER_BroadcastProcessing(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToBroadcastStatus(struct RXMsg _rxMsg);
|
||||
void CanRequestToBroadcastOnOff(struct RXMsg _rxMsg);
|
||||
void CanRequestToBroadcastRestart(struct RXMsg _rxMsg);
|
||||
void CanRequestToBroadcastRtcSetup(struct RXMsg _rxMsg);
|
||||
|
||||
void REQUESTER_DiscreticProcessing(struct RXMsg _rxMsg);
|
||||
CRR_Status REQUESTER_DiscreticProcessing(struct RXMsg _rxMsg);
|
||||
void CanRequestToDiscreteAccident(struct RXMsg _rxMsg);
|
||||
void CanRequestToDiscreteWarning(struct RXMsg _rxMsg);
|
||||
void CanRequestToDiscreteControlSignals(struct RXMsg _rxMsg);
|
||||
@@ -282,11 +318,11 @@ void CanRequestToDiscreteReset(struct RXMsg _rxMsg);
|
||||
void CanRequestToDiscreteChangeMode(struct RXMsg _rxMsg);
|
||||
void CanRequestToDiscreteRequestListOfParameters(struct RXMsg _rxMsg);
|
||||
|
||||
void REQUESTER_ModbusProcessing(struct RXMsg _rxMsg);
|
||||
void CanRequestToModbusCoil(struct RXMsg _rxMsg);
|
||||
void CanRequestToModbusDiscrete(struct RXMsg _rxMsg);
|
||||
void CanRequestToModbusHolding(struct RXMsg _rxMsg);
|
||||
void CanRequestToModbusInput(struct RXMsg _rxMsg);
|
||||
CRR_Status REQUESTER_ModbusProcessing(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToModbusCoil(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToModbusDiscrete(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToModbusHolding(struct RXMsg _rxMsg);
|
||||
HAL_StatusTypeDef CanRequestToModbusInput(struct RXMsg _rxMsg);
|
||||
|
||||
void REQUESTER_RTC_SYNC(uint8_t *data);
|
||||
void REQUESTER_Pulse_TIM_Handler(void);
|
||||
|
||||
Reference in New Issue
Block a user