SD controller CRC error 分析

news/2024/12/5 2:53:42/

最近做自己公司芯片的sd/mmc 模块,在enable SD高速模式下时会出现crc 错误。可气的是做为公司的fae竟然没有除datasheet之外的资料!这个fae也太可怜了。。。。

现象为:SD速度较低的SDclk=31Mhz会出现writing CRC error.但高速mode下(通过cmd6,switch command设置)clk>31Mhz以及SD低速mode就不会出现问题。

怀疑:1. 高速mode timing

            2. Nac超时

   3. DMA错误


高速mode timing要求Twl Twh 最小为7ns. Ttlh,Tthl最大为3ns,抓图如下:


            31Mhz


                                50Mhz


                                  330Mhz


都为TTL电平,低=0.7V,高=>2.4V.

发现timing满足高速要求。


继续发现DMA也没有问题。而且系统也没有报nac之类的time out,应该不是超时。

那究竟是什么问题呢,在read时没有问题,write缺会crc error! 

继续说代码检查,发现发cmd12时会disable clock frozen ! 会不会出现这样的问题?用实验说明问题,cmd12是multi-block时,发stop command来停止读写的。如果全部使用single block问题会消失的话,应该就是它的问题。

实验发现single block问题解除。看来就是multi-block的问题。继续究。


《后记》

问题解决,原来是在sd的data transfer的dma结束时没有等待sd card data transfer complete所致。dma已经传输结束,但是在写数据时,数据还没有传到sd card memory里的flash中,如果此时再次起动sd传输,就会导致写入错误数据。

解决方法:在dma结束的callback中,等待sd_status_dd.




http://www.ppmy.cn/news/330195.html

相关文章

CRC检错

CRC(cyclic redundancy code 循环冗余编码)是目前应用最广的检错码编码方法之一,它具有检错能力强,实现起来容易的特点。 原理:将要发送的数据比特序列当做一个多项式的系数,在发送端用收发双方预先约定的多项式去除,…

交换机crc错误是什么意思_交换机接口CRC错包故障的处理

利用display interface命令查询端口状态,发现错包计数持续增加。 Input: 0 packets, 0 bytes Unicast: 652156, Multicast: 0 Broadcast: 0, Jumbo: 0 Dis…

CRC循环校验码纠错

码制:CRC编码总长为7,4位有效数据 *CRC码中只有一位数据出错时,余数与出错位存在严格的对应关系。 *基本原理: 计算编码与G(x)进行模2运算后的初始初始编码为R。 ①当R为全0时,表示数据没有错误 ②当R为001时,表示数…

CRC校验码计算,以常用CRC-8为例

CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。 CRC校验原理:在要发送的帧后面附加一个数,生成一个新帧发送给接收端。它要使所生成的新帧能与发送端和接收端共同…

怎样修复CRC校验错误?

遇到了这个问题,Mark一下。当打开一个压缩文件时提示CRC校验错误,如何修复这样的错误啊! CRC即循环冗余校验码,CRC校验失败可能原因和解决方法如下: 可能是安装包有问题 从新下载个安装包就好了。 2.有错误文件。解决…

接口收到CRC错包怎么处理

接口收到CRC错包怎么处理: 简介 数据通信中,接收端需要检测在传输过程中是否发生差错,常用的技术有奇偶校验(Parity Check),校验和(Checksum)和CRC。它们的工作原理都是发送端对消息按照某种算法计算出来…

FMCW 雷达室内多目标人员MATLAB仿真

分享一则代码,主要用于FMCW雷达室内多目标MATLAB仿真,涉及到的内容和算法模块有如下: 1、目标参数设置 2、雷达参数设置 3、目标运动状态设置 4、雷达信号建模(IQ信号) 5、雷达近场收发几何位置偏差校正 6、距离维FFT…

Linux内核的CSCOPE配置

文章目录 前言一、了解内核源码树二、生成Tag文件二、生成索引总结 前言 基于上一篇博客vim基础配置,在完成vim的基础及一些插件配置后,我们期望的是能够用vim像IDE一样便利地阅读代码,例如查看变量/函数的定义,查找引用等等&…