本帖最后由 yutianxiang618 于 2015-12-11 15:35 编辑
整体代码使用的是山外库,切换到高速部分代码使用的是很老的飞思卡尔库函数,默认速度模式正常能读写,现在是在初始化后调用切换进入高速模式函数,发CMD6,参数0xFFFFF1,置1了命令索引检测使能,命令CRC检测使能,48响应,数据方向为读,数据present。然后接受数据...
接着发送CMD6 0X80FFFFF1,置1的寄存器bit和上面一样,接受数据。。。(都检测了标志bit)
接受的数据都是0X00 0XC8 0X80 0X01 0X80 0X01 0X80 0X01 0X80 0X01 0XC0 0X01 0X80 0X03 0x00 0x00 0x01 ( DATA structure version为0, 所以没有检测忙状态位)
后面都是0X00,一共64 byte。
说明切换速度模式成功了(不知道对不对),然后改变host control1中的High Speed Enable置1,接着调用改变频率函数。
然后读正常中断状态寄存器,发现 transfer complete bit 置1,也就是传输未完成,导致读写函数时等待命令数据线超时。
请问哈弄过SD高速模式的上面的步骤哪里有问题吗,该怎么修改流程,谢谢啦。。。
新的飞思卡尔官方demo看过一次,有点复杂, 发现里面切换到高速模式时有set_block_len命令,SD手册上面不是说没有必要发送CMD16么,(这一行不重要啦,帮我看看上面的问题,谢谢啦)走过路过,帮我顶一顶。
|