適用性
本文件適用于STM32N6xxxx系列設(shè)備及其變體的部件編號(hào),如本頁面所述。
它提供了設(shè)備勘誤表的摘要和描述,與設(shè)備數(shù)據(jù)手冊(cè)和參考手冊(cè)RM0486相關(guān)。
實(shí)際設(shè)備行為與預(yù)期設(shè)備行為的偏差被視為設(shè)備限制。參考手冊(cè)或數(shù)據(jù)手冊(cè)中的描述與預(yù)期設(shè)備行為的偏差被視為文檔勘誤。術(shù)語“勘誤”既適用于限制也適用于文檔勘誤。
解決方案的適用性可能取決于目標(biāo)應(yīng)用的具體條件。采用解決方案可能會(huì)對(duì)目標(biāo)應(yīng)用造成限制。如果解決方案只是減少了限制的發(fā)生率和/或后果,或者只對(duì)設(shè)備上的一小部分實(shí)例或在特定的操作模式下對(duì)功能完全有效,則認(rèn)為該解決方案是部分的。
當(dāng)FMC以連續(xù)時(shí)鐘模式(CCLKEN在FMC_BCRx寄存器中設(shè)置)運(yùn)行時(shí),通過改變FMC_CFGR中CLKDIV[3:0]的值來應(yīng)用新的時(shí)鐘分頻因子,此時(shí)FMC被禁用(在FMC_BCRx中清除FMCEN),存在一個(gè)FMC_CLK時(shí)鐘周期,在這個(gè)周期內(nèi)FMC_CLK的周期并不如預(yù)期:例如,時(shí)鐘低脈沖持續(xù)時(shí)間與之前的CLKDIV[3:0]值相匹配,而時(shí)鐘高脈沖持續(xù)時(shí)間則與新的CLKDIV[3:0]值相匹配。
解決方法
使用以下步驟:
1. 停止所有設(shè)備的內(nèi)存流量。
2. 禁用FMC(參見產(chǎn)品參考手冊(cè)中描述的禁用序列)。
3. 在FMC_BCRx寄存器中將CCLKEN從1改為0以停止時(shí)鐘生成。
4. 在FMC_CFGR寄存器中編程所需的CLKDIV[3:0]值。
5. 將CCLKEN從0改回1。
6. 啟用FMC。
死鎖可以在某些條件下發(fā)生
描述
當(dāng)滿足以下所有條件時(shí),可能發(fā)生死鎖:
? 產(chǎn)品通過I/O管理器以多路復(fù)用模式與單個(gè)外部?jī)?nèi)存或具有兩個(gè)內(nèi)存的外部組合設(shè)備通信,直接或通過高速接口。
? 外部?jī)?nèi)存(們)以間接模式或內(nèi)存映射模式訪問。
當(dāng)同時(shí)發(fā)生以下兩個(gè)條件時(shí),可能發(fā)生死鎖:
? 當(dāng)前擁有外部總線的擴(kuò)展SPI接口(例如XSPI1)等待與外部?jī)?nèi)存進(jìn)行傳輸,以完成其在內(nèi)部互連矩陣總線上的傳輸。
? 內(nèi)部互連矩陣總線上的數(shù)據(jù)傳輸請(qǐng)求到達(dá)另一個(gè)擴(kuò)展SPI接口(例如XSPI2)。
這導(dǎo)致所有權(quán)沖突,其中:
? XSPI2無法獲得當(dāng)前由XSPI1使用的外部總線的所有權(quán)。
? XSPI1無法獲得當(dāng)前由XSPI2使用的內(nèi)部互連矩陣總線的所有權(quán)。
解決方法
采取以下措施之一:
? 如果設(shè)置了生成自動(dòng)傳輸分割的任何功能(MAXTRAN、REFRESH、CSBOUND、TIMEOUT),XSPI1將在某個(gè)時(shí)刻分割其傳輸,釋放總線。然后XSPI2可以處理其數(shù)據(jù),當(dāng)XSPI1再次獲得所有權(quán)時(shí),它可以通過其嵌入式功能從上次訪問的地址
之后的地址開始恢復(fù)傳輸。在這種情況下,死鎖得到解決。
解決方法的限制:
僅在寫入方向上,自動(dòng)恢復(fù)傳輸?shù)墓δ芘c某些閃存不兼容。這些內(nèi)存需要在恢復(fù)寫入傳輸之前額外發(fā)送一個(gè)“寫入使能”命令。這個(gè)“寫入使能”命令不是由XSPI生成的。
? 應(yīng)用程序必須確保在啟動(dòng)每個(gè)傳輸之前,XSPI內(nèi)部FIFO中有足夠的空間。內(nèi)部互連矩陣總線的活動(dòng)不再依賴于外部總線側(cè)發(fā)生的情況,避免了死鎖條件。