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

关于USB转SD卡的一个离奇的故事

[复制链接]
楼主: angryBird
手机看帖
扫描二维码
随时随地手机跟帖
21
angryBird|  楼主 | 2013-10-6 20:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
好久不来这里更新进度了,今天补课。

到目前,USB扇区读写已经调试完毕。SPI通信依旧是困扰我的问题。原来只能单向通,主机发送,从机可以正常收到,但是,从机发送,主机从来收不到。

昨晚,做了一个小程序,在开发板上用两个GPIO,分别用SPI2和SPI3通信,一切正常。

再连接开发板和板子,似乎是可以双向通信了,但是两边收到的数据都不对。如果主机发送,从机不发生,则从机收到的都是正确的数据。如果从机也发送,则主从两边中断收到的数据都不对。试了多组SPI初始化参数了,都不能解决。

还要继续努力。

使用特权

评论回复
22
hkcj| | 2013-10-7 10:18 | 只看该作者
知识点需要好好消化消化   这一块   感觉还是很不错   楼主   谢谢你

使用特权

评论回复
23
angryBird|  楼主 | 2013-10-13 22:53 | 只看该作者
又过了一周。
前几天还是纠结在SPI通信的正确、稳定上,直到昨天,连接板子调试的J-LINK被烧坏,没办法在板子上调试了。于是又找了一块F207的开发板,两个开发板连在一起调试。结果,通过试验不同的CPOL与CHPA组合,终于找到了一组稳定传输的组合。如下:
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
除了这种,其它三种组合,在双向传输时,总会发生数据错位的问题。具体原因先不追究了,现在终于能够往下走,调试模拟SD卡的协议。计划使用一台开发板,发送读写SD卡的命令,一台slave模拟SD卡做出回应,以及读写U盘,并转发u盘数据给master。


使用特权

评论回复
24
angryBird|  楼主 | 2013-10-17 23:33 | 只看该作者
时间又过了几天。
这几天,实现SD卡的协议并调试。到目前,SPI模式用到的指令,基本上都模拟通了,还剩下多块读写指令没有调试到。
单块读写U盘并传送到master主机已经没有问题。
心情暂时可以放松一下了,等在开发板上调试完毕,还要在板子上调试并连接真正的主机,到时候估计还有一番反复。
上个图,右侧是主机通过spi发送单块读0扇区给从机后,收到的0扇区数据,和用winhex读到的一致。图中光标所在的0xfe是从机发送数据前发送的token。

还有两个问题问一下大家,spi协议中有一些控制字符,比如0xfe是数据发送的令牌,0x12是终止数据传送的命令,那在传输的数据中,如果有这些字符的话,是否要转义?                                                                                                                     
第二个问题,主机发送0xff数据给从机,从机如果没开,或者程序处于中断状态,主机收回来的数据都是0xff,但是从机也在运行时,主机收到的都是0x00,而不是0xff,可能的原因是什么?谢谢。



使用特权

评论回复
25
bluezman| | 2013-11-14 19:42 | 只看该作者
实在佩服楼主的勇气,就凭这点,也得给楼主提个醒。
我也曾尝试用其他平台做类似的工作,不过,必须实现4 bit SD协议,最后因实在太难而放弃了。楼主能确保上位主机只会用1 bit的SPI协议访问吗?如果不能确定,那就要认真考虑了。

使用特权

评论回复
26
香水城主| | 2013-11-14 20:31 | 只看该作者
LZ加油!

使用特权

评论回复
27
wzc1984| | 2014-11-24 11:22 | 只看该作者
angryBird 发表于 2013-8-26 20:45
又过了几天,长征路上在继续。

1.安装了IAR6.1,不能编译以前的程序。没细看是为什么,准备重新装一下6.4. ...

楼主 你这东西实现了没有?

使用特权

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

本版积分规则