GPADC功能介紹
IWR1642/AWR1642的毫米波傳感器芯片上集成了通用ADC(GPADC)的功能。用戶可以利用GPADC對(duì)外部電壓,例如電源電壓進(jìn)行監(jiān)控。IWR1642/AWR1642上的ADC采樣率為625Ksps,精度為10-bit,提供給用戶6個(gè)ADC管腳進(jìn)行測(cè)量。其中5個(gè)ADC支持緩沖模式和非緩沖模式,一個(gè)ADC僅支持非緩沖模式。在非緩沖模式下,ADC的測(cè)量范圍是0V~1.8V,而緩沖模式下,測(cè)量范圍是0.4V~1.3V。
GPADC本身是由雷達(dá)子系統(tǒng)控制,用戶可以通過(guò)在MSS或者DSS調(diào)用檢測(cè)GPADC的API,向雷達(dá)子系統(tǒng)發(fā)送相關(guān)請(qǐng)求來(lái)獲取GPADC相關(guān)信息。雷達(dá)子系統(tǒng)收到ADC檢測(cè)的消息后,會(huì)調(diào)度ADC測(cè)量和其他射頻和模擬的檢測(cè)功能。用戶可以配置ADC設(shè)定時(shí)間,也就是跳過(guò)多少采樣點(diǎn)后開(kāi)始正式采用,以及連續(xù)采樣點(diǎn)數(shù)。雷達(dá)子系統(tǒng)會(huì)在一幀結(jié)束的時(shí)候把ADC采樣的最小值,最大值和平均值通過(guò)消息發(fā)給GPADC采樣的發(fā)起者(MSS或者DSS)。
注意事項(xiàng)
這里有兩點(diǎn)需要注意。一個(gè)是BSS里面異步消息發(fā)送對(duì)象的設(shè)置。對(duì)于GPADC這個(gè)檢測(cè),是調(diào)用配置GPADC的那個(gè)核會(huì)收到BSS發(fā)出的消息。一個(gè)是mmwave Link下消息發(fā)送的對(duì)象。在mmw demo里面使用了mmwave link的消息,這個(gè)消息是不同于BSS的異步消息配置。在mmw demo里MMS代碼的消息處理函數(shù)MmwDemo_mssMmwaveEventCallbackFxn()的返回值默認(rèn)為0,表示在接收到消息后,同樣需要把消息發(fā)給DSS。所以當(dāng)MSS發(fā)起了GPADC的配置,默認(rèn)情況下不僅MSS會(huì)收到GPADC的消息,DSS也是會(huì)收到GPADC的消息。如果DSS不處理收到的GPADC消息,DSS側(cè)就會(huì)報(bào)錯(cuò)。所以如果不需要DSP處理相關(guān)事件,可以在DSP側(cè)的MmwDemo_dssMmwaveEventCallbackFxn函數(shù)里添加GPADC消息的處理,例如收到消息后break。但是,更好的方法是在mss側(cè)把相應(yīng)消息事件的返回值設(shè)置為1。這樣可以減少對(duì)DSS的打斷。默認(rèn)的代碼MmwDemo_mssMmwaveEventCallbackFxn()函數(shù)的返回值只有統(tǒng)一的一個(gè)值,因?yàn)閙mw demo每個(gè)核都會(huì)處理多個(gè)消息,所以最好修改一下MmwDemo_mssMmwaveEventCallbackFxn為不需要傳給dss的消息返回值為1,而需要的返回值為0。如果用戶需要在DSS側(cè)調(diào)用GPADC的配置代碼,也需要類似的處理。
GPADC功能實(shí)現(xiàn)
下面以MSS讀取GPADC為例,介紹一下如何在mmWave SDK2.0的mmw demo下實(shí)現(xiàn)多次獲取GPADC數(shù)值的功能。下面的測(cè)試基于IWR1642 BOOST ES2.0。DSS讀取GPADC,也可以使用類似方法。
首先需要在mss_main.c里面添加GPADC配置的相關(guān)代碼。每調(diào)用一次配置GPADC,就能夠收到一個(gè)相關(guān)GPADC的消息,獲取GPADC的值。如果需要多次讀取GPADC的值,需要多次調(diào)用GPADC的配置。
#include
#include
rlUInt8_t isGetGpAdcMeasData = 0U;
rlRecvdGpAdcData_t rcvGpAdcData = {0};
const rlGpAdcCfg_t gpAdcCfg =
{
.enable = 0x3F,
.bufferEnable = 0,//0表示非緩沖模式,
//1表示使能緩沖模式,如果全部ADC使能緩沖模式則配置0x3F
.numOfSamples[0].sampleCnt = 20,
.numOfSamples[0].settlingTime = 3,
.numOfSamples[1].sampleCnt = 14,
.numOfSamples[1].settlingTime = 3,
.numOfSamples[2].sampleCnt = 14,
.numOfSamples[2].settlingTime = 3,
.numOfSamples[3].sampleCnt = 14,
.numOfSamples[3].settlingTime = 3,
.numOfSamples[4].sampleCnt = 14,
.numOfSamples[4].settlingTime = 3,
.numOfSamples[5].sampleCnt = 14,
.numOfSamples[5].settlingTime = 3,
.numOfSamples[6].sampleCnt = 14,
.numOfSamples[6].settlingTime = 3,
.numOfSamples[7].sampleCnt = 14,
.numOfSamples[7].settlingTime = 3
.numOfSamples[8].sampleCnt = 14,
.numOfSamples[8].settlingTime = 3,
.numOfSamples[9].sampleCnt = 14,
.numOfSamples[9].settlingTime = 3,
.numOfSamples[10].sampleCnt = 14,
.numOfSamples[10].settlingTime = 3,
.numOfSamples[11].sampleCnt = 14,
.reserved0 = 0
};
int32_t MmwaveLink_setGpAdcConfig (void)
{
int32_t retVal;
retVal = rlSetGpAdcConfig(RL_DEVICE_MAP_INTERNAL_BSS, (rlGpAdcCfg_t*)&gpAdcCfg);
/* Check for mmWaveLink API call status */
if(retVal != 0)
{
/* Error: Link reported an issue. */
System_printf("Error: rlSetGpAdcConfig retVal=%dn", retVal);
return -1;
}
while(isGetGpAdcMeasData == 0U)
{
/* Sleep and poll again: */
Task_sleep(1);
}
return 0;
}
下面是具體調(diào)用GPADC配置的代碼,可以添加在用戶需要測(cè)試外部電壓的地方。
if (MmwaveLink_setGpAdcConfig() < 0)???????????????
{
System_printf ("Error: MmwaveLink_setGpAdcConfign"); break;
}
接下來(lái)在MSS側(cè)添加GPADC消息的處理代碼。下面的處理代碼是在CCS輸出窗口打印出ADC5的平均值。相關(guān)代碼添加在MmwDemo_mssMmwaveEventCallbackFxn()函數(shù)里。將MmwDemo_mssMmwaveEventCallbackFxn函數(shù)的返回值設(shè)置為1,這樣DSP就不會(huì)收到該消息,也就不需要在DSP側(cè)添加消息處理代碼了。當(dāng)GPADC的配置代碼被調(diào)用的時(shí)候,用戶就可以在CCS打印輸出窗口看到測(cè)量的GPADC的值。
case RL_RF_AE_GPADC_MEAS_DATA_SB:
{
isGetGpAdcMeasData = 1U;
memcpy(&rcvGpAdcData, payload, sizeof(rlRecvdGpAdcData_t));
System_printf ("GPADC value: %d Vn", rcvGpAdcData.sensor[4].avg);
break;
}
下面是在IWR1642BOOST上實(shí)測(cè)的數(shù)據(jù)和萬(wàn)用表測(cè)量的數(shù)據(jù)的比較。
萬(wàn)用表測(cè)量(V) | ADC5的平均值 | GPADC值轉(zhuǎn)換為電壓 (V) | |
IWR1642 ES2.0 EVM | 1.7176 | 980 | 1.8/1024*980=1.722656 |
0 | 0 | 1.8/1024*0=0 |
上面介紹的GPADC使用方法適用于IWR1642/AWR1642,對(duì)于IWR1443/AWR1443上的GPADC的使用也是很好的參考。
審核編輯:郭婷
-
芯片
+關(guān)注
關(guān)注
456文章
50965瀏覽量
424840 -
adc
+關(guān)注
關(guān)注
98文章
6514瀏覽量
545050 -
毫米波傳感器
+關(guān)注
關(guān)注
3文章
106瀏覽量
11460
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論