• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Вопросы по функциям SDK

nikolz

Well-known member
Всем доброго времени суток.
Может ли кто подсказать, для чего нужна и что делает функция SPICsPinSelect(SpiNum spiNum, SpiPinCS pinCs) из файла driver_lib/include/driver/spi_interface.h? Очевидно, что она должна каким-то образом выбирать активный CS на SPI, но я так и не понял, как она работает. Ведомое устройство, подключенное к HSPI, по-прежнему работает от GPIO15, какое бы я значение не передавал в эту функцию.
Интересуюсь, потому что хочу повесить второе ведомое устройство на HSPI, а лезть в SPI overlapping и вмешиваться в работу программной флеши не радует.
есть три пина CS
SpiPinCS_0 CS0 pin
SpiPinCS_1 CS1 pin
SpiPinCS_2 CS2 pin
 

x8973

Member
есть три пина CS
Я видел декларацию этого енумератора, она в том же файле несколько выше. Вопрос в том, какие конкретные выводы МК обозначают эти пины, и почему вызов этой функции с любым из них не приводит к видимому результату?
 

nikolz

Well-known member
Я видел декларацию этого енумератора, она в том же файле несколько выше. Вопрос в том, какие конкретные выводы МК обозначают эти пины, и почему вызов этой функции с любым из них не приводит к видимому результату?
When ESP8266 is working as a host, HSPI bus can operate with three user devices, besides, it also supports one external Flash writing operation.
User devices are supported through selection with CS lines.
To be more specific, In the above-mentioned ways of connection, SPI bus shares the same external Flash with HSPI bus.
2. Hardware Connection Generally speaking, SPI slave devices specify four logic signals: SCLK, MOSI, MISO, and CS.
Mode Device Name
HSPI Default IO User device 1
SPI OVERLAP and CS1 User device 2
SPI OVERLAP and CS2 User device 3
SPI OVERLAP and CS0 Flash
--------chip ESP8266------------
Pin Name Type Function
15 GPIO0 I/O GPIO0; SPI_CS2
26 U0TXD I/O UART TX during flash programming; GPIO1; SPI_CS1
20 SDIO_CMD I/O Connect to SD_CMD (Series R: 200 Ω); SPI_CS0; GPIO11
 

x8973

Member
When ESP8266 is working as a host, HSPI bus can operate with three user devices, besides, it also supports one external Flash writing operation.
User devices are supported through selection with CS lines.
To be more specific, In the above-mentioned ways of connection, SPI bus shares the same external Flash with HSPI bus.
2. Hardware Connection Generally speaking, SPI slave devices specify four logic signals: SCLK, MOSI, MISO, and CS.
Mode Device Name
HSPI Default IO User device 1
SPI OVERLAP and CS1 User device 2
SPI OVERLAP and CS2 User device 3
SPI OVERLAP and CS0 Flash
--------chip ESP8266------------
Pin Name Type Function
15 GPIO0 I/O GPIO0; SPI_CS2
26 U0TXD I/O UART TX during flash programming; GPIO1; SPI_CS1
20 SDIO_CMD I/O Connect to SD_CMD (Series R: 200 Ω); SPI_CS0; GPIO11
Это я тоже видел. Как я уже писал, не не хочется лезть в spi overlapping, дабы не нарушать работу флеши. К тому же, судя по документации, в этом режиме spi может работать только на 80 или 40 мегагерц. Я не уверен, что мой дисплей, висящий на spi, поддерживает такие скорости. Сейчас он работает на 500 килогерц.
В принципе, можно было бы попробовать завести оверлаппинг. Однако опять же я не нашел в примерах, как конкретно это делается. Сейчас я использовал код из примера peripheral_test, там реализация для режима "1 мастер - 1 слейв" без оверлаппинга. Как туда добавить его поддержку?
 

esptest

New member
Здравствуйте!
В наличии esp32 wroom, пытаюсь использовать функции (из под idf):
wifi_send_pkt_freedom и esp_wifi_80211_tx.
На первую ругается компилятор (мол нет её), а вторая возвращает:
E (5043) wifi:unsupport frame type: 0c0
Хотелось бы отправлять пакеты различного типа...
Какой sdk (и где его взять) необходим для реализации отправки пакетов различного типа(без ограничений со стороны espressif)?
Или это ограничение возможно как-то обойти?
p.s.
пытался отправить:
const uint8_t dPacket[] = {
0xC0, 0x00,
0x3A, 0x01,
0x06, 0x05, 0x04, 0x03, 0x02, 0x01,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x00, 0x00,
0x01, 0x00
};
 

esptest

New member
Здравствуйте!
В наличии esp32 wroom, пытаюсь использовать функции (из под idf):
wifi_send_pkt_freedom и esp_wifi_80211_tx.
На первую ругается компилятор (мол нет её), а вторая возвращает:
E (5043) wifi:unsupport frame type: 0c0
Хотелось бы отправлять пакеты различного типа...
Какой sdk (и где его взять) необходим для реализации отправки пакетов различного типа(без ограничений со стороны espressif)?
Или это ограничение возможно как-то обойти?
p.s.
пытался отправить:
const uint8_t dPacket[] = {
0xC0, 0x00,
0x3A, 0x01,
0x06, 0x05, 0x04, 0x03, 0x02, 0x01,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0x00, 0x00,
0x01, 0x00
};
Нашёл для последней версии:
но что надо сделать?
 
Сверху Снизу