我用普通GPIO的方式模拟SPI总线的方式去模拟,向寄存器写入了数据,然后再将他读取出来,数据是正确的,但是当我发送完sync、wakeup和radata命令后,读取电压的数据一直为0,这是怎么回事?
unsigned int value = LOW;
while(1)
{
gpio_get_value(DRDY, &value);
if (!value)
break;
}
ADS1256SPI(ADS1256_CMD_SYNC); //ADS1256转换指令
ADS1256SPI(ADS1256_CMD_WAKEUP); //ADS1256唤醒指令
while(1)
{
gpio_get_value(DRDY, &value);
if (!value)
break;
}
ADS1256SPI(ADS1256_CMD_RDATA); //ADS1256转换指令
gpio_set_value(SCLK, LOW);
DelayMs(DELAY_1US*100);
user151383853:
先看看有没有启动转换呢?
ChoBen LEUNG:
回复 user151383853:
第一条为SCLK,第二条为发送rdata,第三条为DRDY,怎么看有没有转换?
Carter Liu:
回复 ChoBen LEUNG:
时序是对的,数据线DOUT上一直是低电平吗
ChoBen LEUNG:
回复 Carter Liu:
对,DOUT一直都是低电平,这怎么回事啊?THX
Carter Liu:
回复 ChoBen LEUNG:
寄存器配置是怎样的?单次还是连续转换?电源电压、参考电压都正常吗
ChoBen LEUNG:
回复 Carter Liu:
readDrdyLowLevel(); ADS1256SPI(ADS1256_CMD_SELFCAL); readDrdyHighLevel(); readDrdyLowLevel(); ADS1256WREG(ADS1256_STATUS,0xf7); ADS1256WREG(ADS1256_MUX,0x18); ADS1256WREG(ADS1256_ADCON,0x00); ADS1256WREG(ADS1256_DRATE,ADS1256_DRATE_50SPS);
readDrdyLowLevel(); ADS1256SPI(ADS1256_CMD_SELFCAL); readDrdyHighLevel(); readDrdyLowLevel();
单次采集,电压电压、参考电压都正常,刚才不知道为什么可以读到正常的电压数据,但是后来重新运行程序就不行了。
ChoBen LEUNG:
回复 Carter Liu:
你好,这个问题怎么出来啊?
Jason Shen:
对某个寄存器写操作后,再读取,看是否设置成功?
ChoBen LEUNG:
回复 Jason Shen:
设置成功,但是电压数据还是读不出来!还是原来那样
chuan xu2:
回复 Jason Shen:
你好,我做ADS1256的模拟数据采集的时候,遇到些问题,可否加qq,或者微信聊一下