3#ifndef PRINTLINES_ALLOWED
4#define PRINTLINES_ALLOWED 0
7static const char *FNAME =
"kest_fpga_io.c";
9#ifndef KEST_FPGA_SIMULATED
10#include <driver/spi_master.h>
12#define PIN_NUM_MISO 14
22 #ifndef KEST_FPGA_SIMULATED
25 spi_bus_config_t buscfg = {
31 .max_transfer_sz = 4096,
34 ret = spi_bus_initialize(SPI2_HOST, &buscfg, SPI_DMA_CH_AUTO);
38 spi_device_interface_config_t devcfg = {
39 .clock_speed_hz = 1 * 1000 * 1000,
45 ret = spi_bus_add_device(SPI2_HOST, &devcfg, &
spi_handle);
55 #ifndef KEST_FPGA_SIMULATED
59 spi_transaction_t t = {
65 esp_err_t err = spi_device_transmit(
spi_handle, &t);
67 #ifdef PRINT_SPI_BYTES
68 char print_buf[len * 10 + 1];
70 for (
int i = 0; i < len; i++)
72 sprintf(&print_buf[buf_index],
"SEND 0x%02x\n", tx[i]);
75 print_buf[buf_index] = 0;
76 KEST_PRINTF(
"\n\n\n\n\n\n\n\n\n\n\n\n\nSPI send to FPGA (%d bytes):\n", len);
81 for (
int i = 0; i < len; i++)
83 sprintf(&print_buf[buf_index],
"RCVD 0x%02x\n", reply_buf[i]);
86 print_buf[buf_index] = 0;
221 while (new_len < seq->len + seq2->
len)
232 for (
int i = 0; i < seq2->
len; i++)
247 float v = powf(10, gain_db / 20.0);
257 float v = powf(10, gain_db / 20.0);
void kest_free(void *ptr)
void * kest_alloc(size_t size)
void * kest_realloc(void *ptr, size_t size)
#define ERR_FEATURE_DISABLED
kest_fpga_sample_t float_to_q_nminus1(float x, int shift)
void kest_fpga_set_input_gain(float gain_db)
char * kest_fpga_command_to_string(int command)
int kest_fpga_batch_append_16(kest_fpga_transfer_batch *seq, uint16_t x)
int kest_fpga_txrx(uint8_t *tx, uint8_t *rx, size_t len)
int kest_fpga_send_byte(uint8_t byte)
void kest_fpga_set_output_gain(float gain_db)
int kest_fpga_batch_append(kest_fpga_transfer_batch *seq, uint8_t x)
spi_device_handle_t spi_handle
int kest_fpga_batch_concat(kest_fpga_transfer_batch *seq, kest_fpga_transfer_batch *seq2)
int kest_fpga_batch_append_24(kest_fpga_transfer_batch *seq, uint32_t x)
void kest_free_fpga_transfer_batch(kest_fpga_transfer_batch batch)
uint8_t kest_fpga_read_byte()
void kest_fpga_commit_reg_updates()
int kest_fpga_batch_append_32(kest_fpga_transfer_batch *seq, uint32_t x)
kest_fpga_transfer_batch kest_new_fpga_transfer_batch()
int kest_fpga_transfer_batch_send(kest_fpga_transfer_batch batch)
#define COMMAND_UPDATE_BLOCK_REG_0
#define COMMAND_SET_OUTPUT_GAIN
#define COMMAND_WRITE_BLOCK_REG_0
#define COMMAND_BEGIN_PROGRAM
#define COMMAND_ALLOC_DELAY
#define KEST_FPGA_N_BLOCKS
#define COMMAND_WRITE_BLOCK_REG_1
#define COMMAND_SET_INPUT_GAIN
#define COMMAND_WRITE_BLOCK_INSTR
#define COMMAND_COMMIT_REG_UPDATES
#define COMMAND_UPDATE_BLOCK_REG_1
#define COMMAND_END_PROGRAM
#define range_bits(x, n, start)