Hello,
I like to connect a MAX6675 at my M5Stack to read my temperature of my BBQ. I small demo with a Arduino library worked fine but only without the display of the M5Stack.
I create a new init procedure:
#define MAX6675_MISO 19
#define MAX6675_SCK 18
#define MAX6675_CS 2
#define MAX6675_MOSI -1
static spi_lobo_device_handle_t max_spi;//max_spi; // SPI handle.
void MAX_PinsInit()
{
// Route all used pins to GPIO control
gpio_pad_select_gpio(MAX6675_CS);
// gpio_pad_select_gpio(MAX6675_MISO);
// gpio_pad_select_gpio(MAX6675_SCK);
// gpio_set_direction(MAX6675_MISO, GPIO_MODE_INPUT);
// gpio_set_pull_mode(MAX6675_MISO, GPIO_PULLUP_ONLY);
gpio_set_direction(MAX6675_CS, GPIO_MODE_OUTPUT);
// gpio_set_direction(MAX6675_SCK, GPIO_MODE_OUTPUT);
}
bool init_Max6675() {
MAX_PinsInit();
// ==== CONFIGURE SPI DEVICES(s) ====================================
spi_lobo_device_handle_t spi;
spi_lobo_bus_config_t buscfg={
.miso_io_num=MAX6675_MISO, // set SPI MISO pin
.mosi_io_num=MAX6675_MOSI, // set SPI MOSI pin
.sclk_io_num=MAX6675_SCK, // set SPI CLK pin
.quadwp_io_num=-1,
.quadhd_io_num=-1,
//.max_transfer_sz = 6*1024,
};
spi_lobo_device_interface_config_t devcfg={
.clock_speed_hz=10000, //8000000, // Initial clock
.mode=0, // SPI mode 0
.spics_io_num=-1, // we will use external CS pin
.spics_ext_io_num=MAX6675_CS, // external CS pin
.flags=0,//LB_SPI_DEVICE_HALFDUPLEX,
};
printf("Pins used: miso=%d, mosi=%d, sck=%d, cs=%d\r\n", MAX6675_MISO, MAX6675_MOSI, MAX6675_SCK, MAX6675_CS);
// ==================================================================
// ==== Initialize the SPI bus and attach the MAX6675 to the SPI bus ====
esp_err_t ret=spi_lobo_bus_add_device(HSPI_HOST, &buscfg, &devcfg, &spi);
assert(ret==ESP_OK);
printf("SPI: MAX6675 device added to spi bus (%d)\r\n", HSPI_HOST);
max_spi = spi;
// ==== Test select/deselect ====
ret = spi_lobo_device_select(spi, 1);
assert(ret==ESP_OK);
ret = spi_lobo_device_deselect(spi);
assert(ret==ESP_OK);
printf("SPI: attached MAX6675 device, speed=%u\r\n", spi_lobo_get_speed(spi));
printf("SPI: bus uses native pins: %s\r\n", spi_lobo_uses_native_pins(spi) ? "true" : "false");
return ret;
}
The pins MAX6675_MISO and MAX6675_SCK are shared with display of M5Stack. Only the MAX6675_CS is an individual pin for MAX6675.
If I call init_Max6675() I got this error:
assertion "spi_dma_chan_enabled & DMA_CHANNEL_ENABLED(dma_chan)" failed: file "/Users/<username>/esp/M5Stack_70_Sonos/components/pg_display/spi_master_lobo.c", line 338, function: spi_lobo_dma_chan_free
abort() was called at PC 0x400d70a3 on core 0
0x400d70a3: __assert_func at /builds/idf/crosstool-NG/.build/HOST-x86_64-apple-darwin12/xtensa-esp32-elf/src/newlib/newlib/libc/stdlib/assert.c:62 (discriminator 8)
Have anyone an idea what I can do?
Was the init of new device outside of spi_master_lobo.c correct?
Hello, I like to connect a MAX6675 at my M5Stack to read my temperature of my BBQ. I small demo with a Arduino library worked fine but only without the display of the M5Stack.
I create a new init procedure:
The pins MAX6675_MISO and MAX6675_SCK are shared with display of M5Stack. Only the MAX6675_CS is an individual pin for MAX6675.
If I call init_Max6675() I got this error:
Have anyone an idea what I can do? Was the init of new device outside of spi_master_lobo.c correct?