嗯, 我用ad77xx都在前面加个宏:
#define _dl(x) do { x; _delay_ms_loop(1); } while(0)
然后把ad77xx的配置函数都用_dl()包起来, 如下:
ps. 为啥还用ad7705, 有啥非用它不可的理由呢... ad7792/7793/7799的性价比高多了吧
void ADC_Config(void)
{
static ad7124_cfg_t cfg;
cfg.readwrite_f = SPI2_ReadWrite;
_dl(ad7124_init(&cfg));
_dl(ad7124_set_data_status(AD7124_DATA_STATUS_ON));
_dl(ad7124_set_iref(AD7124_DISABLE));
_dl(ad7124_set_pwr_mode(AD7124_PWR_MODE_FULL));
for(int ain = AD7124_AIN0; ain <= AD7124_AIN15; ain++) {
_dl(ad7124_vbias_set(ain, AD7124_DISABLE));
}
// config
_dl(ad7124_set_config_polarity(AD7124_CONFIG0, AD7124_BIPOLAR));
_dl(ad7124_set_config_burnout(AD7124_CONFIG0, AD7124_BURNOUT_CURR_OFF));
_dl(ad7124_set_config_buffer(AD7124_CONFIG0, AD7124_ENABLE, AD7124_ENABLE,
AD7124_ENABLE, AD7124_ENABLE));
_dl(ad7124_set_config_ref(AD7124_CONFIG0, AD7124_REF_REFIN1));
_dl(ad7124_set_config_gain(AD7124_CONFIG0, AD7124_GAIN_1X));
_dl(ad7124_set_filter_type(AD7124_FILTER0, AD7124_FILTER_SINC4));
_dl(ad7124_set_filter_rej60(AD7124_FILTER0, AD7124_ENABLE));
_dl(ad7124_set_filter_data_rate(AD7124_FILTER0, 10));
// channel config
for(int chan = AD7124_CHANNEL0; chan <= AD7124_CHANNEL7; chan++) {
_dl(ad7124_set_channel_state(chan, AD7124_ENABLE));
_dl(ad7124_set_channel_config(chan, AD7124_CONFIG0));
}
_dl(ad7124_set_channel_ain(AD7124_CHANNEL0, AD7124_AIN0, AD7124_AIN1));
_dl(ad7124_set_channel_ain(AD7124_CHANNEL1, AD7124_AIN2, AD7124_AIN3));
_dl(ad7124_set_channel_ain(AD7124_CHANNEL2, AD7124_AIN4, AD7124_AIN5));
_dl(ad7124_set_channel_ain(AD7124_CHANNEL3, AD7124_AIN6, AD7124_AIN7));
_dl(ad7124_set_channel_ain(AD7124_CHANNEL4, AD7124_AIN8, AD7124_AIN9));
_dl(ad7124_set_channel_ain(AD7124_CHANNEL5, AD7124_AIN10, AD7124_AIN11));
_dl(ad7124_set_channel_ain(AD7124_CHANNEL6, AD7124_AIN12, AD7124_AIN13));
_dl(ad7124_set_channel_ain(AD7124_CHANNEL7, AD7124_AIN14, AD7124_AIN15));
// do_calibrate();
// last one
_dl(ad7124_set_mode(AD7124_MODE_CONTINUOUS_CONV));
}
【 在 lanmp (-_-!谁的大腿) 的大作中提到: 】
【 在 teslasoft 的大作中提到: 】
: 统一跟大家汇报一下最新进展
: 软件突然拍脑袋,在ad芯片初始化之前加了100毫秒的delay,居然故障现象消失了。。。消失了。。。好吧,等下一步再批量测试看看结果。目前猜一下,可能就是ad芯片上电后,要等它睡醒了,伸个懒腰才能初始化。
[upload=1][/upload]
--
FROM 106.121.160.*