esp32-s3如何进行3线spi通信?[已解决]

jr-test
Posts: 100
Joined: Mon Aug 23, 2021 3:04 am

esp32-s3如何进行3线spi通信?[已解决]

Postby jr-test » Mon Dec 20, 2021 10:01 am

想通过esp32-s3驱动3线spi的屏,但是一直初始化不成功。所以来求助一下esp32的3线spi通信。

enjoyic
Posts: 3
Joined: Sun Apr 24, 2022 2:10 am

Re: esp32-s3如何进行3线spi通信?

Postby enjoyic » Tue May 03, 2022 2:56 am

不知道通过st7789驱动修改是否可以,好像st7789也需要spi配置的。
学为鸟人

lisongzehn
Posts: 2
Joined: Tue Jul 12, 2022 1:19 am

Re: esp32-s3如何进行3线spi通信?

Postby lisongzehn » Tue Jul 12, 2022 1:41 am

1、SPI配置为3Wire 9Bit模式

Code: Untitled.c Select all


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

Code: Untitled.c Select all


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
1R1D波形图.jpg (95.97 KiB) Viewed 4612 times

Who is online

Users browsing this forum: Applebot and 5 guests