/*I2C写*/
/* 第一步,将频率扫描参数编程写入相应寄存器*/
I2C_write(0x0D,0x82,0x10);//起始频率为5KHZ A3D70A
I2C_write(0x0D,0x83,0x62);
I2C_write(0x0D,0x84,0x4D);
I2C_write(0x0D,0x85,0x00);
I2C_write(0x0D,0x86,0x53);//频率增加10HZ 53E2
I2C_write(0x0D,0x87,0xE2);
I2C_write(0x0D,0x88,0x00);//150个点
I2C_write(0x0D,0x89,0x96);
I2C_write(0x0D,0x8A,0x01);//511*2=1022个周期。延迟时间为 511*2*1/激励信号频率(30KHZ)建立时间
I2C_write(0x0D,0x8B,0xFF);
// SysCtlDelay(SysCtlClockGet()/(2000*3));
/* 第二步,待机模式 */
I2C_write(0x0D,0x80,0xB0);
I2C_write(0x0D,0x81,0x08);//用过外部晶振1M
I2C_write(0x0D,0x80,0x01);
/* 第三步,向控制寄存器发出以起始频率初始化命令 */
I2C_write(0x0D,0x80,0x10);
I2C_write(0x0D,0x81,0x08);
/* 第四步,建立足够的时间周期 */
// I2C_write(0x0D,0x8A,0x03);//511*2=1022个周期。延迟时间为 511*2*1/激励信号频率(30KHZ)
// I2C_write(0x0D,0x8B,0xFF);
// SysCtlDelay(SysCtlClockGet()/(2000*3));
/* 第五步,向控制寄存器发出启动频率扫描命令 */
I2C_write(0x0D,0x80,0x20);
/*I2C读*/
/* 第一步,轮询状态寄存器,检查DFT转换是否完成 */
I2C_read(0x0D,0x8F);
while (!0x02==(datarecieve&0x02))
{
}//判读D1这一位是否为1,如果为1,则DFT转换完成可以继续进行,如果没有,则等待
/* 第二步,读取实部虚部值 */
// UARTprintf(" Re: '%c' . . . ");
I2C_read(0x0D,0x94);
以上是我的程序,麻烦大家帮我看看哪里错了。读0x8F的值是70,VOUT口没有正弦波。设置MCLK的外部晶振为1Mhz,起始频率是500Hz。
2018-8-7 07:57:15
这个的代码应该不难,建议在确定硬件电路没问题的情况下,再检查代码问题。
这个的代码应该不难,建议在确定硬件电路没问题的情况下,再检查代码问题。
举报
2018-8-7 08:15:17
硬件没有问题啊,连接很简单,应该就是软件出错了 但是不知道错误在哪
硬件没有问题啊,连接很简单,应该就是软件出错了 但是不知道错误在哪
举报