[Решена] задача с использованием аппаратного SPI

девчонка
Солнце 15 июля 2018 г. 14:25
Привет,
Я использовал интерфейс SPI с ST7735 TFT. Я получил работу с Software SPI.
Но аппаратный SPI не работает.
Я также проверил с помощью логического анализатора. С HWSPI, логический уровень, не изменяющийся для 4 булавок.

Вот набросок: -------------------------------- APDS9960 - GestureTest demo -------------------------------- APDS-9960 initialization complete Detected ID: 0xA8 Gesture sensor is now running Detected gesture: UP RIGHT Detected gesture: DOWN LEFT Detected gesture: UP LEFT Detected gesture: DOWN LEFT Detected gesture: UP RIGHT Detected gesture: DOWN LEFT Detected gesture: DOWN RIGHT Detected gesture: LEFT Detected gesture: RIGHT Detected gesture: LEFT Detected gesture: RIGHT Detected gesture: LEFT Detected gesture: UP Detected gesture: DOWN Detected gesture: UP Detected gesture: DOWN Detected gesture: FAR APPROACHING Detected gesture: NEAR APPROACHING Detected gesture: NEAR Detected gesture: NEAR Detected gesture: NEAR Detected gesture: NEAR DEPARTING Detected gesture: FAR Detected gesture: FAR Detected gesture: NEAR APPROACHING Detected gesture: NEAR Detected gesture: NEAR DEPARTING Detected gesture: FAR Detected gesture: FAR Detected gesture: FAR APPROACHING Detected gesture: NEAR APPROACHING Detected gesture: NEAR Detected gesture: FAR DEPARTING Detected gesture: FAR Detected gesture: FAR APPROACHING Detected gesture: NEAR DEPARTING

Mrburnette
Солнце 15 июля 2018 г. 14:35
Может, посмотрите эти потоки:

Что касается библиотеки Адафрута: https: // www.STM32duino.com/viewtopic.pH ... 6&начало = 10
&
Что касается булавок SPI: ViewTopic.PHP?T = 1767
&
Примечания из вики: https: // github.com/rogerclarkmelbourne/ ... 2/Вики/SPI

Пример синтаксиса от STM32Duino GitHub: https: // github.com/rogerclarkmelbourne/ ... _Spi_ports

Надеюсь, я дал вам ссылки на Diest Current (Lodess) HW SPI -ссылки, но я, возможно, потерпел неудачу в своих поисках. Я не был активным на этом сайте в течение многих месяцев, и я, возможно, пропустил несколько недавних изменений (в основном я не в ESP32 и RPI в наши дни.)


Луча

Хобби
Sun 15 июля 2018 г., 16:11
Вы правильно определили и подключили порт SPI?
spi1.jpg
SPI1.JPG (50.85 киб) просмотрено 787 раз

Стивестронг
Солнце 15 июля 2018 г. 16:43
[девчонка - Солнце 15 июля 2018 г. 14:25] - Нужно ли определить, какой интерфейс SPI будет использоваться?
Да. Если вы ничего не указаете, будет использоваться SPI по умолчанию (порт 1).

Кроме того, я не вижу, где в библиотеке инициализируется интерфейс SPI (используя SPI.начинать). Это может быть причиной, почему это не работает.
Я рекомендую сделать это в вашем эскизе перед TFT.инициатор.

Вы используете оригинальный Adafruit Lib или из Kenjutsu? Пожалуйста, предоставьте ссылку.

девчонка
Вт 17 июля 2018 г., 17:02
все еще не работает...
Я позвонил SPI.начинать() но это будет называться по умолчанию, если я позвоню начало транзакции.

Стивестронг
Вторник 17 июля 2018 г. 20:32
Куда вы называете начало транзакции?
Я не вижу этого.

девчонка
Ср. 18 июля 2018 г. 15:27
Я назвал SPI.Начните в adafruit_st7735.Файл CPP. И вот изменение.
Ambient: 8926 Red: 3795 Green: 65535 Blue: 0 Ambient: 8933 Red: 3797 Green: 65535 Blue: 0

Стивестронг
Ср. 18 июля 2018 г. 15:38
Это не подходящее место для названия SPI.начинать().

Я рекомендую сделать это в вашем эскизе перед вызовом TFT.инициатор.

девчонка
Пт 20 июля 2018 г. 14:57
Спасибо..Сейчас работает... :)

Стивестронг
Пт 20 июля 2018 г. 15:02
Пожалуйста, скажите нам, что вы сделали, что это работает сейчас, это может быть полезно для других читателей.

Кенджуцу
Пн 23 июля 2018 г. 8:26 утра
Добрый день

Можете ли вы взглянуть на мой ответ здесь: Re: LCD на основе ST7735?

Если возможно, можете ли вы предоставить обратную связь?

Спасибо

девчонка
Вт 24 июля 2018 г. 16:33
Спасибо. Моя также начала работать. Я использую ту же библиотеку по умолчанию из Adafruit.
Вот .INO -файл.
#include #include #include #include #include "SdFat.h" SPIClass _SPI(2); #define ce_nrf PA8 #define csn_nrf PB12 #define irq_nrf PA0 #define cs_sd PA4 #define lmp_hijau PA2 #define lmp_merah PA3 Enrf24 radio(ce_nrf, csn_nrf, irq_nrf); const uint8_t node[] = { 0xF0F0F0F0E1LL }; //const uint64_t node[] = {0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL}; SdFat SD; File file; void setup() { Serial1.begin(9600); _SPI.begin(); _SPI.setDataMode(SPI_MODE0); _SPI.setBitOrder(MSBFIRST); pinMode(lmp_hijau, OUTPUT); pinMode(lmp_merah, OUTPUT); Serial1.print("Initializing SD card..."); if (!SD.begin(cs_sd)) { Serial1.println("initialization failed!"); return; } Serial1.println("Initializing SD card done."); radio.setSPI(&_SPI); radio.begin(); // Defaults 1Mbps, channel 0, max TX power radio.setRXaddress((void*)node); radio.enableRX(); } void loop() { char uid[] = ""; radio_state(radio.radioState()); while (!radio.available(true)); if (radio.read(uid)) { Serial1.print("Received packet: "); Serial1.println(uid); file = SD.open("18042018.txt", FILE_WRITE); if (file) { file.println(uid); file.close(); Serial1.println("done."); digitalWrite(lmp_hijau, HIGH); delay(200); digitalWrite(lmp_hijau, LOW); } else { Serial1.println("error opening file"); digitalWrite(lmp_merah, HIGH); delay(200); digitalWrite(lmp_merah, LOW); } } } void radio_state(uint8_t status) { Serial1.print("Enrf24 radio transceiver status: "); switch (status) { case ENRF24_STATE_NOTPRESENT: Serial1.println("NO TRANSCEIVER PRESENT"); break; case ENRF24_STATE_DEEPSLEEP: Serial1.println("DEEP SLEEP <1uA power consumption"); break; case ENRF24_STATE_IDLE: Serial1.println("IDLE module powered up w/ oscillators running"); break; case ENRF24_STATE_PTX: Serial1.println("Actively Transmitting"); break; case ENRF24_STATE_PRX: Serial1.println("Receive Mode"); break; default: Serial1.println("UNKNOWN STATUS CODE"); } }

Printf через SWO