• 正文
  • 相关推荐
申请入驻 产业图谱

TF卡ACMD6与CMD6:总线宽度和高速模式切换

10/28 10:42
52
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

ACMD6与CMD6是初始化末尾容易混淆的一对命令。ACMD6只管车道数,参数0为1位、2为4位,CMD7选中后发,发完先给至少8个时钟主机再切4位;CMD6管速度,32位参数bit31选查询或执行,应答64字节看四个位置,切完必须把时钟提到50MHz才真正生效。

关键要点

ACMD6即SET_BUS_WIDTH只管车道数:参数0为1位、2为4位,在CMD7选中卡之后发送。

ACMD6发完先给至少8个时钟,控制器再切4位,否则头几次传输错位或CRC失败。

CMD6即SWITCH_FUNC管速度:32位参数bit31选查询或执行,6个功能组每4位一组,常用Group 1访问模式。

CMD6应答为R1加64字节状态:看byte[1]bit0、byte[9]低4位、byte[6]低4位、byte[19]的busy。

典型两次调用:查询0x00FFFFF1确认能力,执行0x80FFFFF1切高速,全组查询用0x00FFFFFF。

切换成功后主机要把时钟提到50MHz并重算CLKDIV;示波器时钟仍停在几百kHz就是没改分频。

两条命令各管一件事

ACMD6和CMD6在握手末尾经常并排出现,名字又像。分工清楚:ACMD6决定数据走几根线,CMD6决定总线跑什么速度。两者分别发、分别确认,ACMD6前还要带CMD55前缀。

ACMD6:只切车道数

ACMD6即SET_BUS_WIDTH,参数只有两个合法值:0为1位、2为4位。发送有前提,卡必须先由CMD7按RCA选中、进入传输态,空闲态发没有意义。卡接收配置后主机不能立刻切宽度,要先给至少8个时钟再切4位。省掉这8个时钟,命令阶段正常,切宽后头几次读会数据错位或CRC失败。

CMD6的32位参数怎么读

CMD6即SWITCH_FUNC,参数是一个32位功能组结构。bit31是模式位,0为查询、1为执行;bit30到bit24保留;之后每4位构成一个功能组,共6组,Group 1为访问模式即速度,Group 2为命令系统,Group 3为驱动强度,Group 4为电流限制。TF卡通常只用到Group 1。

64字节状态看哪四个位置

CMD6应答是R1加512bit即64字节功能状态数据,按顺序看四个位置:byte[1]的bit0表示Group 1是否支持切换;byte[9]低4位是支持的功能位图,bit1为1即支持高速;byte[6]低4位是当前生效功能号;byte[19]是Group 1的busy状态,bitN为1表示功能N切换成功。只看R1不解析这64字节,会把卡拒绝的切换误判为成功。

典型两次调用与速度档表

工程上通常调两次:先用Mode等于0查询,Group 1填目标功能号,切高速填0x00FFFFF1,确认能力位图后再用0x80FFFFF1执行;一次查全6组填0x00FFFFFF。Group 1取值与时钟固定对应,常用档位见下表。米客方德TF卡遵循CMD6协商顺序,先查询0x00FFFFF1再执行0x80FFFFF1,支持Default Speed 25MHz与High Speed 50MHz两档;Industrial WT工业宽温版与High Endurance高耐久版按颗粒档位对应速度等级,监控、记录仪这类循环覆写场景选高耐久版,宽温工况选工业版。SDR50、SDR104等档位还要求1.8V信号,需要主机硬件支持。

表1 Group 1访问模式与总线时钟

取值 访问模式 总线时钟 附加要求
0 Default Speed 25MHz 上电默认,所有卡支持
1 High Speed 50MHz 常用提速档
2 SDR12 25MHz 需1.8V信号
3 SDR25 50MHz 需1.8V信号
4 SDR50 100MHz 需1.8V信号加调谐
5 SDR104 208MHz 需CMD19调谐
6 DDR50 50MHz双沿 需1.8V信号

切完不改分频,速度不会变

卡接受高速模式只是协商完成,时钟由主机控制器产生。CMD6成功后,主机必须把时钟提到对应频率并重算CLKDIV,Default为25MHz、High Speed为50MHz,否则卡在高速模式、总线速率没有变化。示波器上很直观:命令时序正常,时钟线却停在识别阶段的几百kHz。升频动作放在ACMD6与CMD6都完成、总线空闲时做,不要夹在数据传输中途改分频。米客方德TF卡的固件含ECC纠错与掉电数据保护,切宽升频后跑在50MHz仍按既定时序收发,异常掉电时正在写入的数据也有保护机制兜底。

切换失败的三个落点

宽度切错、速度切错、时钟没跟上,现象各有特征。切4位后头几次传输出错,回看ACMD6后的8个时钟和两侧宽度是否一致。CMD6能力位图不含目标功能,说明卡不支持该档或主机不满足1.8V信号条件,退回Default或High Speed。状态显示已切换但速率没变,查CLKDIV寄存器。

切换操作清单

确认CMD7已按RCA选中卡,卡进入传输态。

带CMD55前缀发ACMD6,按目标宽度填参数0或2。

ACMD6后给至少8个时钟,再把主机控制器切到4位。

发CMD6查询,参数0x00FFFFF1,解析64字节位图。

确认byte[9]低4位含目标功能,再发0x80FFFFF1执行。

看byte[19]对应busy位,确认功能N切换成功。

按目标档把时钟提到25MHz或50MHz,重算CLKDIV。

SDR50以上先确认主机支持8V信号,SDR104安排CMD19调谐。

示波器量时钟频率,确认没停在几百kHz。

切宽后首轮读写做校验,确认无错位与CRC失败。

常见问题

问:ACMD6和CMD6是不是同一条命令的两种写法?

答:不是。ACMD6切总线宽度,参数0为1位、2为4位;CMD6切功能与速度模式,参数是32位结构,两条分别发送与确认。

问:ACMD6发完为什么不能马上切4位?

答:规范要求先给至少8个时钟,主机再切自己的总线宽度。省掉这步,切宽后头几次传输容易错位或CRC失败。

问:CMD6查询和执行的参数差在哪?

答:差在bit31模式位。切高速时查询填0x00FFFFF1,执行填0x80FFFFF1;6个功能组一次查全用0x00FFFFFF。

问:CMD6返回成功为什么速度没变?

答:卡侧协商完成不等于主机侧提速。主机要把时钟提到50MHz并重算CLKDIV,示波器上时钟仍停在几百kHz,就是分频没改。

问:64字节状态主要看哪些位置?

答:四处:byte[1]bit0看是否支持切换,byte[9]低4位看能力位图,byte[6]低4位看当前功能号,byte[19]看各功能busy位。

问:SDR104切换要额外做什么?

答:SDR104时钟208MHz,要求1.8V信号并执行CMD19采样调谐;主机不支持1.8V信号时,SDR50以上都无法使用。

相关推荐

深圳米客方德半导体有限公司 (简称“MK-米客方德”),是一家专注于嵌入式存储的高新技术企业,研发中心设在合肥、新竹,在深圳和香港设有营运据点。 MK-米客方德的核心成员均来自领先的半导体企业,具有相同的价值观、高效的执行力和强烈的使命感。 MK-米客方德拥有Flash控制器软硬件开发能力,依托深耕中国的市场和渠道能力,整合产业链的晶圆代工、封装、测试厂商的资源,推出一系列高可靠性、定制化、微型化特质的存储产品及解决方案。 MK-米客方德向客户提供的嵌入式存储芯片,广泛应用于工业、车载、医疗、电力、储能、智能穿戴等领域。