Sorry for wasting your time.
I use the ESP32's API when I do SPI thingies.
I have some code here where I write 32 bits to the SPI bus, I doubt it will be of help but I post it just in case.
void fReadSPIdata16bits( spi_device_handle_t &h, int _address )
{
uint8_t address = _address;
esp_err_t intError;
spi_transaction_t trans_desc;
trans_desc = { };
trans_desc.addr = 0;
trans_desc.cmd = 0;
trans_desc.flags = 0;
trans_desc.length = (8 * 3); // total data bits
trans_desc.tx_buffer = txData;
trans_desc.rxlength = 8 * 2 ; // Number of bits NOT number of bytes
trans_desc.rx_buffer = rxData;
txData[0] = address | 0x80;
intError = spi_device_transmit( h, &trans_desc);
low = rxData[0]; high = rxData[1];
// if ( intError != 0 )
// {
// Serial.print( " WHO I am LSM9DS1. Transmitting error = ");
// Serial.println ( esp_err_to_name(intError) );
// }
} // void fSendSPI( uint8_t count, uint8_t address, uint8_t DataToSend)
////
int fWriteSPIdata8bits( spi_device_handle_t &h, int _address, int _sendData )
{
uint8_t address = _address;
uint8_t sendData = _sendData;
esp_err_t intError;
spi_transaction_t trans_desc;
trans_desc = { };
trans_desc.addr = 0;
trans_desc.cmd = 0;
trans_desc.flags = 0;
trans_desc.length = (8 * 2); // total data bits
trans_desc.tx_buffer = txData;
trans_desc.rxlength = 0 ; // Number of bits NOT number of bytes
trans_desc.rx_buffer = NULL;
txData[0] = address & 0x7F;
txData[1] = sendData;
intError = spi_device_transmit( h, &trans_desc);
// // if ( intError != 0 )
// // {
// // Serial.print( " LSM9DS1_REGISTER_CTRL_REG6_XL. Transmitting error = ");
// // Serial.println ( esp_err_to_name(intError) );
// // }
return intError;
} // void fWriteSPIdata8bits( spi_device_handle_t &h, uint8_t address, uint8_t sendData )
//
int fWriteSPIdata8bits2( spi_device_handle_t &h, int _sendData )
{
rxData[0] = 0x00;
// uint8_t address = _address;
uint8_t sendData = _sendData;
esp_err_t intError;
spi_transaction_t trans_desc;
trans_desc = { };
trans_desc.addr = 0;
trans_desc.cmd = 0;
trans_desc.flags = 0;
trans_desc.length = (8 * 2); // total data bits
trans_desc.tx_buffer = txData;
trans_desc.rxlength = 8 ; // Number of bits NOT number of bytes
trans_desc.rx_buffer = rxData;
txData[0] = sendData;
// txData[0] = address;
// txData[1] = sendData;
intError = spi_device_transmit( h, &trans_desc);
if ( intError == 0 )
{
return rxData[0];
}
else
{
return intError;
}
} // void fWriteSPIdata8bits( spi_device_handle_t &h, uint8_t address, uint8_t sendData )
////
int fWriteSPIdata32bits( spi_device_handle_t &h, int _sendData0, int _sendData1, int _sendData2, int _sendData3 )
{
// uint8_t address = _address;
// uint8_t sendData = _sendData;
esp_err_t intError;
spi_transaction_t trans_desc;
trans_desc = { };
trans_desc.addr = 0;
trans_desc.cmd = 0;
trans_desc.flags = 0;
trans_desc.length = (8 * 4); // total data bits
trans_desc.tx_buffer = txData;
trans_desc.rxlength = 0 ; // Number of bits NOT number of bytes
trans_desc.rx_buffer = NULL;
txData[0] = (uint8_t)_sendData0; // command bits
txData[1] = (uint8_t)_sendData1; // lower bits
txData[2] = (uint8_t)_sendData2; // higher bits
txData[3] = (uint8_t)_sendData3; // address
intError = spi_device_transmit( h, &trans_desc);
return intError;
} // void fWriteSPIdata8bits( spi_device_handle_t &h, uint8_t address, uint8_t sendData )
////
int fReadSPIdataXbits( spi_device_handle_t &h, int _readaddress, int *rxbuf, int rxlen )
{
uint8_t address = _readaddress;
int8_t rxBuf[rxlen] = {0};
esp_err_t intError;
spi_transaction_t trans_desc;
trans_desc = { };
trans_desc.addr = 0;
trans_desc.cmd = 0;
trans_desc.flags = 0;
trans_desc.length = ( (8 * 1) + (8 * rxlen)); // total data bits
trans_desc.tx_buffer = txData ;
trans_desc.rxlength = 8 * rxlen ; // Number of bits NOT number of bytes
trans_desc.rx_buffer = rxBuf;
txData[0] = address;
// txData[1] = 0x00;
intError = spi_device_transmit( h, &trans_desc);
for (int i = 0; i < rxlen; i++)
{
rxbuf[i] = rxBuf[i];
}
return intError;
} // int fReadSPIdataXbits( spi_device_handle_t &h, int _readaddress, int *rxbuf, int rxlen )