打印

可以初始化,写读数据还是有问题!

[复制链接]
2196|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
foodeyun|  楼主 | 2007-6-7 12:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
非常的感谢hq1025,stf的帮助!

我更改了端口的初始化程序,使用周立功的代码,可以读出SD的容量,扇区数等信息,可是写了数据读出来全是0xFF或者0x00.这是为什么?

1,关于NSS,如hq1025说的,初始化为NSS后,它可做普通的IO来实现CS.这一点已
证明可以.

2,如hq1025说的,我改了接收函数为:

INT8U SPI_RecByte(void)
{                        
    SSP_ClearFlag(SSP0, SSP_FLAG_RxTimeOut);
    SSP_ClearFlag(SSP0,SSP_FLAG_RxOverrun);
    
    SSPx->SR &=  0xFB;    // 
    
    SPI_SendByte(0xFF);   // 这里为什么要发0xFF??????????
    
    /* loop while Receive FIFO is empty */
    while(SSP_GetFlagStatus(SSP0,SSP_FLAG_RxFifoNotEmpty) == RESET);    
  //for(u16 i=0; i<65535; i++);
  
    /* return the byte read from the SPI bus */
    return((u8)SSP_ReceiveData(SSP0));//>>8);     
}

3,按照STF的修改了IO口的设置.

4,初始化成功说明,通信应该没有问题.问题在于命令!
我写了512个字节到第0 块,然后读出来总是0或者0xFF.不明白究竟是写有问题,还是读有问题.我没有使用CRC.
程序如下:
for(i=0; i<512; i++)
{
    Tx_Buffer = i;
}
SD_WriteBlock(0,Tx_Buffer);
//此函数发送CMD24.
    
SD_ReadBlock(0,Rx_Buffer);
//此函数发送CMD17.


请问:读写的时候,还应该注意什么?
沙发
浪淘沙| | 2007-6-7 12:19 | 只看该作者

写完数据后,再读之前有没有检查SD内部的写操作是否结束?

使用特权

评论回复
板凳
stf| | 2007-6-8 17:33 | 只看该作者

SD card

foodeyun 你好,

在另外一个bbs上(ST欧洲的)我找到一个SD的项目,

http://mcu.st.com/mcu/modules.php?mop=modload&name=Splatt_Forums&file=viewtopic&topic=5215&forum=21

这是项目比较复杂的,可是你可以比较sd的驱动器

你可以给我看你发命令的函数代码?

regards,
Stephane

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

113

主题

147

帖子

0

粉丝