📄 global.h
字号:
//*********************************************************************************
//* ST 7538/40 DEMOBOARD SOFTWARE global.h *
//* *
//* Global constants/macros/variables V2.0 *
//*
//*
//*
//* Structure of file:
//* - Type Definition --> Definition of new types
//* - Headers --> File headers
//* - Data used: --> Data (constant and variable) and macros
//* - Main --> FW and Board, CR and dual channel data
//* - Timer --> Timers used in all sections
//* - Phy Layer --> SPI and Pin control data
//* - Ping --> Ping data
//*********************************************************************************
#ifndef __GLOBAL_H__
#define __GLOBAL_H__
#define _DEFVAR
#ifdef _DEFVAR
#define EXTRN
#else
#define EXTRN extern
#endif
// Types definition
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef union { unsigned char field[4];
unsigned long whole;
} long_type;
#define TRUE 1
#define FALSE 0
// Headers
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "PLM_Map_7265.h"
#include "IO.h"
#include "timer.h"
#include "Phy_Layer.h"
#include "ping.h"
#include "crc.h"
#include "debug.h"
#pragma DATA_SEG APP_RAM
//*********************************************************
// Main
//*********************************************************
// Macros
#define DI asm sim; // Interrupt
#define EI asm rim;
#define SET_PLM_ID_PORT() PCDDR&=~0x80;PCOR&=~0x80;PDDDR&=~0x40;PDOR&=~0x40 // PLM Board ID (PC7-PD6)
#define GET_PLM_ID() ((PCDR&0x80)|(PDDR&0x40))
#define CH2_SELECT() (CH2_PORT=((CH2_PORT&~(CH2_MASK|NCH2_MASK))|(CH2_MASK))) // Dual channel
#define CH2_DESELECT() (CH2_PORT=((CH2_PORT&~(CH2_MASK|NCH2_MASK))|(NCH2_MASK)))
//Constants
#define CH2_PORT PEDR // Dual Channel port
#define CH2_DIR PEDDR
#define CH2_OPT PEOR
#define CH2_MASK 0x02
#define NCH2_MASK 0x10
#define ST7538 0x00 // PC7=0 | PD6=0
#define ST7540 0x40 // PC7=0 | PD6=1
//#define OTHER1 0x80 // PC7=1 | PD6=0
//#define OTHER2 0xC0 // PC7=1 | PD6=1
#define bps600 0x00 //CR bits of possible baud rates
#define bps1200 0x08
#define bps2400 0x10
#define bps4800 0x18
#define Fw_Desc_PId_ST7540 "ST7540 " //must be 10 length (or terminated by \0 char)
#define Fw_Desc_PId_ST7538 "ST7538 "
#define Fw_Desc_Type "PLM"
#define Fw_Desc_Rev "4.0 r"
#define Fw_Desc_App_String "STM Eval tools"
// Variables
EXTRN unsigned long ST7538_CR; // ST7538/40 Control register (bits from 23 to 0)
EXTRN BYTE Modem_Id; //PLM Board identification code
EXTRN char *Product_Id;
EXTRN char ch; // dual channel
// EXTRN unsigned char Button;
//*********************************************************
// Timer
//*********************************************************
// Macros
#define _200mS_Delay_Elapsed() TIMEOUT_Expired(tim200ms) //Tx timer (transmission repeated and ping)
#define refresh_200mS_Delay() TIMEOUT_Refresh(tim200ms)
#define _4mS_Delay_Elapsed() TIMEOUT_Expired(tim4ms) //Ping CDMA slot Timer
#define refresh_4mS_Delay() TIMEOUT_Refresh(tim4ms)
#define _5mS_Delay_Elapsed() TIMEOUT_Expired(tim5ms) //WD Timer
#define refresh_5mS_Delay() TIMEOUT_Refresh(tim5ms)
// Variables
EXTRN BYTE tim4ms, //Ping CDMA Timer
tim5ms, //WD Timer
tim200ms, //Tx timer (transmission repeated and ping)
timIntA, //Ping CDMA Max Wait Timer
timWait; //Ping Master Wait Time Timer
//*********************************************************
// Physical Layer
//*********************************************************
// Macros
#define SET_LED_TOUT(x) ((x)?(PFDR&=~0x08):(PFDR|=0x08)) // LEDs
#define SET_LED_CDPD(x) ((x)?(PFDR&=~0x10):(PFDR|=0x10))
#define SET_LED_TX(x) ((x)?(PFDR&=~0x40):(PFDR|=0x40))
#define SET_LED_RX(x) ((x)?(PFDR&=~0x20):(PFDR|=0x20))
// Constants
#define SPI_BUFFER_SIZE 128
#define SPI_BUFFER_MASK 0x7F
#define SPI_IN_TX_BIT 0x00 // flag which means SPI in TX MODE
#define SPI_IN_RX_BIT 0x01 // flag which means SPI in RX MODE
#define SPI_LOOP_BIT 0x03 // makes the program LOOP the data transmission
#define SPI_RXED_SYN_BIT 0x04 // Flag to indicate that Synchromous RX mode is ON
#define SPI_REG_BIT 0x05 // flag which means SPI used in register access
#define SPI_SYNCHRO_BIT 0x06 // Flag to see if we are in synchro mode
#define SPI_IN_TX_MASK (1<<SPI_IN_TX_BIT)
#define SPI_IN_RX_MASK (1<<SPI_IN_RX_BIT)
#define SPI_LOOP_MASK (1<<SPI_LOOP_BIT)
#define SPI_RXED_SYN_MASK (1<<SPI_RXED_SYN_BIT)
#define SPI_REG_MASK (1<<SPI_REG_BIT)
#define SPI_SYNCHRO_MASK (1<<SPI_SYNCHRO_BIT)
#define RX_NO_SYN 0 // Type of RX
#define RX_SYN 1
#define RX_TXDH 2
#define RX_SYN_TXDH 3
// Variables
EXTRN char SPI_Buffer[SPI_BUFFER_SIZE]; //SPI interface to the PLM
EXTRN BYTE SPI_Flags;
EXTRN unsigned char Repeating_Number;
EXTRN enum {REPEAT_MODE_ON=0, REPEAT_MODE_OFF=1} Repeated_Mode;
//*********************************************************
// Ping
//*********************************************************
// Constants
#define PS_STOP 0 // Ping status
#define PS_START 1
#define PS_WAIT 2
#define PS_NORX 3
#define PS_RXOK 4
#define PS_SEND 5
#define PF_SYNCHRO 0x01 // Ping Flags
#define PF_RECV 0x02
#define PF_MASTER 0x04
#define PF_FEC 0x10
#define PR_OK 0 // reponses to PC
#define PR_FCS 1
#define PR_NOACK 2
#define PR_FEC 3
#define NO_ 0x00 // CDMA
#define BU_ 0x01 // detect if "Band in use" signal is present
#define PD_ 0x02 // detect if "Preamble detect" signal is present
// Variables
EXTRN BYTE PING_Flags;
EXTRN BYTE PING_Status;
EXTRN BYTE rep_count;
EXTRN BYTE repetition;
EXTRN BYTE CDMA_Mode;
EXTRN BYTE max_slots;
EXTRN WORD max_time;
EXTRN WORD Wait_time;
EXTRN long_type msg_num,
old_msg_num,
max_msg_num,
ok_msg,
wrong_msg,
corr_msg,
more_msg;
EXTRN BYTE Mast_Add,
Slave_Add,
Slave_Num,
CDMA_flags,Master_Stat[6];
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -