Thread 中讨论的其他器件:CC1310
工具与软件:
我刚有一个简单的 SPI SD 读卡器 、要在项目中添加一些存储器、但无法运行 sdraw.c 示例脚本。 它可以读取扇区数(尽管报告的大小比磁盘的实际大小小得多)并成功写入卡、但无法读回结果(获得非常通用的-1错误代码)。试图单步调试器找到 SDSPI.c 代码此部分中出现的错误:
if (rxBuf[0] != START_BLOCK_TOKEN) { /* Return error if valid data token was not received */ return (false); } /* Receive the data block into buffer */ status = spiTransfer(handle, buf, NULL, count) if (status != SD_STATUS_SUCCESS) { return (false); } status = spiTransfer(handle, &rxBuf, &txBuf, 2) /* Read the 16 bit CRC, but discard it */ if (status != SD_STATUS_SUCCESS) { return (false);
我仔细检查了布线是否正确、并完成了以下操作:
- VCC 为3.3V
- GND 已连接
- CS 在 DIO11中
- MOSI 在 DIO9中
- MISO 位于 DIO8
- SCLK 位于 DIO10中
这是我的 board.h
#define Board_SD0 CC1310_LAUNCHXL_SDSPI0 #define Board_SPI0 CC1310_LAUNCHXL_SPI0 #define Board_SPI1 CC1310_LAUNCHXL_SPI1 #define Board_SPI_FLASH_CS CC1310_LAUNCHXL_SPI_FLASH_CS #define Board_FLASH_CS_ON 0 #define Board_FLASH_CS_OFF 1 #define Board_SPI_MASTER CC1310_LAUNCHXL_SPI0 #define Board_SPI_SLAVE CC1310_LAUNCHXL_SPI0 #define Board_SPI_MASTER_READY CC1310_LAUNCHXL_SPI_MASTER_READY #define Board_SPI_SLAVE_READY CC1310_LAUNCHXL_SPI_SLAVE_READY #define Board_UART0 CC1310_LAUNCHXL_UART0 #define Board_WATCHDOG0 CC1310_LAUNCHXL_WATCHDOG0
CC1310_LAUNCHXL.h 文件
/* SPI */ #define CC1310_LAUNCHXL_SPI_FLASH_CS IOID_20 #define CC1310_LAUNCHXL_FLASH_CS_ON 0 #define CC1310_LAUNCHXL_FLASH_CS_OFF 1 /* SPI Board */ #define CC1310_LAUNCHXL_SPI0_MISO IOID_8 /* RF1.20 */ #define CC1310_LAUNCHXL_SPI0_MOSI IOID_9 /* RF1.18 */ #define CC1310_LAUNCHXL_SPI0_CLK IOID_10 /* RF1.16 */ #define CC1310_LAUNCHXL_SPI0_CSN IOID_11 #define CC1310_LAUNCHXL_SPI1_MISO PIN_UNASSIGNED #define CC1310_LAUNCHXL_SPI1_MOSI PIN_UNASSIGNED #define CC1310_LAUNCHXL_SPI1_CLK PIN_UNASSIGNED #define CC1310_LAUNCHXL_SPI1_CSN PIN_UNASSIGNED
事实上,它是从卡上的早期脚本中正确读取数据,使我认为它不能是一个接线问题,同样的功能,后来失败在脚本的早期成功。 我只是有点迷失了下一步该做什么。 有人能告诉我吗? 对于此 SDSPI 库、所有 SD 卡是否都是相同的? 我应该以某种方式设置它的格式吗? 已使用非通用 SD 读卡器? 只是在这件事上有点迷失。
提前感谢
James