求助,AD7656并行读取数据完全不对,跳动
本帖最后由 dengfeng5357 于 2017-1-16 10:28 编辑各位前辈和大师们好,我用AD7656并行方式,现在读取回来的值,很乱,跳的厉害,而且分辨不出哪个通道,若有相关代码参考最好,谢谢各位了。
串行SPI的啊 banye2010 发表于 2017-1-16 09:28
串行SPI的啊
看错了,也可以是并行的 这个项目 貌似以前做过 。
for(times=0;times<F6Times;times++)//连续采集10次
{
delay_ns(ShutTime);
GPIOC->BSRR =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; // CONV A B C =1;
while(GPIO_ReadInputDataBit(GPIOD,AD_BUSY)){;}
delay_ns(1);
GPIO_ResetBits(GPIOC,AD_CS);//cs=0
for(RDI=0;RDI<6;)
{GPIO_ResetBits(GPIOC,AD_RD);//rd=0
delay_ns(1);
AD_valueTemp=GPIO_ReadInputData(GPIOB);
GPIO_SetBits(GPIOC,AD_RD); // rd=1;
RDI++;
}
GPIO_SetBits(GPIOC,AD_CS);// cs=1
GPIOC->BRR =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;// CONV A B C=0;
}
SenserAddress=0x00;
UpdateSenserAddress()
』 lixin91985 发表于 2017-1-16 09:34
这个项目 貌似以前做过 。
for(times=0;timesBSRR =GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2; // CONV A B C = ...
谢谢您的回答,我现在读取回来的数好乱,感觉都不是真实的,每次采集回来的都不一样
先查硬件,感觉 你这个是硬件配置错误了。
然后把软件上的时序降低一点。 lixin91985 发表于 2017-1-16 12:07
先查硬件,感觉 你这个是硬件配置错误了。
然后把软件上的时序降低一点。 ...
您是指的IO口配置吗?
我用的是LPC1788下的"gpio_17xx_40xx.h"
#define D_AD_RD_3_ON() Chip_GPIO_WritePortBit(LPC_GPIO, 0, 31, true)//输出
#define D_AD_BUSY_3() Chip_GPIO_GetPinState(LPC_GPIO, 0, 28)//输入
Chip_GPIO_SetPortDIR(LPC_GPIO, 0, 0x0000ffff, false); //数据P0~P15(这样有问题么?)
感觉上面读数据端口,好象哪感觉不对,望指教,感谢感谢。
搞定了,过来结贴,原因是因为输入端口没有至一个状态,接地或接3V就正常了,不过还没有明白,接地的时候,为什么采集到的值为65520(后面两位数有点跳动)? dengfeng5357 发表于 2017-1-16 19:43
搞定了,过来结贴,原因是因为输入端口没有至一个状态,接地或接3V就正常了,不过还没有明白,接地的时候, ...
负数,差不多吧 刚好看到一些关于AD7656的问题以及ADI工程师的解答,可以参考参考https://ezchina.analog.com/search.jspa?q=AD7656
页:
[1]