介紹
RA系列單片機是瑞薩推出的32位ARM單片機,在某些產(chǎn)品中需要通過安規(guī)認證,如IEC60730(CLASS B),芯片硬件本身已經(jīng)通過IEC60730認證了,今天主要說RA芯片軟件自檢函數(shù)庫。
目前包括RA2A1、RA2L1、RA4M1、RA6M1四個系列芯片的例程。MCU自檢分為兩個部分:初始化自檢和循環(huán)調用自檢,可以分為以下:CPU、ROM、RAM、Clock、IWDT、Voltage、ADC、Temperature、POE、GPIO共10個部分,其中GPIO檢測需要動作GPIO電位只能初始化時自檢。
移植CLASS B代碼
1、將SelfTestLib(CLASS B測試代碼文件)和srec(CRC腳本及其配置參數(shù)文件)加入自己工程中,并加入工程的includes目錄中如下圖1。并根據(jù)芯片的特性,排除不需要的模塊,如RA2系列MCU沒有FPU模塊,需排除,否則編譯報錯。
圖1
2、可根據(jù)自身芯片的FLASH大小更改CRCcalcCmdXXKB.txt和CRCcalcCmdDebugXXKB.txt對應的數(shù)值。
3、添加CRC計算腳本,加入腳本命令arm-none-eabi-objcopy -O srec "${ProjName}.elf" "Original.srec" & ${ProjDirPath}/srec/srec_cat @${ProjDirPath}/srec/CRCcalcCmd64KB.txt,并利用仿真將CRC計算后的值寫入ROM內(nèi)存中的最后一個32位字節(jié),如圖2。
圖2
4、設置一個周期性中斷調用CLASS B周期性自檢,周期時間長短可根據(jù)安規(guī)公司要求調整。
按照上述步驟作者成功編寫移植了瑞薩官方提供的函數(shù)庫,并編譯通過無報錯,見圖3。
圖3
CLASS B各個模塊自檢介紹
CPU
CPU的測試方式為向寄存器內(nèi)寫入數(shù)據(jù),然后讀出校驗其是否能正常寫入、讀出,在寫入數(shù)據(jù)和完成后會有將之前工作數(shù)據(jù)入棧(PUSH {R0-R7})和恢復數(shù)據(jù)的出棧指令(POP {R0-R7})等,運行CPU自檢程序時,不能被其他程序打斷,否則會發(fā)生數(shù)據(jù)運行錯誤。
ROM
ROM測試方式為引入外部腳本srec計算出CRC值寫入內(nèi)存的最后一位并與RA單片機內(nèi)部CRC計算值對比,從而完成對ROM的計算,外部腳本寫入地址如u圖4中所示。
圖4
RAM
RAM模塊檢驗方式是向MCU的RAM區(qū)域進行讀寫測試,完成RAM校驗。
CLOCK
CLOCK可采用內(nèi)部或是外部時鐘檢驗MCU主時鐘,本例程中選中IWDTCLOCK時鐘作為基準時鐘。其中CLOCK的校驗函數(shù)ClockMonitor_Init(HOC
O , IWDTCLK , CLOCK_FREQ_MAIN , 15000 , Clock_Test_Failure);
參數(shù)1:目標時鐘
參數(shù)2:基準時鐘
參數(shù)3:目標時鐘頻率
參數(shù)4:基準時鐘頻率
參數(shù)5:錯誤時回調函數(shù)
VOLTAGE
VOLTAGE檢驗是MCU打開LVD電壓監(jiān)控模式,如果MCU電源電壓低于設定電壓時MCU調用不可屏蔽中斷NMI,進入報錯函數(shù)。電壓檢測調用VoltageMonitor_Init(VOLTAGE_MONITOR_LEVEL_2_79);本例程中電源低于2.79V進入報錯函數(shù)。
ADC
MCU內(nèi)部有個ADC CRC模塊,可以將ADC引腳接入CRC模塊中,模塊會產(chǎn)生0V基準、VCC/2基準、VCC電壓基準來校驗ADC,需要實時查看ADC引腳上的電壓,看ADC模塊能否正常轉換電壓。
TEMPERATURE
MCU內(nèi)部有溫度傳感器TSN,可實時查看溫度情況,一旦超過設定范圍,可進入報錯。
GPIO
GPIO檢驗功能在將GPIO設置為輸出模式,然后讀取管腳輸出電平,既而判斷完成檢驗。在GPIO外接電路時,可能會接上容性負載,GPIO管腳電平變化時可能是緩慢變化,所以設置完輸出后要根據(jù)電路連接適當延時檢測,從而避免發(fā)生錯誤。
作者對CLASS B自檢各個模塊項目所用時間長度做了大致的測算如圖5
圖5
結論
作者移植成功IEC60730安規(guī)認證庫發(fā)現(xiàn)上電初始化自檢大概需要70ms,且每隔一段時間會定時自檢各個模塊,其中最長的一次模塊自檢須用時長1.48ms,加入庫代碼時要考慮此時間長度是否對自身邏輯有無影響。注意循環(huán)測試中CPU自檢不應該被任何中斷打斷,鑒于CPU測試時間比較短(小于1mS),建議開始CPU測試之前關閉中斷、CPU測試完成后再打開中斷,若強行打斷CPU自檢會導致程序跑飛、棧溢出等嚴重后果。此外GPIO自檢會動作IO電平,對于大多數(shù)應用來說是不允許的,可跟安規(guī)公司溝通酌情添加此模塊自檢函數(shù)。
-
RA
+關注
關注
0文章
19瀏覽量
24702 -
Class
+關注
關注
0文章
53瀏覽量
19773 -
函數(shù)庫
+關注
關注
1文章
84瀏覽量
32471
發(fā)布評論請先 登錄
相關推薦
評論