mirror of
				https://github.com/manuelbl/ttn-esp32.git
				synced 2025-10-31 18:50:33 +01:00 
			
		
		
		
	Assert NSS from SPI callbacks
This commit is contained in:
		| @ -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 void init_io(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 set_next_alarm(int64_t time); | ||||
| @ -217,6 +219,8 @@ void init_spi(void) | ||||
|         .address_bits = 8, | ||||
|         .spics_io_num = -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); | ||||
| @ -227,22 +231,16 @@ void init_spi(void) | ||||
|  | ||||
| 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)); | ||||
|     spi_transaction.addr = cmd; | ||||
|     spi_transaction.length = 8 * len; | ||||
|     spi_transaction.tx_buffer = buf; | ||||
|     esp_err_t err = spi_device_transmit(spi_handle, &spi_transaction); | ||||
|     ESP_ERROR_CHECK(err); | ||||
|  | ||||
|     gpio_set_level(pin_nss, 1); | ||||
| } | ||||
|  | ||||
| void hal_spi_read(u1_t cmd, u1_t *buf, size_t len) | ||||
| { | ||||
|     gpio_set_level(pin_nss, 0); | ||||
|  | ||||
|     memset(buf, 0, len); | ||||
|     memset(&spi_transaction, 0, sizeof(spi_transaction)); | ||||
|     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; | ||||
|     esp_err_t err = spi_device_transmit(spi_handle, &spi_transaction); | ||||
|     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); | ||||
| } | ||||
|  | ||||
|  | ||||
		Reference in New Issue
	
	Block a user