mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-20 01:45:55 +08:00
添加智能灯固件代码
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
| Supported Targets | ESP32 |
|
||||
| ----------------- | ----- |
|
||||
|
||||
### SDIO Example
|
||||
|
||||
## Introduction
|
||||
|
||||
These two projects illustrate the SDIO driver (host and slave). The host
|
||||
example shows how to initialize a SDIO card, respond to a slave interrupt, as
|
||||
well as reading and writing registers and buffers. The slave is a dedicated
|
||||
peripheral, providing 8 interrupts, 52 8-bit R/W registers, an input FIFO and
|
||||
an output FIFO. The example shows how to configure the driver and use these
|
||||
feature.
|
||||
|
||||
The host first tell the slave to write the registers to a specified value,
|
||||
then reads and prints the value from the slave. Then tell the slave to send 8
|
||||
interrupts to the host. Then the host start sending data to the slave FIFO
|
||||
and then reads from the slave FIFO in loops.
|
||||
|
||||
## Wiring
|
||||
|
||||
The SDIO protocol requires at least 4 lines (one more line than SD memory
|
||||
protocol): CMD, CLK, DAT0 and DAT1. DAT1 is mandatory for the interrupt. DAT2
|
||||
is required if 4-bit mode is used. DAT3 is required in 4-bit mode (connected
|
||||
to host), or required by the slave as mode detect in 1-bit mode (pull up). It
|
||||
is okay in 1-bit mode to leave DAT3 of host disconnected.
|
||||
|
||||
Please run wires between the slave and master to make the example function
|
||||
(pins are the same for the host and the slave):
|
||||
|
||||
| Signal | GPIO NUM |
|
||||
|--------|----------|
|
||||
| CLK | GPIO-14 |
|
||||
| CMD | GPIO-15 |
|
||||
| DAT0 | GPIO-2 |
|
||||
| DAT1 | GPIO-4 |
|
||||
| DAT2 | GPIO-12 |
|
||||
| DAT3 | GPIO-13 |
|
||||
| Ground | GND |
|
||||
|
||||
CMD and DAT0-3 lines require to be pulled up by 50KOhm resistors even in
|
||||
1-bit mode. See *Board Compability* below for details. In 1-bit mode, the
|
||||
host can make use of DAT2 and DAT3, however the slave should leave them alone
|
||||
but pulled up.
|
||||
|
||||
Be aware that the example uses lines normally reserved for JTAG. If you're
|
||||
using a board with JTAG functions, please remember to remove jumpers
|
||||
connecting to the JTAG adapter. The SD peripheral works at a high frequency
|
||||
and uses native pins, there's no way to configure it to other pins through
|
||||
the GPIO matrix.
|
||||
|
||||
Please make sure CMD and DATA lines are pulled up by 50KOhm resistors even in
|
||||
1-bit mode or SPI mode, which is required by the SD specification.
|
||||
|
||||
The 4-bit mode can be configured in the menuconfig. If the 4-bit mode is not
|
||||
used, the host will not control the DAT3 line, the slave hardware is
|
||||
responsible to pull-up the line (or the slave may run into the SPI mode and
|
||||
cause a crash).
|
||||
|
||||
The host uses HS mode by default. If the example does not work properly,
|
||||
please try connecting two boards by short wires, grounding between two boards
|
||||
better or disabling the HS mode in menuconfig.
|
||||
|
||||
## Board compatibility
|
||||
|
||||
1. If you're using a board (e.g. WroverKit v2 and before, PICO, DevKitC)
|
||||
which is not able to drive GPIO2 low on downloading, please remember to
|
||||
disconnect GPIO2 between two boards when downloading the application.
|
||||
|
||||
2. It is suggested to use the official Wrover Kit as the slave. This is
|
||||
because Wrover Kits have pullups on CMD, DAT0 and DAT1. Otherwise you'll have
|
||||
to connect the pullups manually (or use the Wrover Kit as the host). However,
|
||||
due to a PCB issue, Wrover Kits v3 and earlier have pullup v.s. pulldown
|
||||
conflicts on DAT3 line. You'll have to:
|
||||
|
||||
1. Pull up GPIO13 by resistor of 5KOhm or smaller (2KOhm suggested)
|
||||
in 4-bit mode.
|
||||
2. Pull up, or tie GPIO13 to VDD3.3 in 1-bit mode.
|
||||
|
||||
To help you faster evaluate the SDIO example on devkits without pullups,
|
||||
you can uncomment the pullup enable flags in the initialization code of
|
||||
the app_main of host or slave. This enables internal weak pullups on CMD,
|
||||
DAT0 and DAT1 and DAT3 lines. However please don't rely on internal weak
|
||||
pullups in your own design.
|
||||
|
||||
3. Moreover, if your slave devkit is using code flash of 3.3V, it is required
|
||||
to pull down DAT2 line to set proper flash voltage. This conflicts with SDIO
|
||||
pullup requirements. Currently devkits using PICO-D4 and Wroom-32 series
|
||||
modules have this problem. You can either:
|
||||
|
||||
- Use Wrover Kit v3 which integrates a Wrover module
|
||||
- Still use PICO-D4 or Wroom-32 Series modules as the slave, however:
|
||||
- Don't connect the DAT2 pin and leave it floating. This means
|
||||
you have to use 1-bit mode in the host. ``SDIO_DAT2_DISABLED``
|
||||
option should be enabled in the menuconfig to avoid using of
|
||||
DAT2. Or:
|
||||
- Burn the EFUSE to force the module using 3.3V as the flash
|
||||
voltage. In this way the voltage of flash doesn't depend on MTDI
|
||||
any more, connect DAT2 to the host and make sure it is pulled up
|
||||
correctly. See document below.
|
||||
|
||||
See docs in the programming guide ``api_reference/peripherals/sdio_slave``
|
||||
and ``api_reference/peripherals/sd_pullup_requirements`` to see more
|
||||
descriptions about pullups and MTDI requirements and solutions of official
|
||||
modules and devkits.
|
||||
|
||||
## About `esp_serial_slave_link` component used in this example
|
||||
|
||||
`esp_serial_slave_link` component in the IDF is used to communicate to a ESP slave device.
|
||||
When the `esp_serial_slave_link` device is initialized with an `essl_sdio_config_t` structure,
|
||||
the `esp_serial_slave_link` can be used to communicate with an ESP32 SDIO slave.
|
||||
Reference in New Issue
Block a user