LPC2148 SSP读写SD卡初始化问题??

[复制链接]
 楼主| TANG2008 发表于 2010-6-1 22:59 | 显示全部楼层 |阅读模式
有知道给解答一下,谢谢。在用LPC2148读写SD时,使用的是SSP通信模块(SPI)去读写SD卡,在使用还有文件系统。我在主函数中
int main()
{
  IoInit();
  DSTATUS1 = disk_initialize(0);//inital SD
}
在使用JLINK 调试过程中调试指针总是
在下面函数语句中停留(我没有设置断点的)
BYTE spi_write_read( BYTE outgoing )
{
SSPDR = outgoing;
停留在此//while( !( SSPSR & ( 1 << SSPSR_RNE ) ) ) { ; }
incoming = SSPDR;
return incoming;
}不知道为何???很困惑,再次感谢了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wxw2000 发表于 2010-6-2 11:03 | 显示全部楼层
1# TANG2008

SSPDR = data;
while( 0x10 == (SSPSR&0x10) );  // 等待spif置为,发送数据完成


另:ssp在进行读取时,需要进行伪写数据。
 楼主| TANG2008 发表于 2010-6-2 11:12 | 显示全部楼层
好像还是不行啊,你看看我的初始化SSP有问题吗??还有你把你的具体的设置
   unsigned char inb;

   /* Wait if TNF cleared, Tx FIFO is full. */
   SSPDR = outb;
   while ( 0x10 == (SSPSR&0x10));
   /* Wait if RNE cleared, Rx FIFO is empty. */
   SSPDR = 0xff;
   while ((SSPSR & RNE) == 0);
   inb = SSPDR;
   return inb;
还是不可以的???
wxw2000 发表于 2010-6-2 13:56 | 显示全部楼层
3# TANG2008

ssp初始化函数里需设置时钟分频、时钟输出相位及极性等

SSPCR0 = (0x01<<8)|   
    (0x00<<7)|      //CPHA = 0
    (0x00<<6)|     //CPOL时钟极性
    (0x00<<4)|
    (0x07<<0);


SSPCR1 = (0x00<<3)|     
   (0x00<<2)|      
    (0x01<<1)|
     (0x00<<0);            
SSPCPSR = 0x06;   //设置pclk分频值
SSPICR  = 0x03;   //ÖжÏÇå³ý¼Ä´æÆ÷
wxw2000 发表于 2010-6-2 13:57 | 显示全部楼层
1# TANG2008

可以看看周工的例程里怎么对sd卡操作的
 楼主| TANG2008 发表于 2010-6-2 17:22 | 显示全部楼层
这些也是一样的,呵呵。问题找到了,启动代码有些问题。谢谢大家的指点。
sanmu_ldy 发表于 2010-9-19 11:36 | 显示全部楼层
请问一下,我在使用LPC2148的SSP同样出现了你的问题,你是怎么解决这个问题的呢? 我软件仿真时,SSPDR根本写不进去数据。我设置为SPI模式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

65

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

9

主题

65

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部