SPC56xL70與SPC56xL64設(shè)備勘誤解析
在電子設(shè)計(jì)領(lǐng)域,我們經(jīng)常會遇到各種設(shè)備的功能性和電氣問題。今天,我們就來深入探討一下SPC56xL70和SPC56xL64設(shè)備的勘誤情況,這些設(shè)備的JTAG ID為0X0AEA_9041。
文件下載:SPC564L70L5BBOSY.pdf
一、設(shè)備識別
SPC56xL70和SPC56xL64設(shè)備有特定的識別方式,JTAG ID為0x0AEA_9041,MCU ID寄存器1(MIDR1)中,MAJOR MASK[3:0] = 0x1,MINOR MASK[3:0] = 0x0。這是我們準(zhǔn)確識別這些設(shè)備的重要依據(jù),在設(shè)計(jì)和調(diào)試過程中,正確識別設(shè)備是解決問題的第一步。
二、功能性問題及解決方案
1. 寄存器保護(hù)問題(ERR000063)
ME_PCTL18用于選擇FlexCAN_2在運(yùn)行和非運(yùn)行模式下的配置,但該寄存器無法通過寄存器保護(hù)機(jī)制進(jìn)行保護(hù)。不過ME_PCTL16和MC_PCTL17不受此影響。我們可以利用設(shè)備內(nèi)置的MPU和AIPS等機(jī)制來保護(hù)ME_PCTL18寄存器,防止意外寫入。大家在設(shè)計(jì)時(shí),是否有遇到過類似寄存器保護(hù)失效的情況呢?
2. 閃存單比特糾錯(cuò)狀態(tài)問題(ERR003320)
閃存的單比特糾錯(cuò)狀態(tài)無法傳遞到錯(cuò)誤糾正狀態(tài)模塊(ECSM)和故障收集與控制單元(FCCU),僅通過閃存模塊配置寄存器(MCR)的SBC位進(jìn)行標(biāo)記。我們可以通過輪詢MCR的SBC位來檢測單比特糾錯(cuò)事件。在處理閃存糾錯(cuò)問題時(shí),這種輪詢方式是否是最有效的呢?
3. FlexPWM操作問題(ERR003511)
當(dāng)在互補(bǔ)模式下設(shè)置IPOL位時(shí),PWMi波形的源應(yīng)該從VAL2和VAL3寄存器切換到VAL4和VAL5寄存器,但實(shí)際并未切換。我們可以通過交換VAL2/3和VAL4/5的值來解決這個(gè)問題。在PWM設(shè)計(jì)中,類似的配置錯(cuò)誤可能會導(dǎo)致嚴(yán)重的功能異常,大家是如何避免這類問題的呢?
4. e200z預(yù)取異常問題(ERR003697)
e200z4核心在預(yù)取指令時(shí)可能會引發(fā)總線錯(cuò)誤或ECC異常。我們應(yīng)避免將代碼放在內(nèi)存區(qū)域的最后64字節(jié)內(nèi)執(zhí)行,并且在執(zhí)行內(nèi)部ECC SRAM代碼時(shí),要初始化代碼結(jié)束后的內(nèi)存。在內(nèi)存管理和代碼布局方面,大家有什么獨(dú)特的經(jīng)驗(yàn)嗎?
5. ADC預(yù)采樣問題(ERR004016)
在ADC通道9、10、15上進(jìn)行預(yù)采樣時(shí),可能會得到錯(cuò)誤的結(jié)果。我們可以通過編程ADC轉(zhuǎn)換定時(shí)寄存器1(CTR1)和預(yù)采樣控制寄存器(PSCR)的PREVAL1字段來解決。在ADC設(shè)計(jì)中,預(yù)采樣的準(zhǔn)確性對整個(gè)系統(tǒng)的性能至關(guān)重要,大家是如何保證預(yù)采樣精度的呢?
6. ADC“中止開關(guān)”問題(ERR004168)
“中止開關(guān)”在某些情況下會導(dǎo)致正在進(jìn)行的注入通道和即將到來的正常通道異常中止。我們可以通過檢查CEOCFR0寄存器來檢測這種異常行為。在ADC多通道操作中,如何確保通道切換和中止的準(zhǔn)確性是一個(gè)關(guān)鍵問題,大家有什么好的方法嗎?
7. ADC觸發(fā)問題(ERR004186)
在CTU觸發(fā)或注入觸發(fā)的ADC轉(zhuǎn)換開始前觸發(fā)ABORT或ABORTCHAIN會導(dǎo)致轉(zhuǎn)換異常。我們應(yīng)避免在ADC轉(zhuǎn)換開始前編程這些觸發(fā)位,若CTU觸發(fā)轉(zhuǎn)換被阻塞,可以通過清除和設(shè)置ADC_MCR[CTUEN]來重新激活。在ADC觸發(fā)控制方面,大家是否遇到過類似的時(shí)序問題呢?
8. MC_RGM復(fù)位問題(ERR004334)
在外部復(fù)位配置為“長”且系統(tǒng)時(shí)鐘源不是16 MHz內(nèi)部RC振蕩器(IRCOSC)時(shí),設(shè)備可能會停留在復(fù)位狀態(tài)。我們可以通過兩種方法解決:一是將RGM_FBRE[BE_EXR]設(shè)置為0b1,防止外部復(fù)位輸出由MC_RGM驅(qū)動;二是將RGM_FESS[SS_EXR]設(shè)置為0b1,將外部復(fù)位配置為“短”,并在需要時(shí)通過軟件觸發(fā)復(fù)位。在復(fù)位設(shè)計(jì)中,如何確保設(shè)備在各種情況下都能正常復(fù)位是一個(gè)重要的挑戰(zhàn),大家有什么應(yīng)對策略嗎?
9. LINFlexD緩沖區(qū)溢出檢測問題(ERR004340)
在UART接收FIFO模式下,LINFlexD的緩沖區(qū)溢出標(biāo)志(BOF)位在置位后會在下一個(gè)時(shí)鐘周期被清除,用戶軟件無法通過輪詢BOF來檢測溢出。我們可以通過僅在LIN錯(cuò)誤組合中斷中啟用緩沖區(qū)溢出源來檢測錯(cuò)誤。在串口通信中,緩沖區(qū)溢出是一個(gè)常見的問題,大家是如何處理的呢?
10. NZ4C3/NZ7C3資源滿消息問題(ERR006481)
e200zx核心的Nexus接口可能會在特定條件下發(fā)送錯(cuò)誤的資源滿消息(RFM)。我們可以通過工具檢查歷史信息、重寫代碼或使用傳統(tǒng)程序跟蹤模式來解決。在調(diào)試過程中,遇到這種錯(cuò)誤消息時(shí),大家是如何定位和解決問題的呢?
11. NPC時(shí)鐘門控問題(ERR006726)
當(dāng)MCKO頻率編程為SYS_CLK/8且門控功能啟用時(shí),MCKO時(shí)鐘可能會提前一個(gè)時(shí)鐘周期被門控。我們在重新啟用MCKO后,應(yīng)預(yù)期接收到對應(yīng)空閑狀態(tài)的MCKO邊沿。在時(shí)鐘設(shè)計(jì)中,時(shí)鐘門控的準(zhǔn)確性對系統(tǒng)性能有重要影響,大家是如何確保時(shí)鐘門控正常工作的呢?
12. eDMA通道問題(ERR006967)
在使用DMA連續(xù)鏈接模式時(shí),高優(yōu)先級通道搶占低優(yōu)先級通道可能會導(dǎo)致被搶占通道的計(jì)數(shù)器損壞。我們可以通過禁用連續(xù)鏈接模式來解決。在DMA設(shè)計(jì)中,通道優(yōu)先級和鏈接模式的配置是一個(gè)復(fù)雜的問題,大家有什么經(jīng)驗(yàn)可以分享嗎?
13. NZxC3數(shù)據(jù)標(biāo)簽問題(ERR007120)
e200zx核心將Nexus數(shù)據(jù)采集消息(DQM)的Data Tag(DQTAG)字段實(shí)現(xiàn)為可變長度包,可能會導(dǎo)致額外的時(shí)鐘周期。工具應(yīng)將DQTAG字段解碼為可變長度包。在數(shù)據(jù)采集和傳輸過程中,數(shù)據(jù)格式的一致性是非常重要的,大家是如何處理可變長度數(shù)據(jù)的呢?
14. FCCU監(jiān)控問題(ERR007227)
FCCU輸出監(jiān)控單元(FOSU)在故障輸入已掛起時(shí)不會監(jiān)控新啟用的故障。我們在啟用故障輸入時(shí),應(yīng)檢查并清除FCCU掛起的故障,配置FCCU并進(jìn)行相應(yīng)的檢查和操作。在故障監(jiān)控和處理方面,大家有什么有效的方法嗎?
15. LINFlexD狀態(tài)問題(ERR007274)
LIN從機(jī)連續(xù)接收頭部可能會使LIN有限狀態(tài)機(jī)(FSM)進(jìn)入意外狀態(tài)。我們可以通過配置從機(jī)和主機(jī)的相關(guān)寄存器來解決,確保LIN通信的正常進(jìn)行。在LIN總線通信中,狀態(tài)機(jī)的穩(wěn)定性對系統(tǒng)的可靠性至關(guān)重要,大家是如何保證狀態(tài)機(jī)正常工作的呢?
16. FlexCAN中斷問題(ERR007322)
在FlexCAN處于總線關(guān)閉狀態(tài)時(shí)進(jìn)行軟復(fù)位,總線關(guān)閉中斷位可能會錯(cuò)誤置位。我們可以通過特定的軟復(fù)位程序來避免這種錯(cuò)誤。在CAN總線設(shè)計(jì)中,中斷處理的準(zhǔn)確性是保證通信正常的關(guān)鍵,大家是如何處理CAN中斷的呢?
17. DSPI保留位問題(ERR007352)
DSPI模塊在從模式下,時(shí)鐘和傳輸屬性寄存器(DSPIx_CTARx)的保留位可寫,但設(shè)置這些位不會改變模塊的操作。我們可以通過寫入零或屏蔽這些位來解決。在SPI通信中,寄存器的正確配置是保證數(shù)據(jù)傳輸準(zhǔn)確的基礎(chǔ),大家是如何處理寄存器保留位的呢?
18. MC_ME模式問題(ERR007394)
在低功耗模式退出時(shí),MC_ME可能會進(jìn)入錯(cuò)誤的模式。我們可以通過兩次進(jìn)入低功耗模式前的運(yùn)行模式來確保返回正確的模式。在低功耗設(shè)計(jì)中,模式切換的準(zhǔn)確性對系統(tǒng)的性能和功耗有重要影響,大家是如何優(yōu)化低功耗模式切換的呢?
19. LINFlexD超時(shí)錯(cuò)誤問題(ERR007589)
LINFlexD在從UART模式切換到LIN模式或重置LINTCSR[MODE]位時(shí),可能會產(chǎn)生虛假的超時(shí)錯(cuò)誤。我們可以通過設(shè)置相關(guān)寄存器來避免這種錯(cuò)誤。在串口模式切換過程中,如何避免超時(shí)錯(cuò)誤是一個(gè)需要關(guān)注的問題,大家有什么經(jīng)驗(yàn)嗎?
20. FlexPWM故障過濾問題(ERR007877)
FlexPWM的故障引腳過濾器啟用時(shí)可能會出現(xiàn)不一致的操作。我們應(yīng)禁用故障引腳過濾器,將故障過濾周期設(shè)置為0。在PWM設(shè)計(jì)中,故障過濾的準(zhǔn)確性對系統(tǒng)的穩(wěn)定性有重要影響,大家是如何處理PWM故障過濾的呢?
21. SWG GPIO功能問題(ERR008070)
如果Sine Wave Generator模塊(SWG)未處于掉電模式,GPIO[55]功能將被禁用。我們可以通過啟用SWG時(shí)鐘輸入并將SWG置于掉電模式來解決。在GPIO設(shè)計(jì)中,模塊之間的相互影響是一個(gè)需要考慮的因素,大家是如何協(xié)調(diào)不同模塊對GPIO的使用的呢?
22. LINFlexD TX引腳問題(ERR008080)
LINFlexD在空閑狀態(tài)下,TX引腳會設(shè)置為高阻態(tài),可能會導(dǎo)致問題。我們可以根據(jù)不同的工作模式選擇合適的解決方案,如使用具有內(nèi)部上拉的LIN收發(fā)器或啟用內(nèi)部上拉。在串口通信中,引腳狀態(tài)的控制對通信的穩(wěn)定性有重要影響,大家是如何處理引腳狀態(tài)的呢?
23. LINFlexD同步問題(ERR008933)
LINFlexD在特定配置下可能會自動同步到錯(cuò)誤的波特率,且同步字段錯(cuò)誤標(biāo)志可能不會設(shè)置。我們可以通過兩種方法解決:一是根據(jù)LIN超時(shí)計(jì)數(shù)器的配置進(jìn)行相應(yīng)的操作;二是禁用自動同步功能。在LIN總線通信中,同步的準(zhǔn)確性對數(shù)據(jù)傳輸?shù)目煽啃灾陵P(guān)重要,大家是如何保證同步準(zhǔn)確性的呢?
24. LINFlexD擴(kuò)展幀模式問題(ERR008970)
LINFlexD在擴(kuò)展幀模式下可能會設(shè)置虛假的位錯(cuò)誤標(biāo)志,導(dǎo)致狀態(tài)機(jī)進(jìn)入錯(cuò)誤的空閑狀態(tài)。我們可以通過配置數(shù)據(jù)字段長度小于8來避免使用擴(kuò)展幀模式。在數(shù)據(jù)幀設(shè)計(jì)中,幀模式的選擇對系統(tǒng)的性能和可靠性有重要影響,大家是如何選擇合適的幀模式的呢?
25. SPI數(shù)據(jù)加載問題(ERR009682)
SPI模塊在接收FIFO溢出后,清除接收FIFO時(shí),移位寄存器數(shù)據(jù)會加載到接收FIFO中。我們可以通過避免接收FIFO溢出或在清除后進(jìn)行一次讀取并丟棄數(shù)據(jù)來解決。在SPI通信中,數(shù)據(jù)加載的準(zhǔn)確性對數(shù)據(jù)傳輸?shù)目煽啃灾陵P(guān)重要,大家是如何處理SPI數(shù)據(jù)加載問題的呢?
26. BAM串行引導(dǎo)問題(ERR009849)
當(dāng)閃存使用Power Architecture指令集軟件編程時(shí),Boot Assist Module(BAM)不支持串行引導(dǎo)。我們可以在執(zhí)行串行引導(dǎo)前擦除閃存或使用VLE軟件編程。在引導(dǎo)設(shè)計(jì)中,引導(dǎo)方式的選擇和兼容性是一個(gè)需要考慮的問題,大家是如何解決引導(dǎo)兼容性問題的呢?
27. FlexPWM故障清除問題(ERR009928)
在某些條件下,F(xiàn)lexPWM子模塊0的半周期自動故障清除功能可能不起作用。我們可以通過設(shè)置故障狀態(tài)寄存器的相應(yīng)位來使用全周期自動故障清除。在PWM故障處理中,故障清除的準(zhǔn)確性對系統(tǒng)的穩(wěn)定性有重要影響,大家是如何處理PWM故障清除的呢?
28. DSPI數(shù)據(jù)接收問題(ERR009976)
DSPI模塊在特定配置下,主設(shè)備可能會接收到錯(cuò)誤的數(shù)據(jù)。我們可以通過配置幀大小和相關(guān)寄存器來確保正確接收數(shù)據(jù)。在SPI通信中,數(shù)據(jù)接收的準(zhǔn)確性對系統(tǒng)的性能有重要影響,大家是如何保證SPI數(shù)據(jù)接收準(zhǔn)確的呢?
29. STCU模式問題(DAN-0046129)
參考手冊中運(yùn)行MBIST-only模式的模式值有誤,正確的值為7F140000_000803A0_FFFFFFFF_FFFFFFFF。在參考手冊使用過程中,我們要仔細(xì)核對相關(guān)信息,避免因手冊錯(cuò)誤導(dǎo)致的問題。
三、參考文檔與縮略語
文檔中還提供了相關(guān)的參考文檔,包括SPC56XL70xx 32位MCU家族的RM0342和SPC56xL70、SPC56xL64的數(shù)據(jù)手冊。同時(shí),列出了一系列縮略語,方便我們在閱讀和理解文檔時(shí)進(jìn)行參考。
在電子設(shè)計(jì)過程中,遇到設(shè)備的勘誤問題是很常見的。我們需要仔細(xì)分析問題產(chǎn)生的原因,并采取有效的解決方案。希望本文對大家在SPC56xL70和SPC56xL64設(shè)備的設(shè)計(jì)和調(diào)試過程中有所幫助。大家在實(shí)際應(yīng)用中是否遇到過類似的問題,又是如何解決的呢?歡迎在評論區(qū)分享你的經(jīng)驗(yàn)和見解。
發(fā)布評論請先 登錄
SPC56xL70與SPC56xL64設(shè)備勘誤解析
評論