276 lines
7.7 KiB
C
276 lines
7.7 KiB
C
|
|
|
|||
|
|
#ifndef __CONTROLBUS_H__
|
|||
|
|
#define __CONTROLBUS_H__
|
|||
|
|
|
|||
|
|
#include "canctrl.h"
|
|||
|
|
|
|||
|
|
/*
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵĿ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD>CAN<EFBFBD><EFBFBD>485<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Թ<EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ㣬ÿ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>Ψһ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>
|
|||
|
|
<EFBFBD>ڵ<EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><EFBFBD>̻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>нڵ<EFBFBD>ID<EFBFBD><EFBFBD>Ψһ<EFBFBD>ԡ<EFBFBD>
|
|||
|
|
|
|||
|
|
|
|||
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϲ<EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĺ<EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD>Ϊ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݡ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ÿ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------------------------------------
|
|||
|
|
//-------------------------------------- CAN ͨѶ<CDA8><D1B6>Э<EFBFBD>鶨<EFBFBD><E9B6A8> -----------------------------------------------
|
|||
|
|
//-------------------------------------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
// CAN <20><><EFBFBD>ݰ<EFBFBD>
|
|||
|
|
|
|||
|
|
// |--------------------------------------------------------------------
|
|||
|
|
// | exId | data
|
|||
|
|
// |--------------------------------------------------------------------
|
|||
|
|
// |
|
|||
|
|
// |--------------------------------------------------------------------
|
|||
|
|
// |
|
|||
|
|
// |--------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// CAN Զ<>̰<EFBFBD>
|
|||
|
|
|
|||
|
|
//-------------------------------------------------------------------------------------------------------------
|
|||
|
|
//-------------------------------------------------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// exId <20>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><D6A3><EFBFBD>29λ<39><CEBB>
|
|||
|
|
|
|||
|
|
#define BNMASK_PRT 0x1F000000 // ͨѶЭ<D1B6><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define BNMASK_TID 0x00FF0000 // Ŀ<><C4BF><EFBFBD>豸ID
|
|||
|
|
#define BNMASK_SID 0x0000FF00 // Դ<>豸ID
|
|||
|
|
#define BNMASK_CMD 0x000000FF // <20><><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#define BNMASK_ID (BNMASK_TID|BNMASK_SID)
|
|||
|
|
|
|||
|
|
// Ŀ<><C4BF><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>豸ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨѶ<CDA8>ڵ<EFBFBD><DAB5>ı<EFBFBD>ʶ<EFBFBD><CAB6>ͨѶ<CDA8>ڵ<EFBFBD><DAB5><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ψһ
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
// ͨѶ<CDA8><D1B6>ѭ<EFBFBD><D1AD>Э<EFBFBD><D0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ͨѶЭ<D1B6><D0AD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
|||
|
|
#define BN_PROTOCOL_ALL 0x00 // <20><><EFBFBD><EFBFBD><EFBFBD>豸ͨѶ
|
|||
|
|
#define BN_PROTOCOL_MVCTRL 0x01 // <20>˶<EFBFBD><CBB6><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
|||
|
|
#define BN_PROTOCOL_HEAD 0x05 // <20><>ͷ<EFBFBD><CDB7>ͨѶЭ<D1B6><D0AD>
|
|||
|
|
#define BN_PROTOCOL_COLOR 0x06 // <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
|||
|
|
#define BN_PROTOCOL_EXTIO 0x07 // IO<49><4F>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
|||
|
|
#define BN_PROTOCOL_SEWHD 0xA1 // <20><><EFBFBD>һ<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><D0AD>
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20>豸ID <20><>Ŀ<EFBFBD><C4BF><EFBFBD>豸ID <20><> Դ<>豸ID<49><44><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>Э<EFBFBD><D0AD><EFBFBD>µ<EFBFBD>ID<49>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8>ġ<EFBFBD>
|
|||
|
|
#define BN_ID_BROADCAST 0x00 // <20><><EFBFBD><EFBFBD>ID<49><44><EFBFBD>㲥ID<49><44>
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1--255<35><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ӵķ<D3B5><C4B7><EFBFBD>IDִ<44><D6B4>
|
|||
|
|
// ID <20>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̷<EFBFBD><CCB7>䣬Ҳ<E4A3AC><D2B2><EFBFBD>Թ̶<D4B9><CCB6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EEB6A8>
|
|||
|
|
#define BN_CMD_BROADCAST 0x00 // <20>㲥<EFBFBD><E3B2A5><EFBFBD><EFBFBD>
|
|||
|
|
#define BN_CMD_TRAVERSE 0x01 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-<2D><><EFBFBD>巢<EFBFBD><E5B7A2><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7>
|
|||
|
|
#define BN_CMD_BUSSTA 0x02 // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD> // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>-<2D><>Χ<EFBFBD>巢<EFBFBD><E5B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define BN_CMD_INPUTCHG 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD>źű仯
|
|||
|
|
#define BN_CMD_CHGOUTPUT 0x04 // <20>仯<EFBFBD><E4BBAF><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
|
#define BN_CMD_REGVAL 0x05 // ״̬<D7B4>˿ڱ仯<DAB1><E4BBAF><EFBFBD><EFBFBD>ȡ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
|
#define BN_CMD_WTREG 0x06 // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>ֵ<EFBFBD><D6B5>
|
|||
|
|
#define BN_CMD_EXCTRL 0x07 // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define BN_CMD_EXSTA 0x08 // <20><>Χ<EFBFBD><CEA7>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#define BN_CMD_TRANS_DATA 0x09 // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
|||
|
|
#define BN_CMD_NVPARA 0x0A // <20><>ȡ or <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8>
|
|||
|
|
#define TRA_CMD_ENTER_TRA 0x01 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
#define TRA_CMD_EXIT_TRA 0x02 // <20>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
#define TRA_CMD_NODE_TRA_BEG 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ڵ<EFBFBD>ID<49><44>ʼ
|
|||
|
|
#define TRA_CMD_NODE_TRA_END 0x04 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ڵ<EFBFBD>ID<49><44><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
#define TRA_CMD_ASK_TRA_STA 0x05 // <20><>ѯ<EFBFBD><D1AF><EFBFBD>нڵ<D0BD><DAB5><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
// <20><><EFBFBD>߽ڵ<DFBD>״̬
|
|||
|
|
#define TRA_STA_INIT 0x00 // <20><>ʼ״̬
|
|||
|
|
#define TRA_STA_TRA 0x01 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>
|
|||
|
|
#define TRA_STA_BEG 0X02 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ״̬<D7B4><CCAC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD>״̬<D7B4>£<EFBFBD><C2A3>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ýڵ<C3BD>ID<49><44><EFBFBD>
|
|||
|
|
#define TRA_STA_RESP 0x03 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ״̬<D7B4><CCAC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>ʼ״̬<D7B4>£<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define TRA_STA_COMP 0x04 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>Ӧ״̬<D7B4>£<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>巢<EFBFBD><E5B7A2><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
// <20>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
|
#define BOARD_VER_LEN 8 // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
// <20>洢<EFBFBD><E6B4A2>ȡ<EFBFBD><C8A1><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>ֵ(<28><><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>,<2C><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>)
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
u8 rdnewbverflag; // <20><>ȡ<EFBFBD>³<EFBFBD><C2B3><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE>־
|
|||
|
|
u32 rdbverbitmap; // <20><><EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD><E6B1BE><EFBFBD><EFBFBD>λͼ
|
|||
|
|
u32 exbVer[BOARD_VER_LEN]; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
|
// ...
|
|||
|
|
}BoardRegVal;
|
|||
|
|
|
|||
|
|
#define PORT_ADDR_HIGH 0xFFFF0000
|
|||
|
|
#define PORT_ADDR_LOW 0x0000FFFF
|
|||
|
|
|
|||
|
|
#define BOARD_VERSION 0x00010000 // <20><><EFBFBD><EFBFBD><EFBFBD>汾
|
|||
|
|
#define EXBOARD_UPDATE 0x00080000 // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define GET_NV_PARA 0x00100000 // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>EXID
|
|||
|
|
#define MAKE_EXID(prt, tid, sid, cmd) ( (((u32)((prt)&0x1f))<<24) | (((u32)((tid)&0xff))<<16) | (((u32)((sid)&0xff))<<8) | (((u32)((cmd)&0xff))) )
|
|||
|
|
|
|||
|
|
// <20><>EXID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>
|
|||
|
|
#define GET_PRT_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_PRT) >> 24))
|
|||
|
|
#define GET_TID_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_TID) >> 16))
|
|||
|
|
#define GET_SID_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_SID) >> 8))
|
|||
|
|
#define GET_CMD_FROM_EXID(exid) ((u8)((((u32)(exid))&BNMASK_CMD) >> 0))
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
// <20>㲥ID
|
|||
|
|
#define BROADCAST_EXID (MAKE_EXID(BN_PROTOCOL_ALL, BN_ID_BROADCAST, BN_ID_BROADCAST, BN_CMD_BROADCAST))
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>
|
|||
|
|
#define MAKE_FILTER(exid, rtr) ((((u32)exid)<<3) | CAN_ID_EXT | rtr)
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
typedef union
|
|||
|
|
{
|
|||
|
|
// ʹ<>ô<EFBFBD><C3B4><EFBFBD>ʱ<EFBFBD><CAB1>ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>ʽ
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u32 sync;
|
|||
|
|
u16 cmd;
|
|||
|
|
u32 addr;
|
|||
|
|
u32 val;
|
|||
|
|
u16 crc;
|
|||
|
|
} __attribute__ ((packed)) sercomm;
|
|||
|
|
|
|||
|
|
// ʹ<><CAB9>CAN<41><4E><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ͨѶ
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u16 rev1;
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
u32 id;
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 type; // ͨѶ<CDA8>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬<EFBFBD><E0A3AC>Чλ<D0A7><CEBB>Ϊ5λ<35><CEBB>֧<EFBFBD><D6A7>0--31<33><31>32<33>֣<EFBFBD><D6A3><EFBFBD>
|
|||
|
|
u8 tid; // Ŀ<><C4BF>ͨѶ<CDA8>ڵ<EFBFBD>id<69><64><EFBFBD><EFBFBD>Чλ<D0A7><CEBB>Ϊ8λ<38><CEBB>֧<EFBFBD><D6A7>0--255<35><35>256<35><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 sid; // ԴͨѶ<CDA8>ڵ<EFBFBD>id<69><64><EFBFBD><EFBFBD>Чλ<D0A7><CEBB>Ϊ8λ<38><CEBB>֧<EFBFBD><D6A7>0--255<35><35>256<35><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 cmd; // ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD><EEA3A8><EFBFBD>ܱ<EFBFBD><DCB1>룩
|
|||
|
|
} __attribute__ ((packed)) desc;
|
|||
|
|
|
|||
|
|
} __attribute__ ((packed)) exId; // can ͨѶ<CDA8><D1B6>29λ exid
|
|||
|
|
|
|||
|
|
union
|
|||
|
|
{
|
|||
|
|
u8 buff[8]; // buff
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 tracmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 nodeid; // <20>ڵ<EFBFBD>ID
|
|||
|
|
u8 nodetype; // <20>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 rev[5];
|
|||
|
|
} __attribute__ ((packed)) traverse; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u8 staCode; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
u32 cpuid; // <20>ɰ忨CPUID<49><44><EFBFBD>ɵ<EFBFBD>У<EFBFBD><D0A3>
|
|||
|
|
u8 nodetype;
|
|||
|
|
u8 signal; // <20>źż<C5BA><C5BC><EFBFBD>,<2C>쳣Ϊ1
|
|||
|
|
// bit0,ZP
|
|||
|
|
// bit1,MP
|
|||
|
|
u8 rev;
|
|||
|
|
} __attribute__ ((packed)) busSta; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
int64_t inputs; // <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u32 mask;
|
|||
|
|
u32 value;
|
|||
|
|
} __attribute__ ((packed)) outputs; // <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u32 portaddr;
|
|||
|
|
u32 status;
|
|||
|
|
} __attribute__ ((packed)) rdport; // ״̬<D7B4>˿<EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u32 portaddr;
|
|||
|
|
u32 wrdata;
|
|||
|
|
} __attribute__ ((packed)) wrport; // д<><D0B4><EFBFBD>˿<EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u16 ccmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 para[6]; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
} __attribute__ ((packed)) exctrl; // <20><>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u16 esta; // ״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
u8 para[6]; // <20><><EFBFBD><EFBFBD>
|
|||
|
|
} __attribute__ ((packed)) exsta; // <20><>Χ<EFBFBD><CEA7>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u16 ccmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 subcmd;
|
|||
|
|
u8 para1;
|
|||
|
|
s32 para2;
|
|||
|
|
} __attribute__ ((packed)) mctrl; // M<><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u16 ccmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 currentNP; // <20><>ǰ<EFBFBD><C7B0>λ
|
|||
|
|
u16 mrotCtnAng;
|
|||
|
|
u8 para[3];
|
|||
|
|
} __attribute__ ((packed)) coilpara;
|
|||
|
|
|
|||
|
|
struct
|
|||
|
|
{
|
|||
|
|
u16 cmd; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u8 parablockID; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
|
|||
|
|
u8 paraID; // <20><><EFBFBD><EFBFBD>ID
|
|||
|
|
s32 paraval; // <20><><EFBFBD><EFBFBD>ֵ
|
|||
|
|
} __attribute__ ((packed)) headNvPara; // <20><><EFBFBD><EFBFBD>ʧ<EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>
|
|||
|
|
|
|||
|
|
} __attribute__ ((packed)) data; // can ͨѶ<CDA8><D1B6>8<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u16 rev2;
|
|||
|
|
|
|||
|
|
} __attribute__ ((packed)) cancomm;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD>ʽ......
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
} CtrlBusPacket;
|
|||
|
|
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
//----------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#endif
|