This repository has been archived on 2025-01-02. You can view files and clone it, but cannot push or open issues or pull requests.
torsion/User/board/board.h

131 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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_INPUT_PRESS_VALUE, // 输入压力
GET_OUTPUT_PRESS_VALUE, // 输出压力
GET_INPUT_FLOW_VALUE, // 输入流量
GET_OUTPUT_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_sensor_adc(uint8_t id);
extern float32 torsion_detect(void);
extern float32 pressure_detect(uint8_t id);
extern float32 flow_detect(uint8_t id);
extern void host_rx_msg_deal(void);
extern void motor_process_init(void);
extern void test_process(void);
#endif // __BOARD_H__