介紹
RA系列單片機(jī)是瑞薩推出的32位ARM單片機(jī),在某些產(chǎn)品中需要通過安規(guī)認(rèn)證,如IEC60730(CLASS B),芯片硬件本身已經(jīng)通過IEC60730認(rèn)證了,今天主要說RA芯片軟件自檢函數(shù)庫。
目前包括RA2A1、RA2L1、RA4M1、RA6M1四個系列芯片的例程。MCU自檢分為兩個部分:初始化自檢和循環(huán)調(diào)用自檢,可以分為以下: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對應(yīng)的數(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、設(shè)置一個周期性中斷調(diào)用CLASS B周期性自檢,周期時間長短可根據(jù)安規(guī)公司要求調(diào)整。
按照上述步驟作者成功編寫移植了瑞薩官方提供的函數(shù)庫,并編譯通過無報錯,見圖3。

圖3
CLASS B各個模塊自檢介紹
CPU
CPU的測試方式為向寄存器內(nèi)寫入數(shù)據(jù),然后讀出校驗(yàn)其是否能正常寫入、讀出,在寫入數(shù)據(jù)和完成后會有將之前工作數(shù)據(jù)入棧(PUSH {R0-R7})和恢復(fù)數(shù)據(jù)的出棧指令(POP {R0-R7})等,運(yùn)行CPU自檢程序時,不能被其他程序打斷,否則會發(fā)生數(shù)據(jù)運(yùn)行錯誤。
ROM
ROM測試方式為引入外部腳本srec計算出CRC值寫入內(nèi)存的最后一位并與RA單片機(jī)內(nèi)部CRC計算值對比,從而完成對ROM的計算,外部腳本寫入地址如u圖4中所示。

圖4
RAM
RAM模塊檢驗(yàn)方式是向MCU的RAM區(qū)域進(jìn)行讀寫測試,完成RAM校驗(yàn)。
CLOCK
CLOCK可采用內(nèi)部或是外部時鐘檢驗(yàn)MCU主時鐘,本例程中選中IWDTCLOCK時鐘作為基準(zhǔn)時鐘。其中CLOCK的校驗(yàn)函數(shù)ClockMonitor_Init(HOC
O , IWDTCLK , CLOCK_FREQ_MAIN , 15000 , Clock_Test_Failure);
參數(shù)1:目標(biāo)時鐘
參數(shù)2:基準(zhǔn)時鐘
參數(shù)3:目標(biāo)時鐘頻率
參數(shù)4:基準(zhǔn)時鐘頻率
參數(shù)5:錯誤時回調(diào)函數(shù)
VOLTAGE
VOLTAGE檢驗(yàn)是MCU打開LVD電壓監(jiān)控模式,如果MCU電源電壓低于設(shè)定電壓時MCU調(diào)用不可屏蔽中斷NMI,進(jìn)入報錯函數(shù)。電壓檢測調(diào)用VoltageMonitor_Init(VOLTAGE_MONITOR_LEVEL_2_79);本例程中電源低于2.79V進(jìn)入報錯函數(shù)。
ADC
MCU內(nèi)部有個ADC CRC模塊,可以將ADC引腳接入CRC模塊中,模塊會產(chǎn)生0V基準(zhǔn)、VCC/2基準(zhǔn)、VCC電壓基準(zhǔn)來校驗(yàn)ADC,需要實(shí)時查看ADC引腳上的電壓,看ADC模塊能否正常轉(zhuǎn)換電壓。
TEMPERATURE
MCU內(nèi)部有溫度傳感器TSN,可實(shí)時查看溫度情況,一旦超過設(shè)定范圍,可進(jìn)入報錯。
GPIO
GPIO檢驗(yàn)功能在將GPIO設(shè)置為輸出模式,然后讀取管腳輸出電平,既而判斷完成檢驗(yàn)。在GPIO外接電路時,可能會接上容性負(fù)載,GPIO管腳電平變化時可能是緩慢變化,所以設(shè)置完輸出后要根據(jù)電路連接適當(dāng)延時檢測,從而避免發(fā)生錯誤。
作者對CLASS B自檢各個模塊項(xiàng)目所用時間長度做了大致的測算如圖5

圖5
結(jié)論
作者移植成功IEC60730安規(guī)認(rèn)證庫發(fā)現(xiàn)上電初始化自檢大概需要70ms,且每隔一段時間會定時自檢各個模塊,其中最長的一次模塊自檢須用時長1.48ms,加入庫代碼時要考慮此時間長度是否對自身邏輯有無影響。注意循環(huán)測試中CPU自檢不應(yīng)該被任何中斷打斷,鑒于CPU測試時間比較短(小于1mS),建議開始CPU測試之前關(guān)閉中斷、CPU測試完成后再打開中斷,若強(qiáng)行打斷CPU自檢會導(dǎo)致程序跑飛、棧溢出等嚴(yán)重后果。此外GPIO自檢會動作IO電平,對于大多數(shù)應(yīng)用來說是不允許的,可跟安規(guī)公司溝通酌情添加此模塊自檢函數(shù)。
-
RA
+關(guān)注
關(guān)注
0文章
23瀏覽量
24912 -
Class
+關(guān)注
關(guān)注
0文章
53瀏覽量
20052 -
函數(shù)庫
+關(guān)注
關(guān)注
1文章
84瀏覽量
32677
發(fā)布評論請先 登錄
什么是STM32函數(shù)庫
ZLGCAN接口函數(shù)庫
C語言入門教程-函數(shù)庫
PIC單片機(jī)的C語言應(yīng)用下的函數(shù)庫
凌陽《函數(shù)庫使用說明》
基于GE運(yùn)動控制器型號及在函數(shù)庫中應(yīng)用
標(biāo)準(zhǔn)C函數(shù)庫的用法

LiquidCrystal_I2C函數(shù)庫

評論