使用ch32v305的sdio和fpga進行通信,不理會命令通道的交互,只用sdio的數(shù)據(jù)通道對fpga進行讀寫操作。
在1位數(shù)據(jù)線,stream模式,1MHz的時鐘速率,進行以下初始化
向fpga進行寫操作,用邏輯分析儀能夠觀察到正常的全部32字節(jié)的寫入;
但是使用4位或者8位數(shù)據(jù)寬度,發(fā)出來的數(shù)據(jù)是錯亂的,數(shù)據(jù)長度也不對,而且會“重發(fā)”。
如下圖所示,預(yù)期發(fā)送的數(shù)據(jù)是32個0xf0f0f0f0,但是邏輯分析儀捕捉結(jié)果是:
這就是出現(xiàn)的數(shù)據(jù)重發(fā)的數(shù)據(jù)波形(上圖是下圖其中一段放大后的結(jié)果):
每兩個數(shù)據(jù)發(fā)送之間的時間間隔就是代碼中設(shè)置的“數(shù)據(jù)超時時間”,sdiodatatimeout,1000個sdio時鐘周期,測出來是1ms左右。
是不是4位和8位數(shù)據(jù)模式需要有特殊的設(shè)置?
又或者是,即便在sdio主機在stream模式發(fā)送數(shù)據(jù)的過程中,也需要從機通過cmd或者data通道進行應(yīng)答?