📄 dd._h
字号:
/*****************************************************************************
* dd.h
*****************************************************************************/
#ifndef _dd_H
#define _dd_H
/* Include dependencies */
#include <iom16v.h>
#include "adi_types.h"
#include <string.h>
#include <macros.h>
#include <stdio.h>
/****************************************************************************
* Hardware pin mapping *
****************************************************************************/
/* ADF7021 register interface */
#define ADF7021_SCLK 0 // PA OUTPUT
#define ADF7021_SDATA 2 // PA OUTPUT
#define ADF7021_SLE 3 // PA OUTPUT
#define ADF7021_SREAD 1 // PA INPUT
#define CTR_RXTX 4 // PA OUTPUT
#define RFMD_EN 6 // PA OUTPUT
/* Other ADF7021 connections */
#define ADF7021_CE 3 // PB OUTPUT
#define ADF7021_MUXOUT 2 // PB INPUT
/* GPIO access to SPI lines */
#define SPI_SCLOCK 7 // PB INPUT
#define SPI_MISO 6 // PB OUTPUT
#define SPI_MOSI 5 // PB INPUT
/* LEDs */
#define TX_LED 3 // PD OUTPUT
#define RX_LED 4 // PD OUTPUT
/* I2C */
#define RF_SCL 0 // PC OUTPUT
#define RF_SDA 1 // PC OUTPUT
#define RF_WR 7 // PD OUTPUT
/* INIT */
#define init 6 // PD INPUT
/* UART */
#define RXD_MCU 0 // PD INPUT
#define TXD_MCU 1 // PD OUTPUT
/* Default states to set ports to after power up */
/* (These must be set manually based on the mappings above) */
#define P0_DEFAULT 0xFF // Output (P0 is open drain & has no pullups)
#define P1_DEFAULT 0x5F // P1.7 & P1.5 digital in, others analogue in
#define P2_DEFAULT 0x5F // Input, ADF7021_SCLK and ADF7021_SLE low
#define P3_DEFAULT 0x7F // Input, ADF7021_CE low
/* Flag to indicate sleep state and cause of wakeup */
typedef enum
{
AWAKE = 1
, SLEEPING = 2
, POLLING = 3
, WOKEN_BY_TIMER = 4
, WOKEN_BY_HW_EVENT = 5
} SLEEP_FLAG_E;
typedef enum
{
DATA_PORT_IDLE = 1
, DATA_PORT_TRANSMITTING = 2
, DATA_PORT_RECEIVING = 3
} DATA_PORT_STATE_E;
typedef enum
{
PHY_DISABLED = 1
, PHY_POWERON = 2
, PHY_IN_RX_MODE = 3
, PHY_IN_TX_MODE = 4
, PHY_IN_RSSI_MODE = 5
} PHY_STATE_E;
typedef enum
{
UART_PORT_IDLE = 1
, UART_PORT_TRANSMITTING = 2
, UART_PORT_RECEIVING = 3
} UART_PORT_STATE_E;
typedef enum
{
HOST_CMD_IDLE = 0x00
, HOST_CMD_TX_FRAME = 0x10
, HOST_CMD_TX_FRAME_FOREVER_STRART = 0x18
, HOST_CMD_TX_FRAME_FOREVER_STOP = 0x19
, HOST_CMD_TX_FRAME_MAX_TIMES = 0x1A
, HOST_CMD_RX_FRAME = 0x20
, HOST_CMD_POWERON = 0x30
, HOST_CMD_POWERDOWN = 0x31
, HOST_CMD_TX_MODE = 0x32
, HOST_CMD_RX_MODE = 0x33
, HOST_CMD_REG_WRITE = 0x38 //write ADF70xx register
, HOST_CMD_REG_READ = 0x39 //read ADF70xx register
, HOST_CMD_READ_AFC = 0x50 //readback AFC
, HOST_CMD_READ_RSSI = 0x54 //readback RSSI
, HOST_CMD_READ_BATT = 0x55 //readback battery voltage
, HOST_CMD_READ_TEMP = 0x56 //readback temperature
, HOST_CMD_READ_EXT_ADC = 0x57 //readback external voltage
, HOST_CMD_READ_FILTER = 0x58 //readback filter cal
, HOST_CMD_READ_VERSION = 0x5C //readback ADF70xx version
, HOST_CMD_LOOPBACK = 0x80
} UART_CMD_E;
typedef enum
{
PACKET_PHASE_IDLE = 1
, PACKET_PHASE_PREAMBLE = 2
, PACKET_PHASE_SYNCWORD = 3
, PACKET_PHASE_HEADER = 4
, PACKET_PHASE_PAYLOAD = 5
, PACKET_PHASE_CRC = 6
, PACKET_PHASE_ENDAMBLE = 7
, PACKET_PHASE_LENGTH = 8
, PACKET_PHASE_TX_FRAME = 9
, PACKET_PHASE_RX_FRAME = 10
} PACKET_PHASE_E;
#define UART_PAYLOAD_LENGTH 252
/****************************************************************************
* Public Variable and Buffer Prototypes *
****************************************************************************/
/* Variables exported from device drivers */
extern SLEEP_FLAG_E sleep_flag;
extern char dd_user_irq_occurred;
extern unsigned char max_transmit_times;
extern char need_keep_transmitting;
extern char is_use_crystal;
extern char is_ADF7021_AFC_ON;
extern char is_fine_IF_filter_cal;
extern char is_internal_PA_ramp_used;
extern char has_set_tx_mode_before;
extern char has_set_rx_mode_before;
extern char dd_has_received_whole_frame;
#define max_uart_buffer_size 100
#define max_port_data_buffer_size 100
//for data port buffer and variable
extern unsigned char dd_port_data_tx_buffer[max_port_data_buffer_size];
extern unsigned char dd_port_data_rx_buffer[max_port_data_buffer_size];
extern unsigned char dd_port_data_tx_frame_idx;
extern unsigned char dd_port_data_rx_frame_idx;
extern unsigned char dd_port_data_rx_payload_length;
extern unsigned char * p_active_data_tx_buffer;
extern DATA_PORT_STATE_E dd_data_port_state;
extern PACKET_PHASE_E dd_data_packet_phase;
//!!!!!!!!!new
extern unsigned char rf_tx_state[3];
extern unsigned char uart_rx_rf_tx_count;
extern unsigned char time_count;
//for uart buffer and variable
extern unsigned char uart_rx_buffer[max_uart_buffer_size];
extern unsigned char uart_tx_buffer[max_uart_buffer_size];
extern unsigned char uart_buffer_tx_idx;
extern unsigned char uart_buffer_rx_idx;
extern unsigned char * p_active_uart_buffer;
extern unsigned char uart_rx_payload_length;
extern unsigned char uart_tx_payload_length;
extern UART_PORT_STATE_E dd_uart_host_state;
extern UART_CMD_E dd_uart_command;
//for phy
extern PHY_STATE_E phy_state;
//for mac
extern struct MAC_PACKET_HEADER_T mac_rx_packet_header;
extern struct MAC_PACKET_HEADER_T mac_tx_packet_header;
extern unsigned char * p_mac_active_tx_frame;
extern unsigned char crc_lo, crc_hi;
extern unsigned char temp_count[4];
extern unsigned int temp_count1[4];
extern unsigned char led_state[2];
extern unsigned char crc_tempn[2];
/****************************************************************************
* Function Reference Prototypes *
****************************************************************************/
// for ADF7021.c
extern union ADF70XX_REG_T dd_read_7021_reg(unsigned char);
extern void dd_write_7021_reg(unsigned char * reg_bytes);
extern void dd_set_TX_to_RX_mode(void);
extern void dd_set_RX_mode(void);
extern void dd_set_TX_mode(void);
extern void dd_set_RX_to_TX_mode(void);
extern void dd_set_ADF7021_Power_on(void);
extern void dd_set_ADF7021_Power_off(void);
extern void dd_read_ADF70XX_version(void);
extern void test_mode(void);
extern void dd_read_filter_cal(void);
// for ADuC847.c
extern void dd_initialise(void);
extern void dd_idle(void);
extern void my_delay(long);
extern void my_delay_1(unsigned int length);
extern void dd_short_delay(unsigned char count);
//Data Port Functions
extern void dd_data_port_rx_handler(void);
extern unsigned int crc16(unsigned char byte);
// for main.c
extern void transmit_constant_frame(void);
extern void receive_constant_frame(void);
//Uart Functions
extern void dd_uart_port_tx(unsigned char * p_buffer, unsigned char tx_number);
extern void uart_rx_data_handler(void);
// const data matrix
//extern unsigned char code tx_frame_payload[];
//extern unsigned char code mac_preamble_syncword[];
//
extern unsigned char ADF7021_CE_SIGNAL;
#pragma interrupt_handler dd_spi_i2c_isr:11
#pragma interrupt_handler timer1_int:7
#pragma interrupt_handler dd_adf7021_sync_isr:19
#pragma interrupt_handler UART_RECV_DEAL:12
#pragma interrupt_handler UART_SEND_DEAL:14
extern void timer1_int (void);
extern void timer1_init (void);
extern void USART_Init(void);
extern union ADF70XX_REG_T
{
unsigned long whole_reg;
unsigned char byte[4]; // Warning: Be endian-specific when accessing bytes
};
extern struct MAC_PACKET_HEADER_T
{
unsigned int seq_number;
unsigned char short_address;
unsigned char payload_length;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -