131 lines
2.8 KiB
C
131 lines
2.8 KiB
C
#ifndef __BOARD_H__
|
||
#define __BOARD_H__
|
||
#include "main.h"
|
||
#include "adcs.h"
|
||
#include "uarts.h"
|
||
|
||
#define SELF_TEST 1
|
||
|
||
// 串口协议参数
|
||
#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
|
||
{
|
||
STOP = 0, // 停止
|
||
RUN = 1, // 运行
|
||
} motor_state_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
|
||
{
|
||
ADC_SENSOR, // 传感器
|
||
MOTOR, // 电机
|
||
} dev_id_e;
|
||
|
||
// 电机命令号
|
||
typedef enum
|
||
{
|
||
SET_MOTOR_SPEED, // 设置电机速度
|
||
MOTOR_MOVE, // 电机启动(参数1:方向,参数2:角度)
|
||
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, // 故障
|
||
ST_CMD_IVALID, // 无效
|
||
} status_code_e;
|
||
|
||
// 测试
|
||
typedef enum
|
||
{
|
||
TEST_DEV_IDEL,
|
||
TEST_DEV_SENSOR,
|
||
TEST_DEV_MOTOR,
|
||
TEST_DEV_MAX,
|
||
} test_dev_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;
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t dev_id;
|
||
uint8_t cmd_id;
|
||
} test_t;
|
||
|
||
extern uint16_t sensor_adc[GET_ALL_VALUE];
|
||
|
||
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);
|
||
extern void test_process(void);
|
||
|
||
#endif // __BOARD_H__
|