SPI CS parameters
Posted: Thu Jun 06, 2019 9:07 pm
Hello all,
I am trying to set up the ESP32 as a SPI master to listen only to MAX6675 thermocouple chip.
I will be polling for data.
I need to read the data for 16 clock cycles.
I do not need to transmit any commands, simply place CS low and receive my word into a rx buffer(I will actually use rx_data as I only need 2 bytes).
I will ultimately have several MAX6675s sending the data in turn, each with each their own CS or the CS nominated via spics_io_num run through a multiplexer of some description.
My questions:
#0. When setting up the config int the struct struct spi_device_interface_config_t if I specify a value for spics_io_num does esp_err_tspi_device_polling_transmit automatically drop the selected pin on transmit?
#1. Should I
---a) send an empty buffer (spi_transaction_t cmd empty) so that I can use cs_ena_posttrans to count my 16 clock cycles to receive my data in or perhaps s_ena_pretrans so Iread in the data first then do my fake transmit.
--or
---b) send an empty buffer (spi_transaction_t cmd empty) but set spi_transaction_t length = rxlength = 2 bytes long
---or
---c) Not Transmit using esp_err_tspi_device_polling_transmit and just manually pull the CS low. If I do this how can I count the number of clock cycles since CS goes low?
#2. As mentioned above as I wish to unitmatly read from multiple max6675s is in fact better to set spics_io_num = -1 and manually set the CS of the required device low?
Thanks for any pointers
I am trying to set up the ESP32 as a SPI master to listen only to MAX6675 thermocouple chip.
I will be polling for data.
I need to read the data for 16 clock cycles.
I do not need to transmit any commands, simply place CS low and receive my word into a rx buffer(I will actually use rx_data as I only need 2 bytes).
I will ultimately have several MAX6675s sending the data in turn, each with each their own CS or the CS nominated via spics_io_num run through a multiplexer of some description.
My questions:
#0. When setting up the config int the struct struct spi_device_interface_config_t if I specify a value for spics_io_num does esp_err_tspi_device_polling_transmit automatically drop the selected pin on transmit?
#1. Should I
---a) send an empty buffer (spi_transaction_t cmd empty) so that I can use cs_ena_posttrans to count my 16 clock cycles to receive my data in or perhaps s_ena_pretrans so Iread in the data first then do my fake transmit.
--or
---b) send an empty buffer (spi_transaction_t cmd empty) but set spi_transaction_t length = rxlength = 2 bytes long
---or
---c) Not Transmit using esp_err_tspi_device_polling_transmit and just manually pull the CS low. If I do this how can I count the number of clock cycles since CS goes low?
#2. As mentioned above as I wish to unitmatly read from multiple max6675s is in fact better to set spics_io_num = -1 and manually set the CS of the required device low?
Thanks for any pointers