4
本節(jié)學(xué)習(xí)如何添加外圍功能-AFE和DSAD,并進(jìn)行設(shè)置,每1ms采集外部PT100的溫度值。
4.1 參考文檔r01an4788ej0110-rx23ee-a.pdf


4.2 打開Smart Configurator,Components標(biāo)簽頁點(diǎn)擊“+”,F(xiàn)unction選擇“A/D Converter”,選擇“Analog Front End”。

4.3 點(diǎn)擊“Next”,點(diǎn)擊“Finish”。

4.4 設(shè)置AFE,PT100為三線RTD(電阻溫度檢測器),通過電流激勵(lì)能產(chǎn)生輸出電壓。
所以選擇從AIN8和AIN9輸出250uA的激勵(lì)電流。板子上已經(jīng)將J5-2連接到J4-2,J5-1連接到J4-1。

4.5 Components標(biāo)簽頁點(diǎn)擊“+”,F(xiàn)unction選擇“A/D Converter”,選擇“Continuous Scan Mode DSAD”。

4.6 點(diǎn)擊“Next”,點(diǎn)擊“Finish”。

4.7 設(shè)置DSAD
選擇Channel0
不勾選中斷

Positive input signal選擇ANI7
Negative input signal選擇AIN6
Reference input選擇REF1P/REF1N
勾選Positive reference voltage buffer
勾選Negative reference voltage buffer
選擇PGA:x16
A/D conversion number選擇Immediate value mode (the number of A/D conversions if from 1 to 255),轉(zhuǎn)換次數(shù)設(shè)為1
Oversampling ratio:OSR設(shè)為50000,那么所對應(yīng)的OSRm寄存器的值為3124

4.8 點(diǎn)擊右上角“Generate Code”生成代碼

4.9 雙擊src->smc_gen->Config_DSAD0文件夾中的Config_DSAD0.h
文件的最后,添加下面第2行和第3行的代碼
/* Start user code for function. Do not edit comment generated here */ bool r_dsad0_IsConversionEnd (void); void r_dsad0_ClearIrFlag (void); /* End user code. Do not edit comment generated here */
4.10 雙擊src->smc_gen->Config_DSAD0文件夾中的Config_DSAD0.c
文件的最后,添加下面第2行到29行的代碼
/* Start user code for adding. Do not edit comment generated here */
/**********************************************************************************************************************
* Function Name: r_dsad0_IsConversionEnd
* Description : This function returns the Conversion status of DSAD0.
* Arguments : None
* Return Value : bool
* false:Conversion, true:Conversion end
*********************************************************************************************************************/
bool r_dsad0_IsConversionEnd (void)
{
return (bool) ((1U == IR(DSAD0, ADI0)) ? true : false);
}
/**********************************************************************************************************************
End of function r_dsad0_IsConversionEnd
*********************************************************************************************************************/
/**********************************************************************************************************************
* Function Name: r_dsad0_ClearIrFlag
* Description : This function clears the IR flag
* Arguments : None
* Return Value : None
*********************************************************************************************************************/
void r_dsad0_ClearIrFlag (void)
{
IR(DSAD0, ADI0)= 0U;
}
/**********************************************************************************************************************
End of function r_dsad0_ClearIrFlag
*********************************************************************************************************************/
/* End user code. Do not edit comment generated here */
4.11 從參考例程“r01an4788_rx23ea_rtd”的src文件夾中拷貝以下文件到src文件夾中。

打開r_rtd_api.h文件,將D_RTD_SELECT宏定義修改為“1”(3線)。

4.12 雙擊rx23ea_local_board_lab.c文件,包含以下頭文件(第10-12行,第16-17行)
/*********************************************************************** * * FILE : rx23ea_local_board_lab.c * DATE : 2023-09-16 * DESCRIPTION : Main Program * * NOTE:THIS IS A TYPICAL EXAMPLE. * ***********************************************************************/ #include #include #include #include "r_smc_entry.h" #include "r_sensor_common_api.h" #include "r_rtd_api.h"
4.13 在main()函數(shù)前添加變量定義(第2-3行)
bool timer_flag = false; static volatile int32_t s_dsad0_value; /** DSAD0 24bit A/D value storage variable */ static volatile float s_temp = 0; /** Measurement temperature storage variable */
4.14 在main函數(shù)中添加下面的代碼(第1-2行,第6-8行,第10-44行)
uint32_t dsad0_reg; /** DSAD0.DR register storage variable */
float rtd_temp = 0; /** Measurement temperature */
R_Config_TMR0_TMR1_Start();
/** A/D conversion start */
R_Config_DSAD0_Start();
R_Config_DSAD0_Set_SoftwareTrigger();
while (1)
{
if(true == timer_flag){
timer_flag = false;
/****************************/
/** Temperature measurement */
/****************************/
/** A/D conversion complete for DSAD0? */
if (true == r_dsad0_IsConversionEnd())
{
int32_t dsad0_value; /** Signed 24-bit DSAD0 value */
r_dsad0_ClearIrFlag(); /** clear DSAD0 IR flag */
/** Get A/D value */
{
R_Config_DSAD0_Get_ValueResult( &dsad0_reg);
/** Flag mask, Sign extension */
dsad0_value = (int32_t) ((dsad0_reg & 0x00FFFFFFU) << 8) >> 8;
}
/** Calculate the temperature [degree] of the reference junction */
rtd_temp = R_RTD_DsadToTemp((float) dsad0_value);
/** debug monitor */
{
s_dsad0_value = dsad0_value;
s_temp = rtd_temp;
}
}
}
}
4.15 點(diǎn)擊
編譯代碼。

4.16 高亮rx23ea_local_board_lab工程,按下調(diào)試按鈕
4.17 可以通過觀測變量的方式檢查轉(zhuǎn)換結(jié)果。
打開src文件夾中的rx23ea_local_board_lab.c文件,找到s_dsad0_value和s_temp。鼠標(biāo)移動(dòng)到變量名上,雙擊變量名,并點(diǎn)擊鼠標(biāo)右鍵,選擇“Add Watch Expression”。

在Expressions窗口中,右鍵點(diǎn)擊該變量名,選擇Enable Real-time Refresh,將此變量設(shè)置為實(shí)時(shí)刷新。

4.18 運(yùn)行代碼 (
),需要點(diǎn)擊兩次。
可以觀察到變量的實(shí)時(shí)變化。

用手捏住傳感器,可以看到數(shù)值發(fā)生變化。

4.19 按下斷開按鈕
或者終止按鈕
。
審核編輯:劉清
-
adc
+關(guān)注
關(guān)注
100文章
7309瀏覽量
553604 -
AFE
+關(guān)注
關(guān)注
8文章
328瀏覽量
123679 -
pga
+關(guān)注
關(guān)注
1文章
113瀏覽量
42287 -
輸出電壓
+關(guān)注
關(guān)注
2文章
2033瀏覽量
40733 -
溫度檢測器
+關(guān)注
關(guān)注
1文章
23瀏覽量
12060 -
Pt100
+關(guān)注
關(guān)注
9文章
174瀏覽量
70976
發(fā)布評論請先 登錄
主板的RGB接口是16bit位(RGB-565),怎么24bit位RGB接口的 屏幕 接線 ?
Texas Instruments AFE159x 4通道24位模擬前端(AFE)數(shù)據(jù)手冊
請問對SPDIF_Rx傳來的48K,24Bit立體聲信號(hào)作約160階FIR電子二分頻濾波器需怎樣的MCU性能?
請問對SPDIF_Rx 傳來的48K,24Bit立體聲信號(hào)作約160階FIR電子二分頻濾波器需怎樣的MCU性能?
請問對SPDIF_Rx傳來的48K,24Bit立體聲信號(hào)作約160階FIR電子二分頻濾波器需怎樣的MCU性能?
集成24位Delta-Sigma模/數(shù)轉(zhuǎn)換器的RX23E-B系列32位微控制器數(shù)據(jù)手冊
模擬前端安裝式的RX23E-A 系列 32 位微控制器數(shù)據(jù)手冊

RX23E-A 24bit ΔΣADC應(yīng)用篇(4)添加外圍功能AFE和DSAD的方法
評論