我正在开发一个使用 ATmega328p 显示为键盘的 V-USB 项目。USB 部分运行良好(这不是我的第一个 V-USB 项目),但是在我使用 启动 V-USB 堆栈后usbInit()
,对 SD 卡库的所有调用都失败了。如果我之前调用相同的函数usbInit()
,一切都会完美运行。
我使用了一个名为 Diavolino 的 Arduino 克隆,但没有 Arduino/接线框架。我将 USB 连接到数字 I/O 2 和 3,将 SD 卡连接到 10-13(内置 SPI 线)。
我查看了 SD 卡库,发现没有使用除SPxx
. 我也grep
使用了 V-USB 代码,但它甚至没有触及SPxx
寄存器。
问题的第一个迹象是设备在应该访问 SD 卡时断开连接。然后我放入usbPoll()
并wdt_reset()
调用所有 SD 卡处理循环,发现在写入的情况下,卡在发送最后两个字节(CRC-16)后永远等待卡的确认。
我使用的 SD 卡库是sd_raw
Roland Riegel 的。