加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

STM32F405使用LL庫(kù)建立SPI通訊報(bào)溢出是什么原因

12/12 10:37
479
閱讀需 2 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

既然使用HAL庫(kù)沒(méi)問(wèn)題,硬件方面應(yīng)該是沒(méi)啥問(wèn)題了。配置方面,使用CubeMx的話,操作是一樣的,只是生成的工程代碼寫法有差別。從問(wèn)題現(xiàn)象來(lái)看,感覺(jué)完全沒(méi)有正常通信,還不僅僅溢出的問(wèn)題??梢钥纯词欠裼脩舸a哪里有問(wèn)題,我這邊使用STM32F4的開(kāi)發(fā)板,選擇SPI1自發(fā)自收是正常的。發(fā)送采用DMA方式,接收采用中斷方式。

我添加的用戶代碼,供參考:

LL_DMA_ConfigAddresses(DMAx, LL_DMA_STREAM, (uint32_t)&SPITXData0],(uint32_t) &(SPI1->DR),LL_DMA_DIRECTION_MEMORY_TO_PERIPH);

LL_DMA_SetDataLength(DMAx, LL_DMA_STREAM, SIZE);

LL_DMA_EnableIT_TC(DMAx, LL_DMA_STREAM);

LL_SPI_EnableDMAReq_TX(SPI1);

LL_SPI_EnableIT_RXNE(SPI1);

LL_DMA_EnableStream(DMAx, LL_DMA_STREAM);
LL_SPI_Enable(SPI1);

根據(jù)RXNE事件在其中斷里進(jìn)行數(shù)據(jù)接收:
SPIRXData[cnt++]=SPI1->DR;

如果中斷接收的話,中斷處理程序盡量簡(jiǎn)潔點(diǎn)??梢韵葘?a class="article-link" target="_blank" href="/baike/497736.html">波特率放慢點(diǎn)。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜