一、 问题以及实验结果
1、 RKXXXX(某型号芯片)的卡的上拉电阻是否可以去掉?
答:不行。去掉后,实测得data0—data3电压为低,任何指令都无法发出, 即使data3偶尔为高,初始化过了,但到读写,就发现data0—data2为低,卡不能正常工作。
2、 是否可以把上拉电阻整合到芯片内部?
答:不行。单独从卡模块考虑,可以,一样能正常工作。但从整体看,不行,弊大于利。
去掉上拉电阻,卡不能工作,说明我们的IO内部原来是弱上拉或无上拉。
把外围的上拉电阻做到芯片内部,改变现在弱上拉的情况,从host与card连接好,正常工作时候角度看,可行,效果与外围上拉是一样;但是,若从host或者负载card,单独角度看,实际上两种情况下,上拉电阻的电气特性是不一样的。
二、 去掉上拉电阻时卡不能工作的原因分析
由于,去掉上拉电阻后,实验可测得,data0—data3已经低电位,卡已经不能工作;而芯片内部上拉电阻,又无法模拟,进一步的想法无法实际验证,所以下面的分析,主要从理论方面来定性分析。
1、 RKxxxx的IO脚的输出结构
一般芯片的IO脚都是开漏(即OD门)或开集(即OC门)电路。具IC部介绍,RKxxxx的IO内部有上拉,以及SDMMC controller说明里提到open drain的设置,说明RK28主要是OC门。 对于OD与OC两种输出是十分相似的,只是器件不一样而已,工作原理一样。下面以OC门为例,分析输出结构。
如图1,集电极开路输出的结构,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为“0”时,输出也为“0”)。对于图 1,当左端的输入为“0”时,前面的三极管截止(即集电极c跟发射极e之间相当于断开),所以5v电源通过1k电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开)。
图2,是图1的简化版, 可以明显看出,当开关闭合时,输出直接接地,所以输出电平为0。而当开关断开时,则输出端悬空了,即高阻态。这时电平状态未知,如果后面一个电阻负载(即使很轻的负载)到地,那么输出端 的电平就被这个负载拉到低电平了,所以这个电路是不能输出高电平的。
图3,加了一个1K的上拉电阻,当开关闭合时,输出为0,低电平。而当开关断开时,输出就是5V,输出高电平。
2、 SDMMC_CTRL的bit24标志位(enable_OD_pulllup)
Description: When bit is set, comman output always driven in open-drive mode.
此标志位,实验中,0与1设置效果一样,没有影响上面的实验结果。
具IC部介绍,该位设置1,内部pad,有观察到镜像开关信号,有开关电源。说明,datasheet中描述有错,实际这个标志位,是在接多张卡的时候(如下图4),切换输出结构,提高驱动负载能力的作用。
将图3中的上拉电阻也换成一个开关,就变成了一个推挽输出结构(push-pull),它的主要特点就是驱动能力很强。按个人理解,enable_OD_pulllup标志位就是为了,接多个负载的时候选用,增加驱动能力,使IO工作在自动开流模式(open-drive mode)。
3、 RKxxxx中的卡上拉电阻作用
(1)OC门,如果不上拉,是不能实现电平的高低跳变的, 便不能表征数据。如图2可看出,输出为悬空状态,电位未可知。
(2)提高驱动能力。上拉电阻越小,驱动能力越强,但功耗也越大。
(3)负载的需要。通过上拉电阻,为负载(即SD卡)提供足够的电流。
(4)阻抗匹配。在传输理论中,高速(并不一定是高频)信号传输中,因部线等原因造成延迟很可能与信号上升沿时间比拟的时候(一般线粗大于1inch时),如果匹配不好,就会造成反射(ringing),而在匹配方式中,最简单的一种就是在终端接上拉电阻。
(4)
确定稳定的高低电平。Host与card的高低电平的门槛会有可能不同,上拉电阻更加准确地确定了这种电平的转换。这点,也是一般SD specification中,经常提到的防止飘移(against bus floating )作用。
(5)频率特性。上拉电阻与开关集级之间的电容与下级电路之间会形成RC延时,这会影响到工作电压上升沿的坡度。所以,上拉电阻越小,延时就小,但功耗大;反之延时大功耗小。
4、 把上拉电阻整合到芯片内部后的电气特性
把上拉电阻整合到芯片内部,实际是把图3中,属于负载模块的电阻,移动位置到 图2的开关(既开集合)上。
在有负载正常连接工作的时候,两个位置,效果一样;但是上拉电阻的功耗就会被转移到芯片内部,增加了芯片发热量。
在没有负载的时候(即没有卡模块的时候), 该IO脚将直接接到电源;而且开关(因为是TFET或MOSFET等效而成)总不可能电阻无限大,所以会有小电流,在内部的上拉电阻上就会有功耗;甚至若开关意外发生短路,那么将烧毁芯片。