智能车制作

标题: 求龙丘XS128板(112P集成SD模块)的SD卡驱动。。 [打印本页]

作者: keg13579    时间: 2011-10-25 23:10
标题: 求龙丘XS128板(112P集成SD模块)的SD卡驱动。。
本帖最后由 keg13579 于 2011-10-25 23:13 编辑

自己写的都用不了。。。

用的是龙丘的集成SD模块的112针的XS128,
通过测试,SD对应的引脚应该是S4 S5 S6 S7
spi的初始化程序:

  1. void SPI_Init(void)
  2. {
  3.    MODRR_MODRR4=0; //使用s口
  4.    //DDRM = 0x31; //SCK0=1,MOSI=1,pm0为cs 0b00110001
  5.    DDRS_DDRS5 =1;
  6.    DDRS_DDRS5 =1;
  7.    DDRS_DDRS6 =1;
  8.    DDRS_DDRS7 =1;
  9.    SPI0CR1 = 0x5e; //CPOL=1,CPHA=1 0b01011110
  10.    SPI0CR2 = 0x10; //0b00010000
  11.    SPI0BR  = 0x07;  // 80M / 256 = 312.5k
  12. }
复制代码

但在sd的初始化阶段传送SPI数据就没有相应。
  1. while (!SPI0SR_SPTEF);
  2.     SPI0DRL = ch;
  3.     while (!SPI0SR_SPIF);
  4.     spi_tmp = SPI0DRL;
复制代码

一直卡在while (!SPI0SR_SPIF);里面。
网上的源码写的都是M口的,自己改成S口的,不知道有没有什么要注意的地方。
硬件是集成好的模块,供电什么的也没问题。
第一次写freescale,求指导,谢谢
作者: 龙之影    时间: 2011-11-7 10:17
同求
作者: chiusir    时间: 2011-11-7 10:40
本帖最后由 chiusir 于 2011-11-7 10:42 编辑

#define DDR_INI()  DDRS |= 0xE0         
#define SD_Sel()   PTS_PTS7=0        //低电平
#define SD_deSel() PTS_PTS7=1        //高电平
//sd卡初始化
void SD_Init(void)
{         
  /*
  MODRR_MODRR4 =1;   //使用M口
  DDRM    = 0x38;    //必须初始化IO方向  
  SPI0CR2 = 0x10;
  SPI0CR1 = 0x5e;    //
  SPI0BR  = 0x44;    //初始化用低速率
  SD_deSel();
*/
  MODRR_MODRR4 =0;   //使用S口
  DDRS    = 0xE0;    //SCK0=1,MOSI=1   
  SPI0CR2 = 0x10;
  SPI0CR1 = 0x5e;
  SPI0BR  = 0x44; //BR=busclk/((SPPR + 1)· 2^(SPR + 1))=16000/(5*32)=100k  
  SD_deSel();
}
作者: chiusir    时间: 2011-11-7 10:43
其他部分不用任何改动
作者: 七年之痒    时间: 2012-10-11 10:38
请问  (void)SPI0SR;
        (void)SPI0DRL;

这两句读语句有什么用?延时?
作者: 庞七七    时间: 2012-10-17 23:28
这个问题解决了吗?我们的也是这样。最近在做这个。可是都觉得不知道问题出现在哪里了?每次都跳不出循环。。。。每天睡不着觉。。要死了 。。。




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2