请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:ADS1248 你好。
我使用 pic24EP64GP206通过 SPI 控制 ADC。
完成一些工作和验证后、SPI 看起来工作正常、但从未从 ADC 获得数据、我只是想不到任何数据。
这是我的 SPI 中的一张照片(只需发送0xAA 以确保其配置良好)
这里是我用于配置和数据采集的代码。 (代码中没有 CS 信号、但通过硬件固定为低电平)
void InicializaADC(){ DELAYADC (10);//延迟10ns SPI1_SEND (0b00000110);//发送复位 DELAYADC (600);//延迟0.6ms //SPI1_SEND (0b00000000);//发送唤醒 SPI1_SEND (0x16);//发送 SDATAC DELAYADC (600);//延迟0.6ms //SPI1_SEND (0b00010100);//发送 RDATAC //发送 WREG SPI1_SEND (0x43);//写入 SYS0以更改 SPS SPI1_SEND (0x00); SPI1_SEND (0x52); SPI1_SEND (0x42);//写入 MUX1以设置内部基准 SPI1_SEND (0x00); SPI1_SEND (0x30); SPI1_SEND (0x40);//写入 MUX0寄存器以更改通道 SPI1_SEND (0x00); SPI1_SEND (0x01);//+AIN0、-AIN1 //SPI1_SEND (0x13);//+AIN2、-AIN3 //SPI1_SEND (0x25);//+AIN4、-AIN5 //SPI1_SEND (0x37);//+AIN6、-AIN7 SPI1_SEND (0x04);//发送同步 SPI1_SEND (0x04); DELAYADC (2);//延迟6ms SPI1_SEND (0x14);//Send RDATAC } ulong getADCSample(){ FastTriggerSet (&timeoutADC、200000);//超时200ms while (DREADY_ADC){//等待数据就绪或超时 if (FastTriggerActivado (&timeoutADC))) 返回99999; } DELAYADC (20); //延迟 tcsc. SPI1_SEND (0x12);//发送 RDATA SPI1_SEND (0xFF);//发送 NOP x3 SPI1_SEND (0xFF); SPI1_SEND (0xFF); DELAYADC (2); //延迟 tsccs 返回 SPI1_recive(); }
