EIS-BLE-S3/components/ad5941_port/ad5941_bridge.c

68 lines
1.4 KiB
C

/*
* AD5940 library ↔ ESP32-S3 bridge.
* Implements the platform functions the ad5940 library expects to find at link time.
*/
#include "ad5940.h"
#include "ad5941_port.h"
#include "esp_rom_sys.h"
static volatile uint8_t int_flag;
static void IRAM_ATTR gp0_isr(void *arg)
{
int_flag = 1;
}
/* ---- SPI ---- */
void AD5940_ReadWriteNBytes(unsigned char *pSendBuffer, unsigned char *pRecvBuff, unsigned long length)
{
ad5941_port_spi_rw(pSendBuffer, pRecvBuff, length);
}
/* ---- CS ---- */
void AD5940_CsClr(void) { gpio_set_level(AD5940_CS_PIN, 0); }
void AD5940_CsSet(void) { gpio_set_level(AD5940_CS_PIN, 1); }
/* ---- Reset ---- */
void AD5940_RstSet(void) { gpio_set_level(AD5940_RST_PIN, 1); }
void AD5940_RstClr(void) { gpio_set_level(AD5940_RST_PIN, 0); }
/* ---- Timing ---- */
void AD5940_Delay10us(uint32_t time)
{
if (time < 100)
esp_rom_delay_us(time * 10);
else
vTaskDelay(pdMS_TO_TICKS(time / 100));
}
/* ---- Interrupt ---- */
uint32_t AD5940_GetMCUIntFlag(void) { return int_flag; }
uint32_t AD5940_ClrMCUIntFlag(void)
{
int_flag = 0;
return 1;
}
/* ---- Resource init (called by AD5940_MCUResourceInit) ---- */
uint32_t AD5940_MCUResourceInit(void *pCfg)
{
ad5941_port_init_spi();
ad5941_port_init_gpio();
AD5940_CsSet();
AD5940_RstSet();
gpio_install_isr_service(0);
gpio_isr_handler_add(AD5940_GP0INT_PIN, gp0_isr, NULL);
return 0;
}