你好
我正在尝试使用 ADS124s08读取电池的电压
AVDD = 5V
DVDD = 3.3V
我正在尝试检查从微控制器到 ADC 的 SPI 通信
正在使用 WREG 命令编写04h 的数据寄存器,并尝试使用 RREG 命令重新读取数据。 但是,当我使用 RREG 命令并传输 NOP 以获取寄存器值时,错误行上不会反映任何内容。 相反,即使 NOP (00h)也在 MOSI 行中得到反映
请帮我解决这个问题。
我已经附加了代码和逻辑分析器文件
#include <SPI.h>
内部 Cs = 10;
Int miso = 12;
内部模式=11;
内部 SCLK = 13;
UINT8_t 虚拟;
国际一级;
UINT8_t ulDataTx[3];
UINT8_t ulDataRx[3];
SPISettings mySPISettings (4000000,MSFIRST,SPI_MODE1);
void setup(){
//将您的设置代码放在此处,运行一次:
PinMode (SCLK,输出);
PinMode (mosi,输出);
PinMode (输入错误);
PintMode (cs,输出);
SPI.begin();
SPI.beginTransaction(mySPISettings);
DigitalWrite (CS,低);
延迟(10);
SPI.TRANSFER (0x06);//重置命令
延迟(10);
DigitalWrite (cs,高);
SPI.endTransaction ();
Serial.begin(9600);
延迟(1000);
}
void loo(){
//将主代码放在此处重复运行:
DigitalWrite (CS,低);
延迟(10);
SPI.begin();
SPI.beginTransaction(mySPISettings);
//延迟(10);
//SPI.transfer (0x06);
//延迟(10);
//SPI.endTransaction();
//SPI.beginTransaction(mySPISettings);
延迟(10);
//SPI.transfer (0xAA);
//延迟(10);
//SPI.transfer (0x55);
//延迟(10);
//dummy = SPI.transfer (0x00);
UINT8_t ulDataTx[3];
ulDataTx[0]= 0x40 +(0x04和0x1f);/WREG 命令,用于4小时
ulDataTx[1]= 0x00;
ulDataTx[2]= 0x18;
//selectDeviceCSLow();
SPI.transfer (ulDataTx[0]);
delayMicroseconds (100);
SPI.transfer (ulDataTx[1]);
delayMicroseconds (100);
SPI.transfer (ulDataTx[2]);
//releaseChipSelect();
延迟(10);
//SPI.endTransaction();
//digitalWrite (cs,高);
//延迟(10);
字节 temp2;
字节 temp1;
字节 temp0;
serial.println(temp2);
serial.println(temp1);
serial.println(temp0);
//SPI.beginTransaction(mySPISettings);
//将 CS 设置为低以选择设备:
//digitalWrite (cs,低);
延迟(10);
//向设备发送读取命令以开始读取:
SPI.TRANSFER (0x24);/RREG 命令,用于4小时
SPI.transfer (0x00);
TEMP1 = SPI.TRANSFER (0x00);
serial.println (temp1,十六进制);
//temp0 = SPI.TRANSFER (0x00);
延迟(10);
DigitalWrite (cs,高);
延迟(10);
SPI.endTransaction ();
}