OpenEdv-开源电子网

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

求一个STM32 SPI SD FATFS代码

[复制链接]

13

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2017-2-8
在线时间
39 小时
发表于 2021-10-24 22:23:56 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 2hen9x1 于 2021-11-3 23:20 编辑

自己尝试各种github上的代码,还是不成功。
求一个STM32F1 SPI交互的SD FATFS系统的代码,想要在txt文本上记录数据
谢谢各位了
------------------------------------------------------------2021.11.3更新------------------------------
用SPI1可以识别到SD卡了,发现用tf卡识别不到,套个SD卡的卡套就可以。
把SPI1改成SPI2以后,又识别不到了。
更诡异的是,SD卡端的SCK信号线把掉之后,串口会打印,接上之后就不会打印了
但是把掉开发板端的SCK线,却也还是不能打印
附上代码

SPI.C
  1. [code]void SPI2_Init(void)       
  2. {
  3.         SPI_InitTypeDef  SPI_InitStructure;
  4.         GPIO_InitTypeDef GPIO_InitStructure;
  5.          
  6.         //配置SPI2管脚
  7.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
  8.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_14| GPIO_Pin_15;
  9.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  10.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  11.         GPIO_Init(GPIOB, &GPIO_InitStructure);

  12. //        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_14;   
  13. //        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  14. //        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  15. //        GPIO_Init(GPIOB, &GPIO_InitStructure);  
  16.        
  17.         //SPI2配置选项
  18.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 ,ENABLE);
  19.           
  20.         SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  21.         SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  22.         SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  23.         SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  24.         SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  25.         SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  26.         SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;
  27.         SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  28.         SPI_InitStructure.SPI_CRCPolynomial = 7;
  29.         SPI_Init(SPI2, &SPI_InitStructure);

  30.         //使能SPI2
  31.         SPI_Cmd(SPI2, ENABLE);   
  32.         SPI2_ReadWriteByte(0xff);//启动传输
  33. }
复制代码

[/code]MAIN.C
  1. while(SD_Initialize())//检测不到SD卡
  2.         {
  3.                 printf("SD Card Error!\r\n");
  4.                 delay_ms(500);                                       
  5.                 printf("Please Check!\r\n");
  6.                 delay_ms(500);
  7.         }
复制代码



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

645

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2007
金钱
2007
注册时间
2021-4-16
在线时间
511 小时
发表于 2021-10-25 10:41:28 | 显示全部楼层
原子的stm32mini板子的SD卡例程和FATFS例程用的是SPI来与SD卡通信的,可以参考那个看看。
http://www.openedv.com/docs/boards/stm32/zdyz_stm32f103_mini.html
回复

使用道具 举报

13

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2017-2-8
在线时间
39 小时
 楼主| 发表于 2021-10-30 11:04:36 | 显示全部楼层
疾如风 发表于 2021-10-25 10:41
原子的stm32mini板子的SD卡例程和FATFS例程用的是SPI来与SD卡通信的,可以参考那个看看。
http://www.open ...

我用STM32F103C8T6的最小系统板测试了,结果还是初始化过不去
不知道哪里的问题了
卡和sd模组是下面这两个

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2021-10-31 01:42:08 | 显示全部楼层
用这种玩意,线要尽量短。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2017-2-8
在线时间
39 小时
 楼主| 发表于 2021-10-31 13:23:52 | 显示全部楼层
正点原子 发表于 2021-10-31 01:42
用这种玩意,线要尽量短。。。

是和板子上的排母连接的,还是不行,心态崩了
但是LCD模块,也是用排母连接的就没什么问题
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-11-1 08:36:23 | 显示全部楼层
调通了吗? 我之前弄过f103c8t6 + spi + sd +FATFS。
回复

使用道具 举报

13

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2017-2-8
在线时间
39 小时
 楼主| 发表于 2021-11-2 23:16:55 | 显示全部楼层
wklhwkl 发表于 2021-11-1 08:36
调通了吗? 我之前弄过f103c8t6 + spi + sd +FATFS。

兄弟,可以参考你的代码吗?还卡着。。。
回复

使用道具 举报

13

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2017-2-8
在线时间
39 小时
 楼主| 发表于 2021-11-2 23:18:49 | 显示全部楼层
正点原子 发表于 2021-10-31 01:42
用这种玩意,线要尽量短。。。

原子哥,在SPI1下,我试了TF卡套SD卡套后可以识别到,但是,再SPI2下就不能工作了
基于STM32F103MINI板修改成SPI2的
这个修改的时候有什么需要注意的吗?SPI2我测试了一个LCD,可以点亮屏幕,但SD卡就不行了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 05:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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