发新帖我要提问
12
返回列表
打印

关于 SDIO 上拉电阻的接法

[复制链接]
楼主: seawwh
手机看帖
扫描二维码
随时随地手机跟帖
21
lu0718 发表于 2013-6-6 15:28
有总比没有的好吗?

也不是的,带外部上拉电阻的话,必须设置成开漏输出方式。不带外部上拉电阻,则设置成推挽输出。
这两种方式,经实际测试,都可以。并且开漏加上拉电阻的方式,对速度限制很大,比如假设管脚电容为10pf(大多数实际情况都比这个大),则10K电阻大概的信号上升时间为0.1us,所以高于10M的速度,在开漏驱动时,都会有问题,低于10M的,也可能会有问题,因为上述的都是比较有利的估计值,实际情况可能更糟。朋友们可以测试一下,加上拉电阻的,最高的可靠读写速率能达到多少?上拉电阻越大,应该是速率越低。
所以,我建议用推挽输出,无上拉的方式。虽然sd卡的规范提出要加上拉电阻,但是我估计那也是有使用条件的,有时间仔细看看规范再讨论。

使用特权

评论回复
22
jlwg| | 2013-6-13 14:17 | 只看该作者
上拉电阻是为了没有卡的时候防止总线浮动的。这种情况,当stm32设置为推挽输出的时候,就不存在了,可以使用带有卡插入信号的sd卡插座,在软件上隔几秒总判断是否有卡插入,没有卡插入的时候,不进**的读写操作,这样就不会出现总线浮动了。
另外,看说明书上,sd卡的输出信号,都是推挽输出的,因此只要把stm32设置为推挽输出,则无论是读还是写sd卡,总线上总有一端是推挽输出,不存在总线浮动。
所以,总线上出现值得注意的总线浮动,只有两种可能,第一种就是通过sd卡命令使sd卡处于高阻模式,并且将stm32进**操作,这种情况,在正常使用过程中是不可能出现的吧?也是没有必要出现的吧?
第二种就是stm32写sd卡转为读sd卡的过渡过程中,就是在从写到读转换的过程中,stm32从推挽输出转变为浮动输入,此时sd卡应该是从输入转变为推挽输出。这种情况下,要看stm32和sd卡的转换时序了。
总之,加上拉电阻的好处就是可靠性看起来有保障,但是速度大幅度降低。
不加上拉电阻的好处,就是速度可以达到标准的高速度,可靠性嘛,实际测试还是可以的,原理分析如上。唯一不放心的就是第二种写到读的转换过程中,这取决于具体时序,但是stm32和sd卡,似乎都没有提供这个时序吧?也许提供了,我没看到。如果有的话,看看时序图,也许就可以放心了。

QQ图片20130613135510.jpg (47.69 KB )

QQ图片20130613135510.jpg

使用特权

评论回复
23
大猫在睡觉| | 2013-6-13 16:50 | 只看该作者
jlwg 发表于 2013-6-13 14:17
上拉电阻是为了没有卡的时候防止总线浮动的。这种情况,当stm32设置为推挽输出的时候,就不存在了,可以使 ...

读写转换的时候,不会有时钟产生,是允许总线浮动的,并不需要刻意避免,所有数据均是在时钟上升沿进行锁存,只要保证时钟沿之前数据有可靠的保持时间就可以了。
加上拉电阻主要目的是防止系统上电、掉电或者MCU处于复位期间,信号线浮空,可能产生错误的读写动作。所以我认为,只需要在CLK上加上拉电阻即可,其余信号线可以不用加(保证时钟不会随意产生,其余信号就算浮空不定也是无害的),并且这个上拉电阻尽量取较大值100K,因为CLK是频率最高的一条信号线,电阻太小会显著的增加功耗。

使用特权

评论回复
24
大猫在睡觉| | 2013-6-13 17:21 | 只看该作者
CS上加上拉比CLK上拉会更好,只要CS为高,其它信号线浮空没问题,就算会产生CLK也是有益无害,事实上,初始化SD卡之前,往往需要把CS拉高,然后产生100个左右时钟(>64个),让SD卡内部电路处于可靠的接收状态,才能后续正确的初始化。

使用特权

评论回复
25
jlwg| | 2013-6-15 17:36 | 只看该作者
大猫在睡觉 发表于 2013-6-13 17:21
CS上加上拉比CLK上拉会更好,只要CS为高,其它信号线浮空没问题,就算会产生CLK也是有益无害,事实上,初始 ...

您说的是SPI方式吧,我说的是四线sdio模式

使用特权

评论回复
26
jlwg| | 2013-6-15 17:39 | 只看该作者
大猫在睡觉 发表于 2013-6-13 16:50
读写转换的时候,不会有时钟产生,是允许总线浮动的,并不需要刻意避免,所有数据均是在时钟上升沿进行锁 ...

其实正相反,CLK线是唯一可以不用考虑上拉电阻的问题的信号线,因为CLK线永远是输出信号。而且,即使加上拉电阻,如果上拉电阻阻值太大,会严重影响读写速度,100K的上拉电阻,估计读写速度就只能达到若干kB/S了。

使用特权

评论回复
评论
winner12 2021-11-15 10:33 回复TA
为什么clk是输出信号不需要考虑上拉电阻呢 
27
jlwg| | 2013-9-15 10:55 | 只看该作者
CLK线确实不需要上拉电阻,原厂的开发板上,CLK线都没有上拉电阻.但是SDIO的几条数据线上,必须按要求加上拉电阻(默认为47K欧姆). 经实际测试,不加上拉电阻虽然也可以正常运行,但是如果不加上拉电阻长时间运行的话,会出现稳定性问题.我的板子不加上拉电阻,每隔1秒写几时字节到4G的sd卡上,写了几个小时没有问题,但是写一天一宿之后,SD卡就发生写错误了,FAT分区表被破坏,文件丢失.
重新格式化SD卡,并且在电路上加上上拉电阻之后,又写了一天一宿,没有发生问题.

使用特权

评论回复
28
戈卫东| | 2013-9-15 21:31 | 只看该作者
卡检测那个脚要(D3),其它的都不需要

使用特权

评论回复
29
1633994509| | 2013-9-15 22:12 | 只看该作者
楼上正解哈哈哈哈

使用特权

评论回复
30
jlwg| | 2013-9-15 22:21 | 只看该作者
这个问题,从头看到尾,就应该知道,sd卡标准文献说的要上拉电阻在数据线上,是为了防止总线浮动,总线浮动的问题,不仅仅会在DAT3上出现。所以还是老老实实地按照SD卡的官方协议来办,都加50K上拉电阻,就行了.

使用特权

评论回复
31
redone| | 2021-11-17 15:06 | 只看该作者
上拉电阻,能有什么接法?

使用特权

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

本版积分规则