ADS1262 и 2,2 SPI TFT (два ведомых SPI) с Arduino
Я подключаю два подчиненных модуля SPI, т. е. ADS1262 и 2,2 SPI TFT, к плате Ethernet Arduino.
Когда я тестирую каждое устройство самостоятельно, оно работает. Изначально я подключил TFT к Arduino, и он работает нормально. Аналогично, пример кода ADS1262 отлично работает, когда я запускаю его в одиночку.
Поэтому после успешного запуска TFT в одиночку я подключаю ADS1262, добавляю соответствующий код, однако ADS1262, похоже, не отвечает.
Я думаю, что проблема может быть связана с последовательностью контактов ADS1262_CS или
ADS1262_START
или ADS1262_DRDY
для доступа к ADS1262.
Я использовал библиотеку ProtoCentral_ads1262 с GitHub и использовал пример кода.
Из Комментариев:
Мы уже зарезервировали D10 для контроллера Ethernet и D4 для выбора микросхемы SD. Вопрос в том, как общаться с ними обоими, по очереди. Я могу получить доступ к одному из них только тогда, когда код подготовлен для обоих устройств.
// Portion of the code is given here
// https://github.com/adafruit/Adafruit_ILI9341 library used for TFT
// Code start from here
for(j=initvalue;j<=finalvalue;j+=x)
{
dacvalue=((j*5)/65535);
writeValue(j);
tft.fillRect(30,150,70,28,ILI9341_BLACK);
tft.setCursor(30,150);
tft.println(dacvalue,3); // dac value is showing on TFT
Serial.println(dacvalue,3);
// ADS1262 is need to communicate here as per https://github.com/Protocentral/ProtoCentral_ads1262 library
// Which pins are need to control here to communicate with ADS1262???
volatile int p,data;
if((digitalRead(ADS1262_DRDY_PIN)) == LOW) // monitor Data ready(DRDY pin)
{
SPI_RX_Buff_Ptr = PC_ADS1262.ads1262_Read_Data(); // read 6 bytes conversion register
Responsebyte = true ;
}
if(Responsebyte == true)
{
for(p = 0; p <5; p++)
{
SPI_RX_Buff[SPI_RX_Buff_Count++] = *(SPI_RX_Buff_Ptr + p);
}
Responsebyte = false;
}
if(SPI_RX_Buff_Count >= 5)
{
ads1262_rx_Data[0]= (unsigned char)SPI_RX_Buff[1]; // read 4 bytes adc count
ads1262_rx_Data[1]= (unsigned char)SPI_RX_Buff[2];
ads1262_rx_Data[2]= (unsigned char)SPI_RX_Buff[3];
ads1262_rx_Data[3]= (unsigned char)SPI_RX_Buff[4];
uads1262Count = (signed long) (((unsigned long)ads1262_rx_Data[0]<<24)|((unsigned long)ads1262_rx_Data[1]<<16)|(ads1262_rx_Data[2]<<8)|ads1262_rx_Data[3]);//get the raw 32-bit adc count out by shifting
sads1262Count = (signed long) (uads1262Count); // get signed value
Serial.println("sads1262Count:");
Serial.println(sads1262Count);
resolution = (double)((double)VREF/pow(2,31)); //resolution= Vref/(2^n-1) , Vref=2.5, n=no of bits
Serial.println(resolution,15);
volt_V = (resolution)*(float)sads1262Count; // voltage = resolution * adc count
volt_mV = volt_V*1000; // voltage in mV
tft.setCursor(166,150);
tft.println(volt_mV,3); } //not printed on TFT
В приведенном выше коде ADS1262 не активирован, поэтому не дает значения для последовательного окна или TFT.
Как активировать модуль ADS1262.
@ecaits, 👍2
Обсуждение1 ответ
Я бы предложил, чтобы
1) вы отлаживаете отдельный код и должны убедиться, что они работают отдельно, прежде чем интегрировать их.
2) вы помещаете эти фрагменты кода в логические блоки. например, вы, скорее всего, собираетесь что-то прочитать с АЦП и отобразить это на ЖК-дисплее. таким образом, ваш поток кода должен быть примерно таким:
vol_adc = ad1262_read(ADC1_CH); //read analog from ADC1_CH
vol_mv = adc2mv(vol_adc); //convert the adc results to mv
lcd_display(vol_mv); //display vol_mv on the lcd
такой подход позволяет значительно упростить программирование и отладку для вас и ваших читателей.
- Библиотека AD7768-1 "Ардуино"
- Моя настройка двух ведомых SPI на arduino не работает правильно
- Как использовать SPI на Arduino?
- Основная связь Arduino ModBus RTU с проблемой измерителя мощности
- Отправка значения с одного Arduino на другой
- OVF в последовательном мониторе вместо данных
- Связь Arduino master/slave с использованием RS485
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
Вы использовали два разных контакта для CS? Можете ли вы показать используемые вами электрические соединения и код, в котором используется TFT?, @frarugi87
Если вы используете плату Ethernet Arduino, вам необходимо зарезервировать и установить контроллер Ethernet и выбрать микросхему SD (D10 и D4)., @Mikael Patel
Мы уже зарезервировали D10 для контроллера Ethernet и D4 для выбора микросхемы SD. Вопрос в том, как общаться с ними обоими, по очереди. Я могу получить доступ к одному из них только тогда, когда код подготовлен для обоих устройств., @ecaits
Не могли бы вы, пожалуйста, дать вам ссылку на дисплей, который вы использовали? Там сотни 2,2 - дюймовых TFT-модулей SPI. Некоторым из них не хватает надлежащей схемы перевода уровня., @next-hack