Page 1 of 1
esp32-s3如何进行3线spi通信?[已解决]
Posted: Mon Dec 20, 2021 10:01 am
by jr-test
想通过esp32-s3驱动3线spi的屏,但是一直初始化不成功。所以来求助一下esp32的3线spi通信。
Re: esp32-s3如何进行3线spi通信?
Posted: Tue May 03, 2022 2:56 am
by enjoyic
不知道通过st7789驱动修改是否可以,好像st7789也需要spi配置的。
Re: esp32-s3如何进行3线spi通信?
Posted: Tue Jul 12, 2022 1:41 am
by lisongzehn
1、SPI配置为3Wire 9Bit模式
void SPI_3Wire_Interface_Init( esp_err_t* ret, \
spi_device_handle_t* spi, \
spi_bus_config_t* buscfg, \
spi_device_interface_config_t* devcfg)
{
buscfg->miso_io_num=-1;
buscfg->mosi_io_num=PIN_NUM_SPI_3WIRE_SDA_IO;
buscfg->sclk_io_num=PIN_NUM_SPI_3WIRE_SCLK_O;
buscfg->quadwp_io_num=-1;
buscfg->quadhd_io_num=-1;
//buscfg.data4_io_num=-1;
//buscfg.data5_io_num=-1;
//buscfg.data6_io_num=-1;
//buscfg.data7_io_num=-1;
buscfg->max_transfer_sz=xSPI_Max_transfer_size; //= 4096 Byte
buscfg->flags=SPICOMMON_BUSFLAG_DUAL;
//buscfg.intr_flags=;
devcfg->command_bits=1; //D/Cx位,0 cmd, 1 data
//devcfg.address_bits=24;
//devcfg.dummy_bits=;
devcfg->mode=xSPI_CPOL_CPHA_mode; //CPOL, CPHA xSPI_CPOL_CPHA_mode = 0
//devcfg.duty_cycle_pos;
//devcfg.cs_ena_pretrans;
//devcfg.cs_ena_posttrans;
devcfg->clock_speed_hz=xSPI_Clock_Speed_For_DM_Initial; //=1MHz
//devcfg.input_delay_ns=;
//devcfg->spics_io_num=PIN_NUM_SPI_4WIRE_2_CS_O;
devcfg->flags=SPI_DEVICE_3WIRE | SPI_DEVICE_HALFDUPLEX; //3线半双工
devcfg->queue_size=7;
//*devcfg.pre_cb=RS_transfer_callback; //D/C(RS)处理
//devcfg.post_cb=;
//Initialize the SPI bus
*ret=spi_bus_initialize(LCD_HOST, buscfg, SPI_DMA_CH_AUTO);
ESP_ERROR_CHECK(*ret);
//Attach the LCD to the SPI bus
*ret=spi_bus_add_device(LCD_HOST, devcfg, spi);
ESP_ERROR_CHECK(*ret);
}
2、写1R1D
lcd_write_1R1D(0xFE, 0x20);
void lcd_write_1R1D(const uint8_t cmd, const uint8_t data)
{
DM_CS(0);
//发送cmd
memset(&sendcfg, 0, sizeof(sendcfg));
sendcfg.cmd = 0; //cmd = 0
sendcfg.length=8;
sendcfg.tx_buffer = &cmd;
ret=spi_device_polling_transmit(spi, &sendcfg);
assert(ret==ESP_OK);
//发送data
memset(&sendcfg, 0, sizeof(sendcfg));
sendcfg.cmd = 1; //data = 1
sendcfg.length=8;
sendcfg.tx_buffer = &data;
ret=spi_device_polling_transmit(spi, &sendcfg);
assert(ret==ESP_OK);
DM_CS(1);
}
3、波形图
- 1R1D波形图.jpg (95.97 KiB) Viewed 3528 times