I am trying to use the ADGS1409 with an Arduino Uno and also with an ESP32. I want to initially set the channel to S1 and once I am done with that I will add a loop to cycle through the other channels using the burst mode but for some reason I am unable to set up channel 1. For now I am setting all the other error config bits to zero as I just want to get this to work and will later enable them. I have tried it with the SDP-S board and ACE software to test the functionality of the board and it worked. I am currently using only the single supply mode by providing 12v to VDD and GND to GND and VSS. The EXT_VAL pin is connected to the arduinos 5V output pin and I am supplying 3.3v to S1A and connecting S1B to GND.
I would like your help to figure out where I've gone wrong or where I've made any mistakes and also to know if I have missed anything in this post.
This is the Arduino Code:
#include <SPI.h>
#define SS 10
const byte sw_add = 0b00000001;
const byte sw_ch1 = 0b00000001;
const byte err_add = 0b00000010;
const byte err_val = 0b00000000;
void setup() {
Serial.begin(115200);
digitalWrite(SS, HIGH);
SPI.begin();
//SPI.setClockDivider(SPI_CLOCK_DIV4);
SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0));
digitalWrite(SS, LOW);
SPI.transfer(err_add);
SPI.transfer(err_val);
digitalWrite(SS, HIGH);
digitalWrite(SS, LOW);
SPI.transfer(sw_add);
SPI.transfer(sw_ch1);
digitalWrite(SS, HIGH);
SPI.endTransaction();
}
void loop() {
// put your main code here, to run repeatedly:
}
This is the ESP32 Code:
#include <SPI.h>
#define VSPI_MISO 19
#define VSPI_MOSI 18
#define VSPI_SCLK 5
#define VSPI_SS 21
const uint16_t SW_DataWrite = 0x0101;
const uint16_t SW_DataRead = 0x8100;
const uint16_t ERR_Config = 0x0200;
static const int spiClk = 100000; // 100 kHz
//uninitalised pointers to SPI objects
SPIClass * vspi = NULL;
void setup() {
//clock miso mosi ss
Serial.begin(115200);
Serial.println("SPI config begin");
vspi->begin(VSPI_SCLK, VSPI_MISO, VSPI_MOSI, VSPI_SS);
//initialise vspi with default pins
//SCLK = 18, MISO = 19, MOSI = 23, SS = 5
//vspi->begin();
//set up slave select pins as outputs as the Arduino API
//doesn't handle automatically pulling SS low
pinMode(VSPI_SS, OUTPUT);
Serial.println("SPI init done");
// To configure registers
Serial.println("Configuring registers ...");
vspiCommand(ERR_Config);
vspiCommand(SW_DataWrite);
}
// the loop function runs over and over again until power down or reset
void loop() {
//uint16_t reg_value = vspiCommand(SW_DataRead);
//Serial.println(reg_value);
//delay(100);
}
uint16_t vspiCommand(uint16_t command) {
uint16_t read_data;
vspi->beginTransaction(SPISettings(spiClk, MSBFIRST, SPI_MODE0));
digitalWrite(VSPI_SS, LOW);
read_data = vspi->transfer16(command);
digitalWrite(VSPI_SS, HIGH);
vspi->endTransaction();
return read_data;
}
Edit Notes
Added the things I need help with.[edited by: niteshglx at 1:32 PM (GMT -4) on 14 Jun 2022]