大家好、这里!
在我的项目之一中、我尝试 使用 SPI 模式将 ADS8681与 Arduino Mega 2560进行通信。 在示波器上、在 Arduino 的 SPI 引脚上获得正确的波形、但在尝试读取(+- 10V)模拟数据范围时、它在显示模块(LCD)的可变输入上显示了正确的16位变化。 但是、只要移除输入(传感器无负载)、它就会提供随机值、而不是"0"。 如果能提供关于如何获得适当数据的建议,我将不胜感激。
下图显示 了 ADS8681 (传感器处的负载)有输入时的对应波形
下图显示 了 ADS8681无输入(传感器无负载)时的相应波形
我使用的参考资料:
4] ADS8681:通过 SPI 将 ADS 8681配置到 Arduino MKW 1010 Wifi 时出现问题
源代码:
#include #include define SS 53 #define SCK 52 #define MOSI 51 #define MISO 50 uint16_t receivedVal16 = 0; LiquidCrystal LCD (38、37、36、35、34、33); void setup () { lcd.begin(16,4); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); digitalWrite (SCK、output); digitalWrite (MOSI、output); digitalWrite (SS、output); digitalWrite (MISO、INPUT); digitalWrite (SS、HIGH);//Write range_SEL_REG Delay (10); digitalWrite (SS、LOW); SPI.transfer (0xD4); SPI.transfer (0x14); SPI.transfer (0x00); SPI.transfer (0x01); digitalWrite (SS、 高电平);//写入 DATA_OUT_CNT_REG 延迟(10); digitalWrite (SS、低电平); SPI.transfer (0xD4); SPI.transfer (0x10); spi.transfer (0x41); spi.transfer (0x00); } void loop () { digitalWrite (SS、HIGH);// Write range_SEL_REG Delay (10); digitalWrite (SS、LOW); spi.transfer (0xD4); SPI.transfer (0x14); SPI.transfer (0x00); SPI.transfer (0x01); digitalWrite (SS、HIGH); delay(10); digitalWrite (SS、low); receivedVal16 = SPI.transfer16 (0x00); lcd.setCursor(0,1); LCD.print (receivedVal16); 延迟(100); }