TLE5012B_spi.h
3.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#ifndef __TLE5012B_SPI_H__
#define __TLE5012B_SPI_H__
#include "stdint.h"
// TLE5012B Gun Configurtion
#include "TLE5012B_spi_Config.h"
/*_____________________TL5012 BSP PLE Setting Start____________________*/
// TLE5012B Angle Process Optimize Option (Use IQ) : Fast more than 20% (compare with hardwave FPV)
#define TLE5012B_BSP_SPI_USE_IQ TLE5012B_SPI_CONFIG_USE_IQ
#define TLE5012B_BSP_PLATFORM_SELECT TLE5012B_SPI_CONFIG_PLAFORM
/*‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾TL5012 BSP PLE Setting END‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾*/
#if TLE5012B_BSP_SPI_USE_IQ == TLE5012B_SPI_CONFIG_ENABLE
#include "IQmathLib.h"
#endif
#if TLE5012B_BSP_PLATFORM_SELECT == TLE5012_SUPPORT_PLATFORM_F1
#include "stm32f1xx_ll_spi.h"
#include "stm32f1xx_ll_gpio.h"
#endif
#if TLE5012B_BSP_PLATFORM_SELECT == TLE5012_SUPPORT_PLATFORM_F4
#include "stm32f4xx_ll_spi.h"
#include "stm32f4xx_ll_gpio.h"
#endif
/*_____________________TL5012 BSP Hardware Setting START_____________________*/
// TLE5012 SPI Setting
#define TLE5012_SPIx_BASE TLE5012_SPI_BASE
#define TLE5012_SPIx_CS_GPIO TLE5012_SPI_CS_GPIO
#define TLE5012_SPIx_CS_GPIOPIN TLE5012_SPI_CS_GPIOPIN
#define TLE5012_SPIx_TX_GPIO TLE5012_SPI_TX_GPIO
#define TLE5012_SPIx_TX_GPIOPIN TLE5012_SPI_TX_GPIOPIN
//‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾TL5012 BSP Hardware Setting END‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
/***********************************TL5012 BSP Content***************************/
// TLE5012 SPI Util
#define TLE5012_CS1_Enable LL_GPIO_ResetOutputPin(TLE5012_SPIx_CS_GPIO,TLE5012_SPIx_CS_GPIOPIN);
#define TLE5012_CS1_Disable LL_GPIO_SetOutputPin(TLE5012_SPIx_CS_GPIO,TLE5012_SPIx_CS_GPIOPIN);
#define TLE5012_TX_OFF LL_GPIO_SetPinOutputType(TLE5012_SPIx_TX_GPIO,TLE5012_SPIx_TX_GPIOPIN,LL_GPIO_OUTPUT_OPENDRAIN);
#define TLE5012_TX_ON LL_GPIO_SetPinOutputType(TLE5012_SPIx_TX_GPIO,TLE5012_SPIx_TX_GPIOPIN,LL_GPIO_OUTPUT_PUSHPULL);
// TLE5012 SPI Comm Addr
#define TLE5012_CMD_READ_STATUS 0x8001 // 8000
#define TLE5012_CMD_READ_ANGLE_VALUE 0x8021 // 8020
#define TLE5012_CMD_READ_SPEED_VALUE 0x8031 // 8020
#define TLE5012_CMD_READ_MOD_2 0x8081
#define TLE5012_CMD_WRITE_MOD_2 0x5081
#define TLE5012_CMD_WRITE_STATUS 0x5011 // 8000
#define TLE5012_CMD_MOD_2_PREDIECTION_MASK 0x0008
#define TLE5012_CMD_MOD_2_PREDIECTION_UNMASK 0xFFF7
void tle5012b_spi_init(void);
uint16_t tle5012b_read_angleRAW(void);
#if TLE5012B_BSP_SPI_USE_IQ == TLE5012B_SPI_CONFIG_ENABLE
float tle5012b_read_angle_iq(void);
_iq14 tle5012b_read_angle_iqOut(void);
#endif
#define TLE5012B_RECAVG_BUFFLEN 5
float tle5012b_read_angle_f(void);
float tle5012b_read_angle_RecAVGF_f(void);
float tle5012b_read_angleAbs_f(void);
float tle5012b_read_angleAbs_AvgF_f(void);
// float tle5012b_read_angleAbs_InterF_f(uint32_t filterSelect);
float tle5012b_read_angleAbs_InterF_f();
float tle5012b_read_angleAbs_InterFPre_f(void);
#endif