OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2604|回复: 4

阿波罗开发板SPI实验移植SD卡(spi方式)初始化失败的问题

[复制链接]

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2018-1-30
在线时间
22 小时
发表于 2018-2-24 17:30:51 | 显示全部楼层 |阅读模式
20金钱
开发板是阿波罗f4,移植例程是SPI实验,主要是想实现通过SPI通信方式挂载SD卡,移植过程如下1.添加MMC_SD相关头文件;
2.修改SPI头文件(这里主要是将spi5改为spi2)
  a.将spi头文件里spi2字眼改为soi5;
  b.将HAL_SPI_MspInit()函数IO口初始化改为b13,14,15;
  c.将cs引脚改为a4;
4.主函数内容如下

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "sdram.h"
#include "MMC_SD.h"
/************************************************
ALIENTEK 阿波罗STM32F429开发板实验27
SPI实验-HAL库函数版
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com  
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/

//要写入到W25Q16的字符串数组
const u8 TEXT_Buffer[]={"Apollo STM32F4 SPI TEST"};
#define SIZE sizeof(TEXT_Buffer)         

int main(void)
{
    u8 key;
        u16 i=0;
        u8 datatemp[SIZE];
        u32 FLASH_SIZE;
    HAL_Init();                     //初始化HAL库   
    Stm32_Clock_Init(360,25,2,8);   //设置时钟,180Mhz
    delay_init(180);                //初始化延时函数
    uart_init(115200);              //初始化USART
    LED_Init();                     //初始化LED
    SDRAM_Init();                   //初始化SDRAM
        LED0=0;
        LED1=0;
                while(SD_Init());
        LED0=0;
        LED1=1;
        while(1)                                                               
        {
               
        }                    
}


运行时程序卡while(SD_Init())这个初始化里出不去。
已经来回检查好几遍都没看出问题,清大神看看移植过程有什么遗漏或者错误的,小弟先谢谢了!

SD卡槽

SD卡槽

最佳答案

查看完整内容[请看2#楼]

问题已经解决,之前为了简化程序把下面的语句注释掉了,重新取消注释就可以啦 //设置硬件上与SD卡相关联的控制引脚输出 //禁止其他外设(NRF/W25Q64)对SD卡产生影响 GPIO_InitTypeDef GPIO_Initure; __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟 GPIO_Initure.Pin=GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4; //PA2.3.4 GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //推挽输出 GPIO_Ini ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2018-1-30
在线时间
22 小时
 楼主| 发表于 2018-2-24 17:30:52 | 显示全部楼层
正点原子 发表于 2018-2-25 01:22
先仿真,看看初始化能执行到哪个阶段。
可能完全没驱动,也可能是初始化过程出错。
得仿真看看。

问题已经解决,之前为了简化程序把下面的语句注释掉了,重新取消注释就可以啦
        //设置硬件上与SD卡相关联的控制引脚输出
        //禁止其他外设(NRF/W25Q64)对SD卡产生影响

        GPIO_InitTypeDef GPIO_Initure;

    __HAL_RCC_GPIOA_CLK_ENABLE();                   //开启GPIOA时钟
       

    GPIO_Initure.Pin=GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4;         //PA2.3.4
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;          //推挽输出
    GPIO_Initure.Pull=GPIO_PULLUP;                  //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;                     //高速
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);
       
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_2,GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
回复

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2018-1-30
在线时间
22 小时
 楼主| 发表于 2018-2-24 17:38:43 | 显示全部楼层
这是程序,请指教。

实验27 SPI实验.rar

12.01 MB, 下载次数: 319

回复

使用道具 举报

1

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2018-1-30
在线时间
22 小时
 楼主| 发表于 2018-2-24 18:09:23 | 显示全部楼层
@原子哥
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-2-25 01:22:08 | 显示全部楼层
先仿真,看看初始化能执行到哪个阶段。
可能完全没驱动,也可能是初始化过程出错。
得仿真看看。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 22:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表