此帖出自stm32/stm8论坛
最新回复
我放入panasonic的16M的sd时,可以正确读写u盘;其他两个sandisk的256M和128M的sd,容量没有正确读出,后来的u盘访问自然有问题。进去看了一下代码,在<main.c>的 MSD_Init(); --〉一直循环出不来 进去看到是MSD_GoIdleState --〉MSD_GetResponse老是返回读错。 Get_Medium_Characteristics(); --〉读容量出错经过调试,发现MSD_GoIdleState()函数的do-while循坏体有点问题:msd片选拉高--〉发送一次dummy--〉马上把msd片选拉低--〉发送后续真正的sd卡的命令。有可能dummy的数据还在总线的时候,msd片选就拉低了,对sd卡造成了影响,于是:在<msd.c>的void MSD_WriteByte(u8 Data)函数的结尾处加上一句: // wait for send complete while (SPI_GetFlagStatus(SPI1, SPI_FLAG_BSY) == RESET);等发送结束才返回。这样,我手上的三张sd卡都能读取正确了。
详情
回复
发表于 2007-12-28 13:00
| ||
|
||
| |
|
|
| |
|
|
| |
|
|
并行的肯定比串行的快
此帖出自stm32/stm8论坛
| ||
|
||
光盘中附带的sd卡作为mass storage的例子
此帖出自stm32/stm8论坛
| ||
|
||
EEWorld Datasheet 技术支持