找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2036|回復(fù): 3
收起左側(cè)

SPI無法收到數(shù)據(jù)問題,該如何調(diào)試?附MCU程序

[復(fù)制鏈接]
ID:1045628 發(fā)表于 2022-10-28 11:44 | 顯示全部樓層 |閱讀模式
1.png
邏輯分析儀的波形和解析是正確的,

2.png
MCU程序:
但是調(diào)試的DR寄存器一直是FF,SPI接收函數(shù)按道理應(yīng)該沒有問題
uint8 SPI_SendByte(SPI_TypeDef * SPIx, uint8 byte)
{
          while (SPI_I2S_GetFlagStatus(SPIx,SPI_I2S_FLAG_TXE) == RESET);
          SPI_I2S_SendData(SPIx, byte);

          while (SPI_I2S_GetFlagStatus(SPIx,SPI_I2S_FLAG_RXNE) == RESET);
          return SPI_I2S_ReceiveData(SPIx); // 獲取接收寄存器中的數(shù)據(jù)
}

當(dāng)我在發(fā)送結(jié)束拉高CS線前打個(gè)斷點(diǎn),能看到MISO對(duì)應(yīng)的IO腳是低電平,CS線拉高后才會(huì)變成高電平,所以到單片機(jī)引腳的電平應(yīng)該是對(duì)的
回復(fù)

使用道具 舉報(bào)

ID:1045628 發(fā)表于 2022-10-28 11:47 | 顯示全部樓層
補(bǔ)上邏輯分析儀和調(diào)試的圖
回復(fù)

使用道具 舉報(bào)

ID:123289 發(fā)表于 2022-10-29 09:14 | 顯示全部樓層
1、搞清SPI通訊原理。
2、有示波器更好了,可以證明,數(shù)據(jù)的確是正確地出現(xiàn)在數(shù)據(jù)線上了。
3、讀通CPU芯片手冊(cè)上,關(guān)于SPI的通訊章節(jié)。
4、去除程序中所有與SPI無關(guān)的部分(排除干擾)
5、檢查程序有無準(zhǔn)確地按照【3、】中的說明去做。
6、走單步調(diào)試。
回復(fù)

使用道具 舉報(bào)

ID:1045628 發(fā)表于 2022-10-31 08:54 | 顯示全部樓層
解決了,
因?yàn)槲页跏蓟撕脦讉(gè)SPI,且標(biāo)準(zhǔn)包程序宏定義有迷惑性
#define GPIO_AF_SPI4         ((uint8_t)0x05)
#define GPIO_AF_SPI5         ((uint8_t)0x05)
這是AF5,SPI5實(shí)際上是AF6,
#define GPIO_AF6_SPI5         ((uint8_t)0x06)
是因?yàn)镾PI5初始化時(shí)把SPI4的初始化覆蓋了一部分,導(dǎo)致SPI4MISO口出現(xiàn)變化
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表