Spi h esp32: ESP32 SPI Communication: Pins, Multiple SPI, Peripherals (Arduino)

Мой проект: Ссылка на класс SPI

Мой проект

Обработка протокола SPI.
Подробнее…

#include

8

9 Подробнее. ..

  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)

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *