Spi h esp32: ESP32 SPI Communication: Pins, Multiple SPI, Peripherals (Arduino)
Содержание
Мой проект: Ссылка на класс SPI
Мой проект  | 
 Обработка протокола SPI.
 Подробнее…
  #include 
| SPI () | 0 экземпляр класса. Подробнее… | |
| виртуальный | ~SPI () | |
| Деструктор экземпляра класса. | ||
| void | init (int mosipin = default_mosi_pin, int misopin = default_miso_pin, int clkpin = default_clk_pin, int cspin = defbel_pin_pin) | 9 Подробнее.  | 
| void | setHost (хост spi_host_device_t) | |
| Настройка хоста для использования SPI. Вызовите это до init(). Подробнее… | ||
| void | передача (uint8_t *data, size_t dataLen) | |
| Отправка и получение данных через SPI. Это блокирующий звонок. Подробнее… | ||
| uint8_t | transferByte (значение uint8_t) | |
| Отправка и получение одного байта. Подробнее… | ||
| static const int | DEFAULT_MOSI_PIN = GPIO_NUM_13 | 
 Вывод MOSI по умолчанию.![]()  | |
| static const int | DEFAULT_MISO_PIN = GPIO_NUM_12 | 
| Контакт MISO по умолчанию. | |
| static const int | DEFAULT_CLK_PIN = GPIO_NUM_14 | 
| Контакт CLK по умолчанию. | |
| static const int | DEFAULT_CS_PIN = GPIO_NUM_15 | 
| Вывод CS по умолчанию. | |
| static const int | PIN_NOT_SET = -1 | 
| Значение неустановленного вывода. | |
Обработка протокола SPI.
◆ SPI()
| SPI::SPI | ( | ) | 
 Создать экземпляр класса.
- Возврат
 - Н/Д.
 
◆ init()
| void SPI::init | ( | целое |   mosiPin  =  DEFAULT_MOSI_PIN  , | 
| целое |   мисоПин  =  DEFAULT_MISO_PIN  , | ||
| целое |   clkPin  =  DEFAULT_CLK_PIN , | ||
| целое |   csPin  =  DEFAULT_CS_PIN    | ||
| ) | 
Инициализировать SPI.
- Параметры
 [in] mosiPin Контакт, используемый для функции MOSI SPI. [in] misoPin Контакт для использования для функции MISO SPI. 
[in] clkPin Контакт, используемый для функции CLK SPI. [дюйм] csPin Пин, используемый для функции CS SPI. 
- Возврат
 - Н/Д.
 
◆ setHost()
| void SPI::setHost | ( | spi_host_device_t | хост | ) | 
Установите хост SPI для использования. Вызовите это до init().
- Параметры
 [in] хост Используемый хост SPI. Либо HSPI_HOST (по умолчанию), либо VSPI_HOST. 
◆ Transfer()
| void SPI::transfer | ( | uint8_t * | данные , | 
| размер_t | dataLen | ||
| ) | 
 Отправка и получение данных через SPI.
 Это блокирующий звонок.
- Параметры
 [in] data Буфер данных, используемый для отправки и получения. [in] dataLen Количество байтов для передачи и приема. 
◆ TransferByte()
| uint8_t SPI::transferByte | ( | uint8_t | значение | ) | 
Отправка и получение одного байта.
- Параметры
 [in] значение Байт для отправки. 
- Возвращает
 - Полученное значение байта.
 
Документация для этого класса была создана из следующих файлов:
- SPI.h
 - SPI.cpp
 
Библиотека SPI не загружается на микросхеме ESP32-WROOM-32E — Общие
klimbot
#1
Привет всем,
Я столкнулся с проблемой при использовании пользовательской платы, которую я создал, где я не вижу проблемы с платами массового производства esp32-dev, при этом эффективно работая с той же сборкой.
По сути, я даже не уверен, в чем проблема, после установки уровня отладки на 3 это все, что я получаю:
[23 февраля 20:49:41.047] mgos_sys_config.c:368 MAC: c4:dd :57:8д:27:ф0 [23 февраля 20:49:41.047] mgos_sys_config.c:376 WDT: 30 секунд [23 февраля 20:49:41.047] mgos_core.c:104 Установка TZ на 'XXXXXXXXXXXXXXXX' [23 февраля 20:49:41.047] mgos_deps_init.c:172 Init adc 1.0.0... [23 февраля 20:49:41.047] mgos_deps_init.c:172 Init spi 1.0... [23 февраля 20:49:41.047] по 29 июля2019 12:21:46 [23 фев 20:49:41.047] [23 февраля 20:49:41.047] rst: 0x1 (POWERON_RESET), загрузка: 0x17 (SPI_FAST_FLASH_BOOT)
 По сути, устройство просто входит в цикл загрузки, всегда умирая в одной и той же точке  mgos_deps_init.
 c:172 Init spi 1.0... 
 Я могу запустить базовый проект  esp32 , и все это работает, как и ожидалось, на доска. Я могу прошивать и запускать код Arduino, и он работает нормально, но проект, над которым я работал некоторое время, кажется, вызывает проблемы. 
 Когда я прошиваю FW на нестандартные устройства, следующее сообщение я вижу на терминале через
[23 февраля 21:01:44.486] esp32_spi_master.c:94 Инициализация SPI3 в порядке (MISO: 19, MOSI: 23, SCLK: 18; CS0/1/2: 27/5/-1; родной? да)
 Любые мысли о том, как я могу отладить/устранить неполадки, будут высоко оценены. 
 Спасибо.
климбот
#2
 Работа идет медленно, но я удалил столько функций, сколько мог, из своего проекта и постепенно добавляю обратно, пока не найду ошибку.
 По крайней мере, сейчас он бежит, что хорошо (но больно)
Если у кого-нибудь есть предложение о том, как я мог бы ускорить это, я был бы очень признателен.
скаприль
#3
 Я предлагаю вам изменить тему, чтобы что-то более точно описывало вашу проблему. 
 У вас есть плата с процессором ESP32, наверное, чип, а не модуль… 
 Вы подключили SPI flash к процессору… и… 
 Похоже, на вашей плате работает какая-то прошивка, а другая отказывается загружаться… 
 Глупые вопросы, но я должен их задать: 
 Достаточно ли велика ваша вспышка? 
 Использует ли ваш код некоторые функции на платах массового производства esp32-dev, которых, возможно, нет на ваших?
климбот
#4
Спасибо за предложения @scapril.
 При разборе программы я обнаружил, что ломается загрузка библиотеки SPI. 
 В основном я могу загрузить все, кроме SPI lib, и когда я это делаю, я вижу поведение, о котором я упоминал выше.
Я занимаюсь созданием еще одной платы разработки с минимальным количеством компонентов, чтобы проверить, не может ли аппаратное обеспечение вызывать проблему
klimbot
#5
Так странно, мои недавно построенные доски разработчика, кажется, работают, как и ожидалось. Шаг библиотеки SPI не дает сбоев, и плата загружается, как и ожидалось…
Я хотел бы понять, что могло вызвать это, есть ли шанс, что короткое замыкание где-то на выводах SPI могло привести к этой ошибке?
скаприль
#6
климбот:
Я занимаюсь созданием еще одной платы разработки с минимальным количеством компонентов, чтобы проверить, не может ли аппаратное обеспечение вызывать проблему
климбот:
Я хотел бы понять, что могло быть причиной этого, есть ли шанс, что короткое замыкание где-то на контактах SPI могло привести к этой ошибке?
 Ну, если вы подключите осциллограф и понаблюдаете за сигналами, вы увидите, нормально ли работает SPI, или есть избыточная емкость из-за неправильной разводки дорожек или неправильной конструкции схемы, или избыточная индуктивность из-за неправильной ширины дорожек и разводки, или если Проблемы сборки заключаются в коротком замыкании или чрезмерной нагрузке ваших сигналов или в том, что они не соответствуют спецификациям для предполагаемых чипов.
 ..
