打印
[技术问答]

M487 SDH 官方例程有人调试过吗? 碰到寄存器执行操作卡死..

[复制链接]
1475|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gydgds963|  楼主 | 2018-6-25 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试 M480_BSP_CMSIS_V3.03.000 里的
M480_BSP_CMSIS_V3.03.000\SampleCode\StdDriver\SDH_FATFS\
例程.

卡初始化时已经成功, 信息都正确. TF 高速卡, 8G/32G 都正常识别.

但输入命令后, 每次都卡在
M480_BSP_CMSIS_V3.03.000\Library\StdDriver\src\sdh.c
第130行:
        while ((sdh->CTL & SDH_CTL_RIEN_Msk) == SDH_CTL_RIEN_Msk)
        {
            if (pSD->IsCardInsert == FALSE)
            {
                return SDH_NO_SD_CARD;
            }
        }

手册上描述该位的说明:

RIEN  响应输入使能位
0 = 没效果 (请通过 DMARST (SDH_CTL [0]) 清这一位)
1 = 使能, SD 主机等待从SD卡接收响应
注意: 操作结束后,此位自动清0,不要写0到这个寄存器,否则控制器会工作不正常



折腾一天都没整明白怎么回事, 觉得是SD时钟太高, SDHC 卡最终给出的频率是 50MHz, 这是SD控制器跟TF卡通讯后根据卡类型自动配置的. 后改为20MHz/10MHz/5MHz 都不行.

有人测试通过了吗? 能不能分享下经验.
沙发
zhuomuniao110| | 2018-6-25 22:27 | 只看该作者
这个不是刚出的芯片吗,还没用过。

使用特权

评论回复
板凳
gydgds963|  楼主 | 2018-6-25 23:14 | 只看该作者
zhuomuniao110 发表于 2018-6-25 22:27
这个不是刚出的芯片吗,还没用过。

端午前厂家在淘宝有卖,收到后发现已下架。

使用特权

评论回复
地板
gydgds963|  楼主 | 2018-6-26 10:25 | 只看该作者
在新唐官网上下载
EC_M480_Play_Music_from_SD_Card_V1.0.zip

然后调试. 可以正常工作, 音频文件正常读取, 能出声音. 与 M480_BSP_CMSIS_V3.03.000 对比了下驱动, 除了 sdh.c, 其它一样包括中断处理程序也一样. 把 M480_BSP_CMSIS_V3.03.000 下的 sdh.c 拷贝到本工程, 一样没问题.

但是 M480_BSP_CMSIS_V3.03.000\SampleCode\StdDriver\SDH_FATFS\ 问题照旧.

fs fl 等都卡死.

使用的TF卡是8G的SanDisk UHS-1 microSDHC 卡. 几乎是最常见的卡了. 家里设备上还有东芝 三星卡, 觉得没有拆下来测试的必要, 毕竟是不稳定.

不知道是MCU本身问题, 还是驱动时序没做好. 没空继续深入查找问题原因.

望厂家能对该部分问题进行改善.

使用特权

评论回复
5
gydgds963|  楼主 | 2018-6-26 10:25 | 只看该作者
本帖最后由 gydgds963 于 2018-6-26 10:30 编辑

还有 M480_BSP_CMSIS_V3.03.000\SampleCode\StdDriver\SDH_FATFS\

例程, 下面有简单的说明, 只能说太简单了. 很多测试命令无法确定该如何使用. 既然已经给出说明, 觉得后面再加上简单例子说明, 会让人一看就明白, 而不是现在云里雾里.

使用特权

评论回复
6
gydgds963|  楼主 | 2018-7-12 16:49 | 只看该作者
这两天重新捡起该程序.

开始按sd卡协议 SCR 内容, SD_BUS_WIDTHS 部分描述发现TF卡这部分返回的内容 不是期望的 0x5, 而是 0x0.
所以关闭 SD 控制器对 TF 卡初始化时 1 DAT 到 4 DAT 的切换操作. TF 可正常使用了.

但是想来想去, 觉得不太可能, 什么年代, 不可能 TF 卡不支持4线操作.

打开评估板原理图, 对照 M480_BSP_CMSIS_V3.03.000\SampleCode\StdDriver\SDH_FATFS\ 里 IO部分的初始化代码.

发现例程里对 IO口的初始化有问题. 评估板使用的 IO 口是 PE.2 PE.3 PB.4 PB.5 PE.6 PE.7 作为SD控制器.
而例程里是初始化 PE.2 PE.3 PE.4 PE.5 PE.6 PE.7 作为 SD 控制器.

然后忽略 SCR 里的标准规定, 还是进行强制 1线转4线操作. 终于可以4线正常访问 TF 卡.

再重新打开
EC_M480_Play_Music_from_SD_Card_V1.0.zip

例程, 发现这个程序里的 IO 口是按评估板正常配置的.

破问题终于解决.

使用特权

评论回复
7
NuMicro| | 2018-8-2 12:08 | 只看该作者
gydgds963 发表于 2018-7-12 16:49
这两天重新捡起该程序.

开始按sd卡协议 SCR 内容, SD_BUS_WIDTHS 部分描述发现TF卡这部分返回的内容 不是 ...

请教是IO配置方面的问题吗?

使用特权

评论回复
8
曲水流觞100| | 2020-5-13 11:50 | 只看该作者
gydgds963 发表于 2018-7-12 16:49
这两天重新捡起该程序.

开始按sd卡协议 SCR 内容, SD_BUS_WIDTHS 部分描述发现TF卡这部分返回的内容 不是 ...

大佬   我的fs fo那些都可以了,就是有关disk读写操作的有问题,不知道大佬的可不可以?

使用特权

评论回复
9
apple| | 2020-5-18 09:09 | 只看该作者
我也碰到过一样的问题,当时我的应该是中突了, 读卡器要读SD, 主程序又持文件系统,我现在有新的问题不知你有没有碰到:  1张16G,HC 4速的TF卡可以识别成高速卡,但1张2G,HC 10速的TF卡识别成低速卡, 用读卡器在PC上读20MB/秒,写5MB,  应该是高速卡,  例程是不是有问题?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

46

帖子

1

粉丝