166 lines
4.9 KiB
C
166 lines
4.9 KiB
C
|
#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
|