Черная бригада
Пт 30 марта 2018 г. 10:44
Привет,
Я ищу библиотеку Arduino для 1-канальной 10-битной DAC DAC AD5310
--> http: // www.аналоговый.com/media/en/technica ... AD5310.PDF
В настоящее время я использую STM32F103Vet6 на данном оборудовании, где 2 из этого ЦАП подключены к SPI2:
PB12 - NSS ("Select")
PB13 - SCK
PB14 - Мисо
PB15 - Моси
Может быть, некоторые из вас сделали что -то подобное в прошлом,
Или кто-то знает, что этот вид ЦАП совместим с SW с более распространенным DAC SPI от E.глин. Ti или около того ...
Я ищу библиотеку Arduino для 1-канальной 10-битной DAC DAC AD5310
--> http: // www.аналоговый.com/media/en/technica ... AD5310.PDF
В настоящее время я использую STM32F103Vet6 на данном оборудовании, где 2 из этого ЦАП подключены к SPI2:
PB12 - NSS ("Select")
PB13 - SCK
PB14 - Мисо
PB15 - Моси
Может быть, некоторые из вас сделали что -то подобное в прошлом,
Или кто-то знает, что этот вид ЦАП совместим с SW с более распространенным DAC SPI от E.глин. Ti или около того ...
Мадиас
Пт 30 марта 2018 г. 11:05
У меня был быстрый взгляд в таблицу данных:
На самом деле нет необходимости в библиотеке.
Просто напишите 16 -битный порт SPI (пример: считать от 0 до 65535), начните с низких тактовых частот и проверьте предел.
через таблицу данных: См. Рисунок 2. 3 максимальная частота SCLK составляет 30 МГц при VDD = 3.6 В до 5.5 В и 20 МГц при VDD = 2.От 7 V до 3.6 В. Что -то вроде этого:
На самом деле нет необходимости в библиотеке.
Просто напишите 16 -битный порт SPI (пример: считать от 0 до 65535), начните с низких тактовых частот и проверьте предел.
через таблицу данных: См. Рисунок 2. 3 максимальная частота SCLK составляет 30 МГц при VDD = 3.6 В до 5.5 В и 20 МГц при VDD = 2.От 7 V до 3.6 В. Что -то вроде этого:
SPI.beginTransaction(SPISettings(18000000, MSBFIRST, SPI_MODE0, DATA_SIZE_16BIT));
Мадиас
Пт 30 марта 2018 г., 11:17
Так что ваш (сохраненный) код должен выглядеть так:
Вы можете попытаться подняться на тактовую частоту (30000000)
Вы можете попытаться подняться на тактовую частоту (30000000)
#include
#define CS PB13 // your Sync pin
void setup() {
//SPI.begin(); // not needed, done in beginTransaction() - edit by stevestrong
pinMode(CS,OUTPUT);
SPI.beginTransaction(SPISettings(18000000, MSBFIRST, SPI_MODE0, DATA_SIZE_16BIT));
}
void loop() {
for (uint16_t counter=0;counter<65535;counter++)
{
digitalWrite (CS, LOW); // assert Slave Select
SPI.write (counter); // do a transfer
digitalWrite (CS, HIGH); // de-assert Slave Select
//SPI.endTransaction (); // transaction over
}
}
Черная бригада
Пт 30 марта 2018 г., 11:29
Спасибо,
Я попробую это,
Но зачем писать 16-битное слово на 10-битном ЦАП ?
Если вы посмотрите на страницу 11 из 16 листов данных, вы можете прочитать следующее: Регистр сдвига ввода имеет ширину 16 бит (см. Рисунок 25). Первый
Два бита Дон’Т заботы. Следующие два бита - это контрольные биты, которые
управляйте, какой режим работы находится в (нормальный режим или
один из трех режимов питания). Есть более полное
Описание различных режимов в режимах питания
раздел. Следующие 10 бит - это биты данных. Они передаются
в реестр ЦАП на 16 -м падающем краю SCLK. Окончательно,
Последние два бита - Дон’Т заботы. Поэтому я думаю, что мне нужно сделать какой-то дополнительный сдвиг, а также установить два элемента управления правильно (?)
Я попробую это,
Но зачем писать 16-битное слово на 10-битном ЦАП ?
Если вы посмотрите на страницу 11 из 16 листов данных, вы можете прочитать следующее: Регистр сдвига ввода имеет ширину 16 бит (см. Рисунок 25). Первый
Два бита Дон’Т заботы. Следующие два бита - это контрольные биты, которые
управляйте, какой режим работы находится в (нормальный режим или
один из трех режимов питания). Есть более полное
Описание различных режимов в режимах питания
раздел. Следующие 10 бит - это биты данных. Они передаются
в реестр ЦАП на 16 -м падающем краю SCLK. Окончательно,
Последние два бита - Дон’Т заботы. Поэтому я думаю, что мне нужно сделать какой-то дополнительный сдвиг, а также установить два элемента управления правильно (?)
Мадиас
Пт 30 марта 2018 12:16
Я отредактировал код выше - незначительные ошибки. Просто попробуй. Даже с 10 -битным вы должны перенести 16 -битный
Черная бригада
Пт 30 марта 2018 г. 13:02
Другое дело
что 2 SPI-DAC связаны следующим образом с STM32 SPI2 (моя данная доска):
.
что 2 SPI-DAC связаны следующим образом с STM32 SPI2 (моя данная доска):
.
- Схема.PNG (10.13 киб) просмотрено 368 раз
Стивестронг
Пт 30 марта 2018 г. 13:45
Вы также можете подключить PB14 к другому выводу, настроенный как выход, который затем будет управлять второй синхронизацией.
Черная бригада
Пт 30 марта 2018 13:50
Это заданное оборудование, которое я не могу изменить (не хочу менять)...
Вассилис
Пт 30 марта 2018 г. 16:56
Одновременно использование аппаратного порта SPI и штифта MISO в качестве вывода IMHO следует избегать. Он работает, однако, если вы устанавливаете его как вывод После инициализации SPI.
#include
#define CS1 PB12 // your Sync pin of the first AD5310 DAC
#define CS2 PB14 // your Sync pin of the second AD5310 DAC
SPIClass SPI_2(2);
void setup() {
pinMode(CS1,OUTPUT);
SPI_2.beginTransaction(SPISettings(18000000, MSBFIRST, SPI_MODE0, DATA_SIZE_16BIT));
pinMode(CS2, OUTPUT); //Initiallize the MISO pin as output. This line must be after SPI initiallization.
}
void loop() {
for (uint16_t counter=0;counter<65535;counter++)
{
digitalWrite (CS1, LOW); // assert Slave Select
SPI_2.write (counter); // do a transfer
digitalWrite (CS1, HIGH); // de-assert Slave Select
digitalWrite (CS2, LOW);
SPI_2.write (65535 - counter); // do a transfer
digitalWrite (CS2, HIGH);
}
}
Мадиас
Пт 30 марта 2018 г., 19:44
Формат: Да, вы должны сдвинуть 2 бита и добавить 1,2 или 3 (зависит от битов управления, вам нужно 1 = b01, 2 = b10, 3 = b11)
Макет платы очень странная, используя стандартный порт SPI и используя CS (2) на штифте MOSI.... Я бы перепродал эту причуды.
Конечно, вы можете переписать любую библиотеку Soft_spi от AVR-Aduino для нее и изменить подпрограммы переключения PIN-образного штифта AVR для STM32 (Leaflab Core) или использовать предложение Vassilis Made.
Может быть, это поможет нам, если вы сможете объяснить что -то большее:
Что это за доска?
Что вы собираетесь с этим делать? (Так вам нужна скорость вождения ЦАП....и так далее)
Макет платы очень странная, используя стандартный порт SPI и используя CS (2) на штифте MOSI.... Я бы перепродал эту причуды.
Конечно, вы можете переписать любую библиотеку Soft_spi от AVR-Aduino для нее и изменить подпрограммы переключения PIN-образного штифта AVR для STM32 (Leaflab Core) или использовать предложение Vassilis Made.
Может быть, это поможет нам, если вы сможете объяснить что -то большее:
Что это за доска?
Что вы собираетесь с этим делать? (Так вам нужна скорость вождения ЦАП....и так далее)
Мадиас
Пт 30 марта 2018 г., 19:46
Хорошо, я думаю, что вы используете одно из этого:
https: // barth-elektronik.com/en/mini-plc.HTML
Я прав?
Матиас
https: // barth-elektronik.com/en/mini-plc.HTML
Я прав?
Матиас
Черная бригада
Сб 31 марта 2018 г., 7:23
[Мадиас - Пт 30 марта 2018 г., 19:46] - Хорошо, я думаю, что вы используете одно из этого:неа ...
https: // barth-elektronik.com/en/mini-plc.HTML
Я использую русский PLC Owen PR-200
----
Поскольку нет необходимости в двунаправленной SPI, и нет необходимости в самой высокой скорости,
Я попробую простой функции Shiftout (), подобной этим:
- в ядре: https: // github.com/rogerclarkmelbourne/ ... футов.CPP#229
- медленный: ViewTopic.PHP?P = 17090#P17090
- быстрый: ViewTopic.PHP?P = 17131#P17131
Но я попробую @Vassilis решение также...
Мадиас
Сб 31 марта 2018 г. 9:09
Я бы попробовал Vassilis версию, должен быть прост.
О двух битах управления: я думаю, что вы можете позволить первым двум MSB «0» для «нормальной работы»
О двух битах управления: я думаю, что вы можете позволить первым двум MSB «0» для «нормальной работы»