SPI 总线3-line、4-line的定义

网上搜了下,发现各种说法都有,找一个spi器件的datasheet看了下,明确了3-line、4-line真正的定义。

第一种:3-line是指CSX(Chip selection signal)、DCX(Clock signal)、SDA(Serial input/output data),其中CSX也写着CS片选,DCX也写着SCL时钟信号;4-line在3-line的基础上多了WRX(data/ command flag),也叫着D/CX。这种情况下是半双工,数据只能往一个方向传输,例如SPI的屏只需要输出。

第二种:3-line是指CSX(Chip selection signal)、DCX(Clock signal)、SDA(Serial input data)、SDO(Serial output data),其中SDA也叫MISO,SDO也叫MOSI。4-line在此基础上多了WRX(data/ command flag)。这种情况下是全双工的传输方式。

第二种其实不能叫3-line和4-line,实际上是4-line和5-line了,所以很容易引起误解,猜测应该是把CSX脚忽略了这么叫的。明白了就行不纠结,以实际应用,根据需要来决定几line。

补充一下:因为3-line(上面的统一说法)没有WRX,所有要有1bit来说明是command还是data,经常就会有3-line 9bit,4-line 8bit的说法。

另外SPI的相关知识就是4种工作方式了,这个网上的答案没有异议。

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
以下是ESP32-IDF逐行读写SD卡数据的参考代码: ```c #include <stdio.h> #include "esp_vfs_fat.h" #include "driver/sdmmc_host.h" #include "driver/sdspi_host.h" #include "sdmmc_cmd.h" #define PIN_NUM_MISO 2 #define PIN_NUM_MOSI 15 #define PIN_NUM_CLK 14 #define PIN_NUM_CS 13 void app_main(void) { esp_err_t ret; sdmmc_card_t* card; FILE* f; sdmmc_host_t host = SDSPI_HOST_DEFAULT(); sdspi_slot_config_t slot_config = SDSPI_SLOT_CONFIG_DEFAULT(); slot_config.gpio_miso = PIN_NUM_MISO; slot_config.gpio_mosi = PIN_NUM_MOSI; slot_config.gpio_sck = PIN_NUM_CLK; slot_config.gpio_cs = PIN_NUM_CS; ret = spi_bus_initialize(host.slot, &host.bus_config, slot_config.slot); assert(ret == ESP_OK); ret = esp_vfs_fat_sdspi_mount("/sdcard", &host, &slot_config, &card); assert(ret == ESP_OK); // 打开文件 f = fopen("/sdcard/hello.txt", "w"); if (f == NULL) { printf("Failed to open file for writing\n"); return; } fprintf(f, "Hello World!\n"); fclose(f); // 重新打开文件以进行读取 f = fopen("/sdcard/hello.txt", "r"); if (f == NULL) { printf("Failed to open file for reading\n"); return; } char line[128]; while (fgets(line, sizeof(line), f)) { printf("%s", line); } fclose(f); // 卸载SD卡 esp_vfs_fat_sdspi_unmount(); } ``` 这个例子使用SD卡的SPI接口进行读写操作。在例子中,我们首先初始化SPI总线,然后挂载SD卡文件系统。我们可以使用fopen和fprintf函数向SD卡中写入文件,也可以使用fgets函数读取文件内容。最后,我们使用esp_vfs_fat_sdspi_unmount函数卸载SD卡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值