您好我在外部闪存和SD卡之间使用共享SPI线路。对于SD卡,我使用MSP430的SPI引擎,但对于外部闪存,我使用的是相同的SPI线,但是使用GPIO BitBanging。
SD卡很少使用,因此甚至不会调用init函数。
问题: 我观察到如果插入但未使用SD卡,并且访问外部闪存,则会突然出现电流增加(13mA),并且在SD卡被移除之前不会减少。如果没有插入SD卡,则不存在此类问题。
永远不会触摸SD卡的CHIP SELECT,并且始终为HIGH,但通过FLASH进行通信会影响SD卡的睡眠模式。根据Sandisk的数据表,SD自动进入睡眠模式。
观察:
Ø Both SD and flash use common SPI lines, all 4 lines state is observed in both HIGH and LOW current states and observed no difference
**LINE HIGH Current Low Current**
Clock H H
D_Out H H
D_In H H
SD_CS H H
Ø **SD Card Removed**
Clock H H
D_Out H H
D_In H H
SD_CS H H
>观察到将FLASH和SD卡的BitBanging更改为SPI ENGINE没有这样的当前问题。
检查线路状态是否在SPI引擎中使用,但发现所有信号都相同。 尝试在不使用时将所有信号设为低电平但没有差别。
查询吗 1.如果SD卡的芯片选择为高电平(CS为低电平有效),为什么SD卡不能保持其休眠模式?
限制
我不能在SPI ENGINE模式下使用FLASH,对我来说只使用BitBanging非常重要。
设备需要始终消耗最少的电量,并且应该使用电池工作1年。
答案 0 :(得分:0)
首先,您需要提及SD卡,SPI FLASH和MSP部件号(最好是pdf链接),因为答案可能在文档中。你有没有研究过SD卡进出SLEEP的所有条件? 当SCLK线路上有活动时,卡可能需要进行一些寄存器初始化以保持睡眠模式。
其次,找出当前峰值的确切时刻(指令)。是SCLK第一次变高,还是MOSI变高的时候?
第三,如果可能的话,分别测量所有3个采样芯片的电流消耗(MSP,SD,FLASH),以确定是谁产生了这种额外功耗。
SD卡在不使用时是否已通电?如果它不是,那么当它们很高时它可以通过I / O线馈送。
请注意不使用SPI引擎与FLASH芯片通信的原因?为什么要分享这些针脚?如果你想要最低功耗,那么就不应该采用bitbanging了。