需求说明
QSPI 1Wire写 0xFE(寄存器地址) 0x20(寄存器值)
SPI初始化
void SPI_Init(void)
{
#if 1 //3Wire_HALFDUPLEX
buscfg.miso_io_num=-1; //PIN_NUM_MISO;
buscfg.mosi_io_num=PIN_NUM_MOSI;
buscfg.sclk_io_num=PIN_NUM_CLK;
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=16*320*2+8; //2byte/pixcel;320pixcel/Line;16Line
//buscfg.flags=; //待研究用途
//buscfg.intr_flags=; //待研究用途
devcfg.command_bits=8;
devcfg.address_bits=24;
//devcfg.dummy_bits=;
devcfg.mode=0; //CPOL, CPHA
//devcfg.duty_cycle_pos;
//devcfg.cs_ena_pretrans;
//devcfg.cs_ena_posttrans;
devcfg.clock_speed_hz=10*1000*1000; //SCLK频率 10Mhz
//devcfg.input_delay_ns=;
devcfg.spics_io_num=PIN_NUM_CS; //CS pin
devcfg.flags=SPI_DEVICE_3WIRE | SPI_DEVICE_HALFDUPLEX;
devcfg.queue_size=7;
//devcfg.pre_cb=lcd_spi_pre_transfer_callback; //D/C(RS)处理 3Wire没用到RS信号
//devcfg.post_cb=;
#endif
//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);
}
SPI发送操作
lcd_write_1R1D(0xFE, 0x40);
#if 1
void lcd_write_1R1D(const uint8_t cmd, const uint8_t data)
{
//数据处理的方法
uint32_t u32addr = (cmd << 8) & 0x00FF00;
memset(&sendcfg, 0, sizeof(sendcfg)); //Zero out the transaction
sendcfg.cmd = 0x02;
sendcfg.addr = u32addr;
sendcfg.length=8; //Command is 16 bits
sendcfg.tx_buffer=&data; //The data is the cmd itself
//sendcfg.user=(void*)0; //D/C needs to be set to 0
ret=spi_device_polling_transmit(spi, &sendcfg); //Transmit!
assert(ret==ESP_OK); //Should have had no issues.
}
#endif