mirror of
https://github.com/manuelbl/ttn-esp32.git
synced 2025-06-23 15:34:28 +02:00
Assert NSS from SPI callbacks
This commit is contained in:
parent
54a91a27db
commit
0a7353c146
@ -50,6 +50,8 @@ static int64_t os_time_to_esp_time(int64_t esp_now, uint32_t os_time);
|
|||||||
static int64_t get_current_time();
|
static int64_t get_current_time();
|
||||||
static void init_io(void);
|
static void init_io(void);
|
||||||
static void init_spi(void);
|
static void init_spi(void);
|
||||||
|
static void assert_nss(spi_transaction_t* trans);
|
||||||
|
static void deassert_nss(spi_transaction_t* trans);
|
||||||
static void init_timer(void);
|
static void init_timer(void);
|
||||||
|
|
||||||
static void set_next_alarm(int64_t time);
|
static void set_next_alarm(int64_t time);
|
||||||
@ -217,6 +219,8 @@ void init_spi(void)
|
|||||||
.address_bits = 8,
|
.address_bits = 8,
|
||||||
.spics_io_num = -1,
|
.spics_io_num = -1,
|
||||||
.queue_size = 1,
|
.queue_size = 1,
|
||||||
|
.pre_cb = assert_nss,
|
||||||
|
.post_cb = deassert_nss,
|
||||||
};
|
};
|
||||||
|
|
||||||
esp_err_t ret = spi_bus_add_device(spi_host, &spi_config, &spi_handle);
|
esp_err_t ret = spi_bus_add_device(spi_host, &spi_config, &spi_handle);
|
||||||
@ -227,22 +231,16 @@ void init_spi(void)
|
|||||||
|
|
||||||
void hal_spi_write(u1_t cmd, const u1_t *buf, size_t len)
|
void hal_spi_write(u1_t cmd, const u1_t *buf, size_t len)
|
||||||
{
|
{
|
||||||
gpio_set_level(pin_nss, 0);
|
|
||||||
|
|
||||||
memset(&spi_transaction, 0, sizeof(spi_transaction));
|
memset(&spi_transaction, 0, sizeof(spi_transaction));
|
||||||
spi_transaction.addr = cmd;
|
spi_transaction.addr = cmd;
|
||||||
spi_transaction.length = 8 * len;
|
spi_transaction.length = 8 * len;
|
||||||
spi_transaction.tx_buffer = buf;
|
spi_transaction.tx_buffer = buf;
|
||||||
esp_err_t err = spi_device_transmit(spi_handle, &spi_transaction);
|
esp_err_t err = spi_device_transmit(spi_handle, &spi_transaction);
|
||||||
ESP_ERROR_CHECK(err);
|
ESP_ERROR_CHECK(err);
|
||||||
|
|
||||||
gpio_set_level(pin_nss, 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void hal_spi_read(u1_t cmd, u1_t *buf, size_t len)
|
void hal_spi_read(u1_t cmd, u1_t *buf, size_t len)
|
||||||
{
|
{
|
||||||
gpio_set_level(pin_nss, 0);
|
|
||||||
|
|
||||||
memset(buf, 0, len);
|
memset(buf, 0, len);
|
||||||
memset(&spi_transaction, 0, sizeof(spi_transaction));
|
memset(&spi_transaction, 0, sizeof(spi_transaction));
|
||||||
spi_transaction.addr = cmd;
|
spi_transaction.addr = cmd;
|
||||||
@ -252,7 +250,15 @@ void hal_spi_read(u1_t cmd, u1_t *buf, size_t len)
|
|||||||
spi_transaction.rx_buffer = buf;
|
spi_transaction.rx_buffer = buf;
|
||||||
esp_err_t err = spi_device_transmit(spi_handle, &spi_transaction);
|
esp_err_t err = spi_device_transmit(spi_handle, &spi_transaction);
|
||||||
ESP_ERROR_CHECK(err);
|
ESP_ERROR_CHECK(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR assert_nss(spi_transaction_t* trans)
|
||||||
|
{
|
||||||
|
gpio_set_level(pin_nss, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRAM_ATTR deassert_nss(spi_transaction_t* trans)
|
||||||
|
{
|
||||||
gpio_set_level(pin_nss, 1);
|
gpio_set_level(pin_nss, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user