MW22-02A/BSP/Driver/as5047d/as5047d.h

166 lines
4.9 KiB
C
Raw Permalink Normal View History

2025-05-21 01:55:40 +00:00
#ifndef __AS5047D_H_
#define __AS5047D_H_
#include "gd32f4xx.h"
///ˮƽAS5047D<37>˿<EFBFBD>
///CSn
///<2F><>AS5047D_HORI<52><49>CSn<53><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
#define AS5047D_HORI_CSN_DISABLE (gpio_bit_set(GPIOA,GPIO_PIN_15))
///<2F><>AS5047D_HORI<52><49>CSn<53><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
#define AS5047D_HORI_CSN_ENABLE (gpio_bit_reset(GPIOA,GPIO_PIN_15))
///CLK
///<2F><>AS5047D_HORI<52><49>CLK<4C><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
#define AS5047D_HORI_CLK_HIGH (gpio_bit_set(GPIOC,GPIO_PIN_10))
///<2F><>AS5047D_HORI<52><49>CLK<4C><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
#define AS5047D_HORI_CLK_LOW (gpio_bit_reset(GPIOC,GPIO_PIN_10))
///MISO
///AS5047D_HORI<52><49>MISO<53><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵĵ<C5B5>ƽֵ
#define AS5047D_HORI_MISO_READ (gpio_input_bit_get(GPIOC,GPIO_PIN_11))
///MOSI
///<2F><>AS5047D_HORI<52><49>MOSI<53><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
#define AS5047D_HORI_MOSI_HIGH (gpio_bit_set(GPIOC,GPIO_PIN_12))
///<2F><>AS5047D_HORI<52><49>MOSI<53><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
#define AS5047D_HORI_MOSI_LOW (gpio_bit_reset(GPIOC,GPIO_PIN_12))
///<2F><>ֱAS5047D<37>˿<EFBFBD>
///<2F><>ֱAS5047D_VERTоƬ<D0BE><C6AC><EFBFBD>ſ<EFBFBD><C5BF><EFBFBD>
///CSn
///<2F><>AS5047D_VERT<52><54>CSn<53><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
#define AS5047D_VERT_CSN_DISABLE (gpio_bit_set(GPIOD,GPIO_PIN_0))
///<2F><>AS5047D_VERT<52><54>CSn<53><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
#define AS5047D_VERT_CSN_ENABLE (gpio_bit_reset(GPIOD,GPIO_PIN_0))
///CLK
///<2F><>AS5047D_VERT<52><54>CLK<4C><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
#define AS5047D_VERT_CLK_HIGH (gpio_bit_set(GPIOD,GPIO_PIN_1))
///<2F><>AS5047D_VERT<52><54>CLK<4C><4B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
#define AS5047D_VERT_CLK_LOW (gpio_bit_reset(GPIOD,GPIO_PIN_1))
///MISO
///<2F><>ȡ<EFBFBD><C8A1>AS5047D_VERT<52><54>MISO<53><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵĵ<C5B5>ƽֵ
#define AS5047D_VERT_MISO_READ (gpio_input_bit_get(GPIOD,GPIO_PIN_2))
///MOSI
///<2F><>AS5047D_VERT<52><54>MOSI<53><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ߵ<EFBFBD>ƽ
#define AS5047D_VERT_MOSI_HIGH (gpio_bit_set(GPIOD,GPIO_PIN_3))
///<2F><>AS5047D_VERT<52><54>MOSI<53><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>͵<EFBFBD>ƽ
#define AS5047D_VERT_MOSI_LOW (gpio_bit_reset(GPIOD,GPIO_PIN_3))
///AS5047D<37>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
///NOP
#define AS5047D_NOP 0x0000
///Clear Error Flag
#define AS5047D_CEF 0X0001
///Programming Control
#define AS5047D_PC 0X0003
///OTP Register Zero Position Hi
#define AS5047D_ORZPH 0X0016
///OTP Register Zero Position Low 6 LSBs
#define AS5047D_ORZPL 0X0017
///Diagnostics + Automatic Gain Control (AGC)
#define AS5047D_D_AGC 0X3FFD
///Magnitude
#define AS5047D_M 0X3FFE
///Angle
#define AS5047D_ANGLE 0X3FFF
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CLEAR ERROR FLAG 0100 0000 0000 0001
#define AS5047D_CLEAR_ERROR_FLAG 0X4001
///AS5047D<37>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
///<2F><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define AS5047D_READ_COMMAND 0X4000
///д<>Ĵ<EFBFBD><C4B4><EFBFBD>
#define AS5047D_WRITE_COMMAND 0XBFFF
///д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AS5047D_WRITE_DATA 0X0001
///<2F>жϽ<D0B6><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define AS5047D_JUDGE_RECEIVE_DATA 0X4000 // 0100 0000 0000 0000
///<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define AS5047D_READ_NUM 3
///<2F>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
#define AS5047D_WRITE_NUM 3
#define AS5047D_DIR_FWD 1 //<2F>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
#define AS5047D_DIR_REV 0 //<2F>ű<EFBFBD><C5B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>
///<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>жϽ<D0B6><CFBD><EFBFBD>
///
///<2F><><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>жϽ<D0B6><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>ԭ<EFBFBD><D4AD>
///_master<65><72>ʾas5047d<37>Խ<EFBFBD><D4BD>յ<EFBFBD><D5B5><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>жϵĽ<CFB5><C4BD><EFBFBD><EFBFBD><EFBFBD>_slave<76><65>ʾK60<36><30>as5047d<37><64><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0>жϽ<D0B6><CFBD><EFBFBD>
typedef struct _As5047DJudgeReceivePackage_
{
///<2F><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
unsigned int package;
///k60<36><30>AS5047D<37>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD>ж<EFBFBD>
///<2F>жϽ<D0B6><CFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݰ<EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ,1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>
unsigned char parity_error_package;
///AS5047D<37>Խ<EFBFBD><D4BD>յ<EFBFBD><D5B5><EFBFBD>K60ָ<30><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><><D6B8><EFBFBD>д<EFBFBD>ʱ<EFBFBD>Ļظ<C4BB><D8B8><EFBFBD><EFBFBD><EFBFBD>
///<2F><><EFBFBD><EFBFBD>Error flag<61><67>EF<45><46>λ<EFBFBD><CEBB>
unsigned char error_flag_command;
///У<><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>
unsigned char parity_error_command;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>
unsigned char command_invalid_command;
///֡<><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>
unsigned char framing_error_command;
///<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD>0<EFBFBD><30><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>1<EFBFBD>ɹ<EFBFBD>.<2E><><EFBFBD>ж<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD>
unsigned char Operation_Result;
}As5047DJudgeReceivePackage;
///<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void as5047d_init();
As5047DJudgeReceivePackage as5047d_hori_judge_receive_package(unsigned int package);
As5047DJudgeReceivePackage as5047d_vert_judge_receive_package(unsigned int package);
unsigned int as5047d_command_type(unsigned int package, unsigned int type);
unsigned int as5047d_hori_receive_package();
unsigned int as5047d_hori_read_command(unsigned int add);
unsigned int as5047d_hori_send_package(unsigned int package);
unsigned int as5047d_hori_write_command(unsigned int add);
unsigned int as5047d_hori_nop_command();
As5047DJudgeReceivePackage as5047d_hori_write_data(unsigned int add,unsigned int data);
unsigned int as5047d_hori_read_data(unsigned int add);
float as5047d_hori_get_angle();
unsigned int as5047d_hori_cef_command();
unsigned int as5047d_vert_receive_package();
unsigned int as5047d_vert_read_command(unsigned int add);
unsigned int as5047d_vert_send_package(unsigned int package);
unsigned int as5047d_vert_write_command(unsigned int add);
unsigned int as5047d_vert_nop_command();
As5047DJudgeReceivePackage as5047d_vert_write_data(unsigned int add,unsigned int data);
unsigned int as5047d_vert_read_data(unsigned int add);
float as5047d_vert_get_angle();
unsigned int as5047d_vert_cef_command();
float as5047d_hori_get_angle_a();
float as5047d_vert_get_angle_a();
#endif