WXK
2025-02-11 e328ebef585cea2351b37117b2d5ac4978ecd3c0
keil/include/board/board.h
@@ -45,12 +45,21 @@
#include "mk_trace.h"
#include "mk_gpio.h"
#ifndef TRACE_BAUD_RATE
#define TRACE_BAUD_RATE (BAUD_921600)
#endif
#ifndef X38M4_AUTO_TUNE_EN
#define X38M4_AUTO_TUNE_EN (0)
#else
#endif
/*   LGA                CSP
IO00 - UART1 RX         - UART1 RX
IO01 - UART1 TX         - UART1 TX (trace port)
IO02 - Ranging Role     - Ranging Role
IO03 -                  - ISP_EN
IO04 -                  - UCI Handshake S->H
IO04 - Ranging Role     - UCI Handshake S->H | Ranging Role
IO05 - UART0_TX         - UART0_TX | SPI_MISO
IO06 - UART0_RX         - UART0_RX | SPI_MOSI
IO07 - LED              - LED      | SPI_CLK
@@ -74,7 +83,7 @@
/* Board leds */
#define BOARD_LED_1 IO_PIN_7
#define BOARD_LED_2 IO_PIN_8
//#define BOARD_LED_2 IO_PIN_8
/** UCI handshake pin, from host to slave  */
#define HOST2SLAVE_HS_GPIO (IO_PIN_17)
@@ -82,16 +91,23 @@
/** UCI handshake pin, from slave to host */
#define SLAVE2HOST_HS_GPIO (IO_PIN_4)
/** Ranging role pin */
#if (X38M4_AUTO_TUNE_EN == 2)
#define RANGING_ROLE_PIN (IO_PIN_4)
#else
#define RANGING_ROLE_PIN (IO_PIN_2)
#endif
#define CALIB_CH9 0
#define CALIB_CH5 1
#define CALIB_CH2 2
#define CALIB_CH_NUM 3
#define SLEEP_TIMER_NUM 500
#define CALIB_CH(x) (x == 9 ? 0 : (x == 5 ? 1 : 2))
enum BOARD_NVM_ITEM_ID_T
{
    BOARD_LOAD_CAP = 1,
    BOARD_X38M4_LOAD_CAP = 1,
    BOARD_LOCAL_SHORT_ADDR = 2,
    BOARD_PEER_SHORT_ADDR = 3,
    BOARD_RANGING_SESSION_ID = 4,
@@ -104,13 +120,16 @@
    BOARD_PDOA_ANT_SPACE = 11,
    BOARD_PDOA_OFFSETS = 12,
    BOARD_X32K_LOAD_CAP = 13,
    BOARD_CALIB_X38M4_TEMPERATURE = 14,
    BOARD_CALIB_X38M4_PPM = 15,
    BOARD_ANGLE_CORRECTION = 16,
};
/* Board parameters */
struct BOARD_PARAM_T
{
    uint32_t flag;
    uint8_t load_cap;
    uint8_t x38m4_load_cap;
    uint8_t tx_power_fcc[CALIB_CH_NUM]; // [CH9, CH5, CH2]
    uint16_t ranging_session_id;
    uint16_t local_short_addr;
@@ -123,6 +142,10 @@
    uint8_t dev_role;
    uint8_t dev_role_idx;
    uint8_t x32k_load_cap;
    int16_t calib_x38m4_temperature; // degree centigrade
    int16_t calib_x38m4_ppm;         // unit is 0.01 ppm
    // [azimuth_correction[8],elevation_correction[8]],azimuth_correction[8]=[k,b,s1,k1,b1,s2,k2,b2],k=gain*0.001,b=offset*0.1,s=angle_threshold*0.1
    int16_t angle_correction[16];
};
#if defined(__cplusplus)
@@ -150,12 +173,6 @@
 */
void board_debug_console_open(enum TRACE_PORT_T port);
/**
 * @brief Configure debug trace port and baud.
 * @param[in] port      Trace port
 *
 */
void board_debug_console_open_baud(enum TRACE_PORT_T port,enum UART_BAUD_T baud_rate);
/**
 * @brief Load default calibration parameters.
 *
@@ -187,23 +204,23 @@
void board_ranging_result_correct(uint16_t *distance, int16_t *azimuth, int16_t *elevation);
/**
 * @brief Get XTAL 38.4M Frequency offset.
 * @param[in] p_ppm         pointer of the ppm to be written, unit is 0.01 ppm
 * @return
 *         @arg DRV_DEV_UNAVAILABLE     get unavaliable value
 *         @arg DRV_ERROR               adc_get error id
 *         @arg DRV_BUSY                adc_get send failed because of ADC is busy
 *         @arg DEV_OK                  get ppm success
 */
int32_t board_x38m4_ppm_get(int32_t *p_ppm);
/**
 * @brief Configure button GPIO.
 * @param[in] irq_handler       button interrupt process handler
 *
 */
void board_button_init(GPIO_IRQ_HANDLER_T irq_handler);
/**
 * @brief Configure button GPIO.
 * @param[in] irq_handler 5v input interrupt process handler
 *
 */
void board_5V_input_init(GPIO_IRQ_HANDLER_T irq_handler);
/**
 * @brief Configure button GPIO.
 * @param[in] irq_handler accelerate input interrupt process handler
 *
 */
void board_acceleration_detection_init(GPIO_IRQ_HANDLER_T irq_handler);
/**
 * @brief Configure LED GPIO.
 *
@@ -248,16 +265,7 @@
 *
 */
void board_restore_from_power_down(void);
/**
 * @brief Change uart1 gps to debug.
 *
 */
void uart1_change_from_gps_to_debug(void);
/**
 * @brief Change uart1 debug to gps.
 *
 */
void uart1_change_from_debug_to_gps(void);
#if defined(__cplusplus)
}
#endif