102 lines
2.2 KiB
C
102 lines
2.2 KiB
C
#ifndef __BOARD_H__
|
|
#define __BOARD_H__
|
|
#include "main.h"
|
|
#include "adcs.h"
|
|
#include "uarts.h"
|
|
|
|
// 串口协议参数
|
|
#define UART_RXSIZE (240u) // 接收缓冲区 240个字节
|
|
#define UART_TXSIZE (240u) // 发送缓冲区 240个字节
|
|
|
|
// 包头 + 状态码 + 设备号 + 命令号 + 长度 + 数据 + 校验 + 包尾
|
|
// 1 1 1 1 1 0~128 1 1
|
|
#define PACKET_STX 0xff // 包头
|
|
#define PACKET_ETX 0x3c // 包尾
|
|
#define PACKET_
|
|
#define DATA_LEN_INDEX 4 // 数据长度偏移
|
|
#define DATA_INDEX 5 // 数据偏移
|
|
// 最大数据长度
|
|
#define DATA_MAX_LEN 128
|
|
// 最小帧长度:包头 + 状态码 + 设备号 + 命令号 + 长度 + 校验 + 包尾
|
|
#define PACKET_MIN_LEN 7
|
|
// 最大帧长度
|
|
#define PACKET_MAX_LEN (DATA_MAX_LEN + PACKET_MIN_LEN)
|
|
|
|
// 电机初始默认值
|
|
#define PULSE_REV 18000.0 // 每圈脉冲数(驱动器脉冲)
|
|
#define MIN_STEP_ANGLE (360 / PULSE_REV) // 最小步距
|
|
|
|
typedef enum
|
|
{
|
|
IDLE = 0, // 空闲
|
|
BUSY = 1, // 忙碌
|
|
} host_state_e;
|
|
|
|
typedef enum
|
|
{
|
|
ADC_SENSOR,
|
|
MOTOR,
|
|
} dev_id_e;
|
|
|
|
typedef enum
|
|
{
|
|
UART_NUM_1,
|
|
UART_NUM_2,
|
|
UART_NUM_3,
|
|
UART_NUM_4,
|
|
UART_NUM_5,
|
|
UART_NUM_MAX,
|
|
} uart_num_e;
|
|
|
|
typedef enum
|
|
{
|
|
SET_MOTOR_SPEED,
|
|
GET_MIN_STEP,
|
|
GET_MOTOR_STATE,
|
|
MOTOR_MOVE,
|
|
MOTOR_STOP,
|
|
} motor_cmd_e;
|
|
|
|
typedef enum
|
|
{
|
|
GET_TORSION_VALUE,
|
|
GET_PRESSURE_VALUE,
|
|
GET_FLOW_VALUE,
|
|
GET_ALL_VALUE,
|
|
} sensor_cmd_e;
|
|
|
|
typedef enum
|
|
{
|
|
ST_DEV_NORMAL,
|
|
ST_DEV_BUSY,
|
|
ST_DEV_MISS,
|
|
} status_code_e;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t head; // 包头
|
|
uint8_t state; // 状态
|
|
uint8_t dev_no; // 设备号
|
|
uint8_t cmd_no; // 命令号
|
|
uint8_t len; // 长度
|
|
uint8_t data[DATA_MAX_LEN]; // 数据
|
|
} frame_msg_t;
|
|
|
|
typedef struct
|
|
{
|
|
uint8_t dir;
|
|
float32 angle;
|
|
} motor_ctrl_t;
|
|
|
|
extern void board_init(void);
|
|
extern uint16_t get_torsion_adc(void);
|
|
extern float32 torsion_detect(void);
|
|
extern uint16_t get_pressure_adc(void);
|
|
extern float32 pressure_detect(void);
|
|
extern uint16_t get_flow_adc(void);
|
|
extern float32 flow_detect(void);
|
|
extern void host_rx_msg_deal(void);
|
|
extern void motor_process_init(void);
|
|
|
|
#endif // __BOARD_H__
|