MT7688 SPI问题1
接下來估計要記錄一些了,主要是記錄自己的一些調(diào)試過程,內(nèi)容不一定就是對的,只是自己的一些實際操作情況。
主要就是解決MT7688 和stm32f103通過SPI的通信問題
想實現(xiàn)的效果為:MT7688和STM32之間可以相互傳輸數(shù)據(jù)
問題是STM32接收到的數(shù)據(jù)不對,有錯位。MT7688完全就接收不到數(shù)據(jù)。
用邏輯分析儀看了波形,貼一張圖
發(fā)現(xiàn)如果從箭頭位置開始數(shù)數(shù)據(jù),后面在MOSI上的脈沖的位置就是對的,我測試的就是最簡單的用MT7688發(fā)01 02 03---16數(shù)據(jù),STM32收到的數(shù)據(jù)和邏輯分析儀顯示的數(shù)據(jù)是一樣的。
下面的MISO本來用STM32發(fā)送的也是01 02 02---16的,但是看脈沖就不知道是什么數(shù)據(jù)了,不知道為什么會是這個樣子。
搜索前人是否遇到這個問題,有如下兩個帖子:
https://blog.csdn.net/liuchen_csdn/article/details/51247642
https://blog.csdn.net/wind0419/article/details/82995483
第一個感覺和我這個情況比較像,然后就先按第一個操作一下。
第二個是關(guān)于全雙工問題的,估計現(xiàn)在數(shù)據(jù)出錯應(yīng)該就是這個核心問題所致,但是硬件制約了,就要想辦法了。
按第一個文章嘗試了一下,我使用的是openwrt官方的源碼,版本為OpenWrt 18.06.1,然后在/openwrt/build_dir/target-mipsel_24kc_musl/linux-ramips_mt76x8/linux-4.14.63/drivers
找到了spi-mt7621.c的文件,修改了這里
static int mt7621_spi_transfer_one_message(struct spi_master *master,
?? ??? ??? ??? ??? ? ? struct spi_message *m)
{
?? ?struct spi_device *spi = m->spi;
#ifdef CONFIG_SOC_MT7620
?? ?int cs = spi->chip_select;
?? ?//if (cs)
?? ??? ?//return mt7621_spi_transfer_full_duplex(master, m);
#endif
?? ?return mt7621_spi_transfer_half_duplex(master, m);
}
把這個紅色部分給主機掉了,由于原始硬件不支持全雙工,但是這里CS1確實全雙工可能會產(chǎn)生問,保存后重新編譯,下到板子里面測試,MOSI數(shù)據(jù)正常了,STM32也能正常接收到數(shù)據(jù)了,邏輯分析儀截圖
說明確實這個問題,但是MISO還是不對,就是STM32發(fā)的數(shù)據(jù)還是不對,這個估計還要找下問題了,明天再弄了。
總結(jié)
以上是生活随笔為你收集整理的MT7688 SPI问题1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于乐谱输入界面
- 下一篇: H5唤起应用商店或者应用市场