📄 soc_test.h
字号:
/*********************************************************************
端口定义
*********************************************************************/
//DDS
#define NBUS_CLK PORTE2 //命令接口时钟
#define BUSWEN PORTE3 //命令接口写使能
#define SAMPLE_START PORTE4 //DDC数据接收开始
#define MCUREAD_START PORTE5 //单片机读DDC数据开始
/*********************************************************************
FPGA内部控制寄存器定义
*********************************************************************/
//写命令总线低字节地址0x11ff
#define INSTRUCT_BYTE_LOW (*(volatile unsigned char *)0x11ff)
//写命令总线高字节地址0x12ff
#define INSTRUCT_BYTE_HIG (*(volatile unsigned char *)0x12ff)
//命令总线地址的地址0x13ff
#define INSTRUCT_ADD (*(volatile unsigned char *)0x13ff)
//读命令总线高字节地址0x14ff
#define BUSIOREAD_BYTE_HIG (*(volatile unsigned char *)0x14ff)
//读命令总线低字节地址0x15ff
#define BUSIOREAD_BYTE_LOW (*(volatile unsigned char *)0x15ff)
//读DDC数据的地址0x16ff
#define DDCDATA_ADD (*(volatile unsigned char *)0x16ff)
//LED控制字地址0x17ff
#define LED_CONTROL (*(volatile unsigned char *)0x17ff)
//系统控制寄存器低字节0x18ff
#define SYSCTL_BYTE_LOW (*(volatile unsigned char *)0x18ff)
//系统控制寄存器高字节0x19ff
#define SYSCTL_BYTE_HIG (*(volatile unsigned char *)0x19ff)
/*********************************************************************
常量定义
*********************************************************************/
#define MAX_RECEV_LEN 100 //所收命令字节的允许最大长度
#define MAX_SEND_LEN 20 //发送的最大字符长度
#define ADDRESS_WORD 0x5F //地址字
#define BEGIN_WORD 0x7E //起始字
#define END_WORD 0x7E //结束字
#define CHANGE_WORDH 0x7D //转义字
#define CHANGE_WORDL1 0x5E //转义字
#define CHANGE_WORDL2 0x5D //转义字
//各回复命令的长度
#define L00 7
#define L02 10
#define L03 7
#define L04 7
//SOC寄存器设置定义
#define DDC_PARAM 0b0000000010001110 //1-旁路 0-接入bit0 旁路数字混频器 bit1 旁路CIC bit2 旁路HB bit3 旁路FIR bit7 1/补码 0 偏移码
#define CIC_PARAM 0b0111010000011010 //bit0-bit1 00 3阶 01 4阶 10 5阶(默认)bit2-bit9 抽取因子 bit10-bit15输出截位设置
#define HB_PARAM 0b0000000000010000 //bit0-bit3 输入数据增益控制 bit4-bit7 输出数据增益控制 bit8-bit15 抽取因子
#define FIR_PARAM 0b0000000101100100 //bit0-bit3 输入数据增益控制 bit4-bit7 输出数据增益控制 bit8-bit15 抽取因子
/*********************************************************************
全局变量定义
*********************************************************************/
unsigned char buffer[MAX_RECEV_LEN]; //接收串口数据的缓冲区
unsigned char reply_buffer[MAX_SEND_LEN]; //串口发送缓冲区
//以下几个全局变量用于串口通信
unsigned char beginWord; //串口接收开始字
unsigned char endWord; //串口接收结束字
unsigned char haveUartInt; //标志有串口中断
unsigned char haveError; //标志接收出错
unsigned char haveSpeWord; //标志有转义字符
unsigned char buf_index; //缓冲区索引
unsigned char buf_length; //接收命令长度
unsigned char systemregL; //系统寄存器低字节
unsigned char systemregH; //系统寄存器高字节
short ddc_param; //DDC设置寄存器
// 中断向量表
//**********************************************************************
//*********************************************************************/
#pragma interrupt_handler usart0_receive:19
/*********************************************************************
**********************************************************************
函数定义
**********************************************************************
*********************************************************************/
void Reset_FPGA(void); //复位FPGA
void NOP5(void); //5个NOP
void initial_work(void); //初始化工作
void process_00workmode(void); //工作模式配置及应答
void process_01wait(void); //等待状态
void delay1(void); //通用延时子程序
void query_TXC(void); //串口发送查询
void enable_XMEM(void); //使能外部SRAM
void usart_flush(void); //清串口
void usart0_send(unsigned char uSendLen); //通过异步串口0发送回复命令
void usart0_sendbyte(unsigned char uSendByte); //通过异步串口0发送一个字节
void Write_bus_data(short bus_data); //向命令总线写命令数据
void Write_bus_add(unsigned char bus_add); //向命令总线写命令地址
void send_instruct(short command ,unsigned char address); //写控制命令
void start_sample(void); //启动DDC数据采样
void start_mcuread_sample(void); //启动单片机读DDC采样数据
void aquire_data(void); //通过串口获取DDC数据
void set_dds_freq(long dds_freq); //设置DDS频率
void set_dds_scale(short dds_amp); //设置DDS幅度
void set_dds_phase(short dds_phase); //设置DDS相位
void set_dds_increment(long dds_freqdelta); //设置DDS频率步进
void DDC_param_set(void); //DDC旁路设置
void NCO_freq_set(long nco_freq); //NCO频率设置
void NCO_phase_set(short nco_phase); //NCO相位设置
void CIC_param_set(void); //CIC参数设置
void HB_param_set(void); //HB参数设置
void FIR_param_set(void); //FIR参数设置
void DDS_param_set(void); //DDS参数设置
void NCO_param_set(void); //NCO参数设置
void sys_seting(void); //系统参数设置
/*********************************************************************
**********************************************************************
函数定义结束
**********************************************************************
*********************************************************************/
/*==================================================================*/
/*********************************************************************
**********************************************************************
数据表定义
**********************************************************************
*********************************************************************/
#pragma data:code
/*========================================*/
flash unsigned char work_state_succeed[]={
0x7E,0x5F,0x03,0x01,0x00,0x63,0x7E
};
flash unsigned char work_state_fail[]=
{
0x7E,0x5F,0x03,0x01,0x01,0x64,0x7E
};
/*========================================*/
flash unsigned char state_normal[]=
{
0x7E,0x5F,0x03,0x03,0x00,0x65,0x7E
};
flash unsigned char state_abnormal[]=
{
0x7E,0x5F,0x03,0x03,0x01,0x66,0x7E
};
/*========================================*/
flash unsigned char test_normal[]=
{
0x7E,0x5F,0x03,0x04,0x00,0x66,0x7E
};
//01,故障1
flash unsigned char test_abnormal[]=
{
0x7E,0x5F,0x03,0x04,0x01,0x67,0x7E
};
/*========================================*/
/* DDS频率字
其中,DDS芯片AD9851为32位频率字,即高4字节,
低2字节保留为FPGA中的DDS的频率字。
时钟为10MHz
FREQ_WORD=(FREQ*10^3)*(2^32)/(10*6*10^6)
注意:频率字从低位到高位排列
因为,送频率字时为串行发送
*******************************************/
flash unsigned char FREQ_WORD[][4]=
{
/*******************************************
0号频率 4915.2KHz
*******************************************/
{0x88,0xb5,0xf8,0x14},
/*******************************************
1号频率 5324.8KHz
*******************************************/
{0xFE,0x19,0xb8,0x16},
/*******************************************
2号频率 4672KHz
*******************************************/
{0xe2,0x11,0xef,0x13}
};
/*========================================*/
/* 系统处理数据速率 */
/*******************************************
设置系统处理的数据速率,首字节设置内插控制字,
第二个字节设置抽取预分频控制字,第三位设置
抽取控制字
0-2KHz 1-4KHz 2-8KHz 3-16KHz 4-32KHz
4-32KHz 5-64KHz 6-128KHz 7-256KHz 8-512KHz
*******************************************/
flash unsigned char T_PROCESS_CLK[][3]=
{
{0xFF,0x02,0x0F},{0x7F,0x02,0x0E},{0x3F,0x02,0x0C},{0x1F,0x02,0x08},
{0x0F,0x01,0x0C},{0x07,0x01,0x08},{0x03,0x00,0x0E},{0x01,0x00,0x0C},
{0x00,0x00,0x08}
};
#pragma data:data
/*********************************************************************
**********************************************************************
头文件结束
**********************************************************************
*********************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -