OpenEdv-开源电子网

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

STM32H743驱动SD卡程序的奇怪问题,急

[复制链接]

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
发表于 2019-7-28 13:40:38 | 显示全部楼层 |阅读模式
1金钱
  我用原子的STM32H743工程SD驱动程序,设计的板卡,CPU的芯片型号换为了144脚的STM32H743ZI,确认硬件无问题(其他工程用过), KEIL MDK 版本是5.23,也破解了,单步运行程序,出现了赋值不正常的情况,怎么回事啊?
   1、初始化函数 SD_Init(void)  中   
      SDMMC1->POWER=0x00000000;
        SDMMC1->CLKCR=0x00000000;
        SDMMC1->ARG=0x00000000;
        SDMMC1->CMD=0x00000000;
        SDMMC1->DTIMER=0x00000000;
        SDMMC1->DLEN=0x00000000;
        SDMMC1->DCTRL=0x00000000;
        SDMMC1->ICR=0X1FE00FFF;(这里的赋值不对,结果一直为0X00000000!!!!)
        SDMMC1->MASK=0x00000000;



2、另外在sdmmc_sdcard.c中的SD_EnableWideBusOperation(u32 wmode)函数中:
if(SD_OK==errorstatus)
                        {
                                clkcr=SDMMC1->CLKCR;        //¶áè¡CLKCRμÄÖμ
                                clkcr&=~(3<<14);                //&#199;&#229;3y&#214;&#174;&#199;°μ&#196;&#206;&#187;&#191;íéè&#214;&#195;   
                                clkcr|=(u32)wmode<<14;        //1&#206;&#187;/4&#206;&#187;×ü&#207;&#223;&#191;í&#182;è
                                clkcr|=0<<17;                        //2&#187;&#191;a&#198;&#244;ó2&#188;tá÷&#191;&#216;&#214;&#198;
                                SDMMC1->CLKCR=clkcr;        (这里的赋值也一直不对,不为clkcr的值!而且怎么改变量名称都不对!!!)
                        }

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

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-28 13:46:34 来自手机 | 显示全部楼层
原子的这个例程代码就sdio驱动用的寄存器,其他用的hal库
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-28 13:49:12 来自手机 | 显示全部楼层
求助大家指点!谢谢了
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-28 22:03:32 | 显示全部楼层
会不会是KEIL MDK 5.23支持STM32H743ZI有啥问题呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-7-29 02:29:16 | 显示全部楼层
应该不会是MDK的问题
ICR寄存器看不到赋值是正常的,ICR是用于清除某些状态标志的,写1清零,但是寄存器并不会保存你写入的值。
至于CLKCR寄存器,你写一个0X 01试试?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-29 09:21:02 来自手机 | 显示全部楼层
对CLKCR寄存器,写一个0X 01,它还是一直是原来的0xfa,改变不了,继续求助原子哥啊!
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-29 11:13:23 来自手机 | 显示全部楼层
重大发现:只要把上面那句  errstatus=sdenwidebus(wmode)注释掉,clkcr就可以正常赋值,否则就是不行。设置sd位宽与这个时钟clkcr有啥关系吗?奇怪
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-29 12:58:17 来自手机 | 显示全部楼层
求助调试过这个程序的高手指导下
回复

使用道具 举报

27

主题

427

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
4370
金钱
4370
注册时间
2017-5-30
在线时间
579 小时
发表于 2019-7-29 13:44:45 | 显示全部楼层
fcc2019 发表于 2019-7-29 12:58
求助调试过这个程序的高手指导下

我用的库函数,你下载新版的库就行,注意把1.8V那个宏定义注释掉看看
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-29 14:38:21 来自手机 | 显示全部楼层
新版的库是dfp.2.2.0吗?还有你说的1.8v那个宏定义是在哪里呢?
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-30 13:12:14 来自手机 | 显示全部楼层
我把原子的stm32h743的寄存器版的sd卡程序也在线跑了,基本没改动,发现竟然也是同样的设置位宽这行代码处clkcr赋值不了,求原子哥指点!谢谢了!
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-30 13:15:47 来自手机 | 显示全部楼层
设置位宽   errstatus=sdenwidebus(wmode)后,为啥SDMMC1->CLKCR=clkcr赋值不了呀?诡异呢
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-7-31 17:04:56 来自手机 | 显示全部楼层
不行就用hal库做了啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2019-8-1 01:49:51 | 显示全部楼层
fcc2019 发表于 2019-7-31 17:04
不行就用hal库做了啊

HAL库可以么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

10

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-7-28
在线时间
45 小时
 楼主| 发表于 2019-8-1 13:17:46 来自手机 | 显示全部楼层
hal库可以了,实现了emmc 64G的读写擦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-15 17:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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