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; }
Added the things I need help with.
[edited by: niteshglx at 1:32 PM (GMT -4) on 14 Jun 2022]