智能车制作
标题:
求龙丘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的初始化程序:
void SPI_Init(void)
{
MODRR_MODRR4=0; //使用s口
//DDRM = 0x31; //SCK0=1,MOSI=1,pm0为cs 0b00110001
DDRS_DDRS5 =1;
DDRS_DDRS5 =1;
DDRS_DDRS6 =1;
DDRS_DDRS7 =1;
SPI0CR1 = 0x5e; //CPOL=1,CPHA=1 0b01011110
SPI0CR2 = 0x10; //0b00010000
SPI0BR = 0x07; // 80M / 256 = 312.5k
}
复制代码
但在sd的初始化阶段传送SPI数据就没有相应。
while (!SPI0SR_SPTEF);
SPI0DRL = ch;
while (!SPI0SR_SPIF);
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