Библиотека AD7768-1 "Ардуино"
Я работаю над проектом, и мне нужна библиотека AD7768-1, чтобы этот аналого-цифровой преобразователь взаимодействовал с моим Arduino с помощью SPI. " AD7768-1quot; не существует в библиотеке Arduino. Заранее спасибо.
1 ответ
В настоящее время для этого устройства нет доступной библиотеки Arduino. Как предложил @chrisl, проще всего было бы разработать собственный драйвер. Однако, если вы хотите использовать все расширенные функции устройства, вы можете использовать драйверы, предоставленные Analog Devices. AD7768-1 существенно отличается от AD7705/6!!!. Лично взаимодействуя с этим устройством (и AD7768/AD7768-4) с помощью микроконтроллеров STM32 и Xilinx FPGA, я бы рекомендовал использовать драйверы без ОС, предоставляемые Analog Devices. Этот подход хорошо сработал для меня при использовании STM32:
- Сначала прочитайте эту статью: Понимание и использование драйверов без ОС и платформы.
- И это: Обзор без ОС.
- Соберите все необходимые файлы из репозитория Analog Devices на Github без ОС:
- Загрузите драйверы AD7768-1 из каталога "/drivers" папка.
- Получите драйверы платформы из "drivers/platform/". Поскольку мы используем STM32, выберите один из этих трех (STM32, MBED или Generic):/STM32: подходит для STM32CubeIDE или аналогичного. Я буду использовать этот. MBED: для платформ MBED. Проверьте это приложение AD7768-1 IIO. Общий: в этом случае вам необходимо вручную заполнить периферийные вызовы платформы (в случае платформ Arduino это будет что-то вроде SPI.beginTransaction и т. д.). . Все связанные исходные файлы и заголовочные файлы доступны в одном репозитории. Для упрощения предположим, что вы используете STM32CubeIDE и хотите просто настроить и прочитать данные с устройства. Затем
- Настройте микроконтроллер STM32 в качестве SPI Master-Full-Duplex MODE 3 [MOSI, MISO, CLK].
- Подчиненный выбирает PIN-код, управляемый программным обеспечением [SS].
- [Необязательно] Один контакт для прерываний по готовности данных [DRDY].
- Поместите необходимые исходные файлы и файлы заголовков в соответствующие папки. Как минимум нужно (ad77681.c/h, no_os_spi.c, stm32_spi.c, no_os_gpio.c, stm32_gpio.c) и все их связанные заголовки файлы.
- Инициализировать драйверы без ОС и драйверы платформы. Это было бы примерно так:
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);
Надеюсь, это будет полезно.
- Взаимодействие ADS8319 с Arduino UNO
- ADS1262 и 2,2 SPI TFT (два ведомых SPI) с Arduino
- Использование Arduino для записи аналоговых сигналов с помощью SPI ADC + проблема с частотой дискретизации
- Получение неправильного вывода от АЦП через SPI в Arduino Uno
- Моя настройка двух ведомых SPI на arduino не работает правильно
- Как использовать SPI на Arduino?
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Отправка значения с одного Arduino на другой
Похоже, что для этой части нет готовой библиотеки Arduino. Хотя я нашел один для [AD7705/6](https://github.com/kerrydwong/AD770X). Если части достаточно похожи, вы можете заставить эту библиотеку работать с AD7768 с небольшими изменениями. Также AnalogDevices предоставляет код без ОС (общий код для устройств без ОС, таких как микроконтроллеры), хотя вам нужно будет выяснить, как его использовать и как обеспечить его необходимыми аппаратными процедурами SPI. И в зависимости от вашего проекта может быть проще просто написать для него собственный код SPI без сторонней библиотеки., @chrisl
пожалуйста, добавьте четкий вопрос, на который можно ответить, к своему сообщению, @jsotola