📄 ad.c
字号:
#include "lf2407regs.h"
unsigned int flag;
// SCLK BIT SPISCLK; 控制线定义
// FSYNC BIT PE.0
// SDATA BIT SPISIMO; 数据线
//系统初始化子程序
void xtinitial()
{
asm(" setc INTM"); //禁止总中断子程序
WSGR=0X00; //禁止所有的等待状态
asm(" setc SXM");
asm(" CLRC OVM");
asm(" CLRC CNF"); //B0被配置为数据空间
*SCSR1=0X87FE; //1倍频,CLKOUT=10MHz,使能各模块时钟
*WDCR=0X0E8; //不使能看门狗
*IMR=0X0000; //禁止所有中断
*IFR=0X0FFFF; //清除所有中断标志
}
//SPI模块初始化子程序
void SPIinitial()
{
*SPICCR=0X004F; //16个字符位,在SPICLK的上升沿发送数据,与AD9833在下降沿接收数据配合
*SPICTL=0X000E; //配置为主动方式,一般的时钟方式,允许发送,禁止超时中断,禁止SPI中断
*SPIBRR=0X0007; //SPI的波特率为1.25Mbps,
*MCRB=0X0FE14; //设置SPICLK,SPISIMO,IOPC5,IPOC3引脚
*MCRC=(*MCRC)|(0x0001); //设置CLKOUT引脚
*SPICCR=(*SPICCR)|(0X0080); //使SPI退出复位状态
}
//SPI发送数据子程序,需要发送的数据存放在GPR3寄存器中
void SPI1trans(unsigned int data_16)
{
*PCDATDIR=((*PCDATDIR)|(0X2000))&(0x0FFDF); //设置IOPC5为输出,且输出低电平,以选中AD9833芯片
*SPITXBUF=data_16; //向SPI的发送缓冲器写一个发送数据
while(1)
{
flag=(*SPISTS)&(0x0040); //flag=SPI的中断标志
if(flag==0x40)
break; //如果SPI的中断标志的中断标志为1,则证明SPI已经发送成功,则停止等待
}
*SPIRXBUF=*SPIRXBUF; //虚读SPIRXBUF寄存器,以清除SPI中断标志
*PCDATDIR=(*PCDATDIR)|(0x2020); //发送完毕,则IOPC5输出高,使发送的数据输出到AD9833的相应寄存器中
}
//SPI发送数据子程序,需要发送的数据存放在GPR3寄存器中
void SPI2trans(unsigned int data_16)
{
*PCDATDIR=((*PCDATDIR)|(0X0800))&(0x0FFF7); //设置IOPC3为输出,且输出低电平,以选中AD9833芯片
*SPITXBUF=data_16; //向SPI的发送缓冲器写一个发送数据
while(1)
{
flag=(*SPISTS)&(0x0040); //flag=SPI的中断标志
if(flag==0x40)
break; //如果SPI的中断标志的中断标志为1,则证明SPI已经发送成功,则停止等待
}
*SPIRXBUF=*SPIRXBUF; //虚读SPIRXBUF寄存器,以清除SPI中断标志
*PCDATDIR=(*PCDATDIR)|(0x0808); //发送完毕,则IOPC3输出高,使发送的数据输出到AD9833的相应寄存器中
}
void main()
{
xtinitial();
SPIinitial();
SPI1trans(0x2100);
SPI1trans(0x7BA9);
SPI1trans(0x4003);
//SPI1trans(0x8000);
//SPI1trans(0x8000);
//SPI1trans(0x0C000);
//SPI1trans(0x0E000); //写数据到Preg0,写0不移相
SPI1trans(0x2000) ; //设置RESET位为0,等待8个MCLK后,Vout输出正弦波
SPI2trans(0x2100);
SPI2trans(0x5A08);
SPI2trans(0x4005);
//SPI2trans(0x8000);
//SPI2trans(0x8000);
//SPI2trans(0x0C000);
//SPI2trans(0x0E000); //写数据到Preg0,写0不移相
SPI2trans(0x2000) ; //设置RESET位为0,等待8个MCLK后,Vout输出正弦波
}
void interrupt nothing()
{
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -