我正在尝试将数据发送到 DAC、并 访问寄存器以读取数据。
但它仅 回显寄存器地址(23-16位)、15-0bit 中没有数据
DAC 输出:DAC6、DAC7
串行输出:0x970000 -> 0x960000
连接:
Arduino SCK -> J8.8
Arduino MISO -> J8.3
Arduino MOSI -> J8.4
Arduino SS -> J8.2
VCC -> 20V 来自电源
VDD / VAA -> 5V 电源
VIO ->来自 Arduino 的5V、连接至 J8.5
VSS -> GND
J10 -> 1-2
J11 -> 1-2
J12 -> 1-2
Arduino 代码:
#包含
#包含
//寄存器//
#define R_NOP 0x00
#define R_DEVICEID 0x01
#define R_STATUS 0x02
#define R_SPIC72 0x03
#define R_GENCONFIG 0x04
#define R_BRDCONFIG 0x05
#define R_SYNCCONFIG 0x06
#define R_TOGGCONFIG0 0x07 //DAC[15:8] Toggle Configuration 寄存器//
#define R_TOGGCONFIG1 0x08 // DAC [7:0]切换配置寄存器//
#define R_DACPDWN 0x09 //设置为1时关闭//
#define R_DACRANGE0 0x0A //DAC[15:12]范围寄存器//
#define R_DACRANGE1 0x0B //DAC[11:8]范围寄存器//
#define R_DACRANGE2 0x0C //DAC[7:4]范围寄存器//
#define R_DACRANGE3 0x0D //DAC[3:0]范围寄存器//
#define R_TRIGGER 0x0E
#define R_Brdcast 0x0F
#define R_DAC0 0x10
#define R_DAC1 0x11
#define R_DAC2 0x12
#define R_DAC3 0x13
#define R_DAC4 0x14
#define R_DAC5 0x15
#define R_DAC6 0x16
#define R_DAC7 0x17
#define R_DAC8 0x18
#define R_DAC9 0x19
#define R_DAC10 0x1A
#define R_DAC11 0x1B
#define R_DAC12 0x1C
#define R_DAC13 0x1D
#define R_DAC14 0x1E
#define R_DAC15 0x1F
#define R_OFFSET0 0x20 //DAC[14-15;12-13]差动偏移寄存器//
#define R_OFFSET1 0x21 //DAC[10-11;8-9]差动偏移寄存器//
#define R_Offset2 0x22 //DAC[6-7;4-5]差动偏移寄存器//
#define R_OFFSET3 0x23 //DAC[2-3;0-1]差分偏移寄存器//
void setup(){
Serial.begin(115200);
SPI.beginTransaction(SPISettings(100000、MSBFIRST、SPI_MODE1);
SPI.begin();
延迟(100);
//设置 DAC7 0-5V DAC6 0-20V//
digitalWrite (SS、low);
DAC_WRITE (R_DACRANGE2);
SPI.transfer (0x02);
SPI.transfer (0x00);
digitalWrite (SS、HIGH);
延迟(100);
//为 SPI 读取启用 SDO //
digitalWrite (SS、low);
DAC_WRITE(R_SPIC856);
SPI.transfer (0x0A);
spi.transfer (0x84);
digitalWrite (SS、HIGH);
延迟(100);
//加电6-7个通道//
digitalWrite (SS、low);
DAC_WRITE (R_DACPWDWN);
spi.transfer (0xFF);
SPI.transfer (0x3F);
digitalWrite (SS、HIGH);
延迟(100);
//将所有 DAC 设置为异步模式
digitalWrite (SS、low);
DAC_WRITE (R_SYNCCONFIG);
SPI.transfer (0x00);
SPI.transfer (0x00);
digitalWrite (SS、HIGH);
延迟(100);
digitalWrite (SS、low);
DAC_WRITE (R_GENCONFIG);
spi.transfer (0x01);
SPI.transfer (0x00);
digitalWrite (SS、HIGH);
延迟(100);
spi.endTransaction ();
}
void loop(){
digitalWrite (SS、low);
DAC_WRITE (R_DAC7);
spi.transfer (0xAA);
spi.transfer (0xAA);
延迟(1);
digitalWrite (SS、HIGH);
延迟(50);
digitalWrite (SS、low);
DAC_WRITE (R_DAC6);
spi.transfer (0x88);
spi.transfer (0x88);
延迟(1);
digitalWrite (SS、HIGH);
延迟(50);
Read_reg (R_DAC7);
延迟(500);
digitalWrite (SS、low);
DAC_WRITE (R_DAC7);
SPI.transfer (0xCC);
SPI.transfer (0xCC);
延迟(1);
digitalWrite (SS、HIGH);
延迟(50);
digitalWrite (SS、low);
DAC_WRITE (R_DAC6);
spi.transfer (0x22);
spi.transfer (0x22);
延迟(1);
digitalWrite (SS、HIGH);
延迟(50);
Read_reg (R_DAC6);
延迟(500);
}
void read_reg (uint8_t reg){
uint16_t val;
uint8_t val2;
digitalWrite (SS、low);
spi.transfer (0x80 | reg));
spi.transfer (0xFF);
spi.transfer (0xFF);
延迟(1);
digitalWrite (SS、HIGH);
digitalWrite (SS、low);
VAL=SPI.transfer16 (0x00);
val2=spi.transfer (0x00);
延迟(1);
digitalWrite (SS、HIGH);
serial.println (val、hex);
serial.println ("1");
serial.println (val2、hex);
serial.println ("2");
}
void DAC_WRITE (int DAC_reg)
{
int DAC_regW = DAC_reg | 0x00;
spi.transfer (DAC_regW);
}