⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soc_test.h

📁 atmega128串口通信
💻 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 + -