Библиотека AD7768-1 "Ардуино"

Я работаю над проектом, и мне нужна библиотека AD7768-1, чтобы этот аналого-цифровой преобразователь взаимодействовал с моим Arduino с помощью SPI. " AD7768-1quot; не существует в библиотеке Arduino. Заранее спасибо.

, 👍1

Обсуждение

Похоже, что для этой части нет готовой библиотеки Arduino. Хотя я нашел один для [AD7705/6](https://github.com/kerrydwong/AD770X). Если части достаточно похожи, вы можете заставить эту библиотеку работать с AD7768 с небольшими изменениями. Также AnalogDevices предоставляет код без ОС (общий код для устройств без ОС, таких как микроконтроллеры), хотя вам нужно будет выяснить, как его использовать и как обеспечить его необходимыми аппаратными процедурами SPI. И в зависимости от вашего проекта может быть проще просто написать для него собственный код SPI без сторонней библиотеки., @chrisl

пожалуйста, добавьте четкий вопрос, на который можно ответить, к своему сообщению, @jsotola


1 ответ


1

В настоящее время для этого устройства нет доступной библиотеки Arduino. Как предложил @chrisl, проще всего было бы разработать собственный драйвер. Однако, если вы хотите использовать все расширенные функции устройства, вы можете использовать драйверы, предоставленные Analog Devices. AD7768-1 существенно отличается от AD7705/6!!!. Лично взаимодействуя с этим устройством (и AD7768/AD7768-4) с помощью микроконтроллеров STM32 и Xilinx FPGA, я бы рекомендовал использовать драйверы без ОС, предоставляемые Analog Devices. Этот подход хорошо сработал для меня при использовании STM32:

  1. Сначала прочитайте эту статью: Понимание и использование драйверов без ОС и платформы.
  2. И это: Обзор без ОС.
  3. Соберите все необходимые файлы из репозитория Analog Devices на Github без ОС:
  4. Загрузите драйверы AD7768-1 из каталога "/drivers" папка.
  5. Получите драйверы платформы из "drivers/platform/". Поскольку мы используем STM32, выберите один из этих трех (STM32, MBED или Generic):/STM32: подходит для STM32CubeIDE или аналогичного. Я буду использовать этот. MBED: для платформ MBED. Проверьте это приложение AD7768-1 IIO. Общий: в этом случае вам необходимо вручную заполнить периферийные вызовы платформы (в случае платформ Arduino это будет что-то вроде SPI.beginTransaction и т. д.). . Все связанные исходные файлы и заголовочные файлы доступны в одном репозитории. Для упрощения предположим, что вы используете STM32CubeIDE и хотите просто настроить и прочитать данные с устройства. Затем
  6. Настройте микроконтроллер STM32 в качестве SPI Master-Full-Duplex MODE 3 [MOSI, MISO, CLK].
  7. Подчиненный выбирает PIN-код, управляемый программным обеспечением [SS].
  8. [Необязательно] Один контакт для прерываний по готовности данных [DRDY].
  9. Поместите необходимые исходные файлы и файлы заголовков в соответствующие папки. Как минимум нужно (ad77681.c/h, no_os_spi.c, stm32_spi.c, no_os_gpio.c, stm32_gpio.c) и все их связанные заголовки файлы.
  10. Инициализировать драйверы без ОС и драйверы платформы. Это было бы примерно так:
struct stm32_spi_init_param stm32_init = {
      .chip_select_port = 1,
      .get_input_clock = &HAL_RCC_GetPCLK1Freq
  };

struct no_os_spi_init_param spi_init_param = {
      .device_id = 1,
      .max_speed_hz = 64000000,
      .chip_select = 6,
      .mode = NO_OS_SPI_MODE_3,
      .bit_order = NO_OS_SPI_BIT_ORDER_MSB_FIRST,
      .platform_ops = &stm32_spi_ops,
      .extra = &stm32_init ,
      .parent = NULL
  };

 struct ad77681_init_param ad77681_init = {
      .spi_eng_dev_init = spi_init_param,
      .power_mode = AD77681_MEDIAN,
      .mclk_div = AD77681_MCLK_DIV_8,
      .conv_mode = AD77681_CONV_CONTINUOUS,
      .diag_mux_sel = AD77681_AIN_SHORT,
      .conv_diag_sel = false,
      .conv_len = AD77681_CONV_24BIT,
      .crc_sel = AD77681_NO_CRC,
      .status_bit = 0,
      .VCM_out = AD77681_VCM_2_05V,
      .AINn = AD77681_AINn_ENABLED,
      .AINp = AD77681_AINp_ENABLED,
      .REFn = AD77681_BUFn_ENABLED,
      .REFp = AD77681_BUFp_ENABLED,
      .filter = AD77681_SINC5,
      .decimate = AD77681_SINC5_FIR_DECx32,
      .sinc3_osr = 0,
      .vref = AD77681_VOLTAGE_REF,
      .mclk = AD77681_MCLK,
      .sample_rate = AD77681_DEFAULT_SAMPLING_FREQ,
      .data_frame_byte = AD77681_DECIMATION_RATE,
  };

Наконец настройте устройство следующим образом:


struct ad77681_dev *device = NULL;
struct ad77681_status_registers *status = NULL;
int32_t init_status = ad77681_setup(&device, ad77681_init, &status);

Если init_status равен 0, значит, вы успешно инициализировали устройство!! Вы бы прочитали данные следующим образом:


ad77681_spi_read_adc_data(device, data_buffer, AD77681_REGISTER_DATA_READ);

Надеюсь, это будет полезно.


,