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, или есть избыточная емкость из-за неправильной разводки дорожек или неправильной конструкции схемы, или избыточная индуктивность из-за неправильной ширины дорожек и разводки, или если Проблемы сборки заключаются в коротком замыкании или чрезмерной нагрузке ваших сигналов или в том, что они не соответствуют спецификациям для предполагаемых чипов.