乐鑫技术交流
直播中

lotusp

10年用户 1004经验值
擅长:电源/新能源
私信 关注
[问答]

使用LCD例程时设置SPI MODE,为什么没法设置成模式3?

                                                                                                                                                                                                                                                                  
点一块ST7789V3的屏幕,需要用的SPI MODE3,以达到CPOL=1, CPHA=1,但是实际上用逻辑分析仪测试后发现,实际上是CPOL=0, CPHA=1。包括我用MODE2和MODE1,也不能达成效果。请问有什么方式能达到预想效果。

void app_main(void)
{
    esp_err_t ret;
    spi_device_handle_t spi;
    spi_bus_config_t buscfg={
        .miso_io_num=-1,
        .mosi_io_num=PIN_NUM_MOSI,
        .sclk_io_num=PIN_NUM_CLK,
        .quadwp_io_num=-1,
        .quadhd_io_num=-1,
        .max_transfer_sz=PARALLEL_LINES*320*2+8
    };
    spi_device_interface_config_t devcfg={
#ifdef CONFIG_LCD_OVERCLOCK
        .clock_speed_hz=26*1000*1000,           //Clock out at 26 MHz
#else
        .clock_speed_hz=10*1000*1000,           //Clock out at 10 MHz
#endif
        .mode=3,                                //SPI mode 0
        .spics_io_num=PIN_NUM_CS,               //CS pin
        .queue_size=7,                          //We want to be able to queue 7 transactions at a time
        .pre_cb=lcd_spi_pre_transfer_callback,  //Specify pre-transfer callback to handle D/C line
    };
                                                                                                                                                                                                                                                                                  

回帖(1)

大彭

2024-6-18 16:23:18
在使用LCD例程时,设置SPI模式可能会受到一些限制,导致无法设置成模式3。以下是一些可能的原因:

1. **硬件限制**:某些硬件平台可能不支持所有SPI模式。例如,某些微控制器可能只支持特定的SPI模式。

2. **库函数限制**:如果你使用的是某个特定的库来控制LCD,那么这个库可能没有实现SPI模式3的功能。这种情况下,你需要查找支持模式3的库或者修改现有库的代码。

3. **配置错误**:在设置SPI模式时,可能存在配置错误。请确保你正确设置了SPI的时钟极性(CPOL)和时钟相位(CPHA)以匹配模式3的要求。

4. **兼容性问题**:如果你的LCD屏与SPI模式3不兼容,那么即使硬件和库都支持,也无法使用该模式。请查阅你的LCD屏的文档,了解它支持的SPI模式。

5. **固件/软件限制**:在某些情况下,固件或软件可能限制了SPI模式的选择。这可能是为了确保与特定硬件或应用程序的兼容性。

解决这个问题的方法可能包括:

- **检查硬件支持**:确保你的硬件支持SPI模式3。
- **更新或更换库**:寻找一个支持SPI模式3的库,或者更新现有的库。
- **修改代码**:如果可能,修改现有代码以支持SPI模式3。
- **查阅文档**:查看你的LCD屏和微控制器的文档,了解它们对SPI模式的支持情况。

如果你能提供更多关于你的具体硬件和软件环境的信息,我可能能给出更具体的建议。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分