6683|11

7

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教LPC1114驱动SD卡的问题 [复制链接]

LPC1114, ZLG的那个板, 用的是

P0.3 - CS

P0.6 - SCK

P0.8 - MISO

P0.9 - MOSI

用的是TKstudio

 

SSP那部分驱动过595, 没问题, 但不能驱动SD卡, SD驱动部分是ZLG的SD卡驱动, 在其基础上更改的

代码如下:

void  SSP_Init (void)
{
 int i;
 PRESETCTRL &= (0x1<<0);
 for(i=0; i<100; i++);
     PRESETCTRL      |= 0x01;                                            /*  禁止SPI0复位                */

    IOCON_SCKLOC     = 0x02;                                            /*  P0.6配置为SCK               */
    SYSAHBCLKCTRL   |= (1ul << 11);                                     /*  打开SPI0外设                */
    SSP0CLKDIV       = 0x01;                                            /*  SSP时钟分频                 */
  
    SSP0CR0 = (0x07 << 8) |                                             /*  SCR  设置SPI时钟分频        */
              (0x00 << 7) |                                             /*  CPHA 时钟输出相位,          */
                                                                        /*  仅SPI模式有效               */
              (0x01 << 6) |                                             /*  CPOL 时钟输出极性,          */
                                                                        /*  仅SPI模式有效               */
              (0x00 << 4) |                                             /*  FRF  帧格式 00=SPI,01=SSI,  */
                                                                        /*  10=Microwire,11=保留        */
              (0x07 << 0);                                              /*  DSS  数据长度,0000-0010=保留*/
                                                                        /*  0011=4位,0111=8位,1111=16位 */

    SSP0CR1 = (0x00 << 3) |                                             /*  SOD  从机输出禁能,1=禁止    */
              (0x00 << 2) |                                             /*  MS   主从选择,0=主机,1=从机 */
              (0x01 << 1) |                                             /*  SSE  SSP使能                */
              (0x00 << 0);                                              /*  LBM  回写模式               */
            
    SSP0CPSR = 2;                                                       /*  PCLK分频值                  */
    SSP0ICR  = 0x03;                                                    /*  中断清除寄存器              */
}

 

 

此帖出自NXP MCU论坛

最新回复

原来如此啊,CK100看来要少用啊!!!  详情 回复 发表于 2010-7-17 13:55
点赞 关注
 

回复
举报

7

帖子

0

TA的资源

一粒金砂(初级)

沙发
 


/*******************************************************************************************************************
** 函数名称: void SPI_SendByte()    Name:   void SPI_SendByte()
** 功能描述: 通过SPI接口发送一个字节   Function: send a byte by SPI interface
** 输   入: INT8U byte: 发送的字节    Input:   INT8U byte: the byte that will be send
** 输   出: 无         Output:   NULL
********************************************************************************************************************/
void SPI_SendByte(INT8U byte)
{
 INT8U temp;
 
 SSP0DR = byte;
    while ((SSP0SR & 0x01) == 0) {                                      /*  等待TFE置位,即发送FIFO空   */
    }
    temp=SSP0DR;
}


/*******************************************************************************************************************
** 函数名称: INT8U SPI_RecByte()    Name:   INT8U SPI_RecByte()
** 功能描述: 从SPI接口接收一个字节    Function: receive a byte from SPI interface
** 输   入: 无         Input:   NULL
** 输   出: 收到的字节       Output:   the byte that be received
********************************************************************************************************************/
INT8U SPI_RecByte(void)
{
 INT8U temp;
 SSP0DR = 0xff;
    while ((SSP0SR & 0x01) == 0) {                                      /*  等待TFE置位,即发送FIFO空   */
    }
 temp=SSP0DR;
    return temp;
 
 
}

INT8U SPI_SendRecByte(INT8U byte)
{
 INT8U temp;

 SSP0DR = byte;
    while ((SSP0SR & 0x01) == 0) {                                      /*  等待TFE置位,即发送FIFO空   */
    }
 temp=SSP0DR;
    return temp;
}

 

 

 

用示波器观察, MISO上没有正确的低电平, 电压总是下降到1/3的位置后又抬高了.

CS, SCK, MOSI的波形都没问题

 

这是怎么回事啊

 

谢谢先啊!!

此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

板凳
 
能驱动595就应能驱动SD卡,注意SD卡的初始化的速度要慢点,成功后在更改速度。
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

4
 

改慢速度也不行啊,

我将 SSP0CPSR 改成了200, 示波器上明显的看到了时钟的变化, 可MISO的波行还是没变,还是在电压降低到1/3的时候就提起来了...

 

发送CM0的时候, 总是返回超时

[ 本帖最后由 ldqmoon 于 2010-7-13 08:18 编辑 ]
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

5
 

回复 4楼 ldqmoon 的帖子

保证硬件电路没有问题吗???
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

6
 
硬件是不会了, AVR, STM32, LPC221都用过了
LPC1114的SSP需不需要加上拉电阻?
此帖出自NXP MCU论坛
 
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

7
 
测试595的时候,我发现LPC2214的一个有意思的地方, 如果SSP0CR1中的LBM为0, 则在下一次送数据的时候, MISO能收到上一次的数据.

如果LBM为1, 则本次送数据的时候MISO就能收到.
不知道其他芯片的SSP是不是也是这样.
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

8
 
把SSP0CR0改成0x0707试试!!!
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

9
 
晕....突然能用了

昨天公司停电,就没测试了, 然后今天接上电后就正确的运行了...
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

10
 
这种事我也常常遇到!!!
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

11
 
大概知道了, CK100的仿真速度太慢了, 如果挂着仿真器单步运行, 是不会得到正确结果了,

只要程序对了, 让它直接运行就可以了
此帖出自NXP MCU论坛
 
 
 

回复

4996

帖子

19

TA的资源

裸片初长成(初级)

12
 

回复 11楼 ldqmoon 的帖子

原来如此啊,CK100看来要少用啊!!!
此帖出自NXP MCU论坛
 
个人签名我的博客
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表