0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

瑞薩e2studio----ADC通過單次掃描多通道方式采樣

RA生態(tài)工作室 ? 2021-11-02 16:30 ? 次閱讀
pYYBAGGA3i6Af0z4AABdWrtWoBM374.png

1.概述

本篇文章主要介紹如何使用e2studio對(duì)瑞薩單片機(jī)進(jìn)行Adc通過單次掃描多通道方式采樣。

2.硬件準(zhǔn)備

首先需要準(zhǔn)備一個(gè)開發(fā)板,這里我準(zhǔn)備的是芯片型號(hào) R7FA2L1AB2DFL 的開發(fā)板。

3.新建工程

16000776-2dec-11ec-aa30-dac502259ad0.png

4.工程模板

16754e82-2dec-11ec-aa30-dac502259ad0.png

5.保存工程路徑

16e5803a-2dec-11ec-aa30-dac502259ad0.png

6.芯片配置

本文中使用R7FA2L1AB2DFL來進(jìn)行演示。

1727724c-2dec-11ec-aa30-dac502259ad0.png

7

7.工程模板選擇

17698984-2dec-11ec-aa30-dac502259ad0.png

8.ADC配置

點(diǎn)擊Stacks->New Stack->Driver->Analog -> ADC Driver on r_adc。

179ca7e2-2dec-11ec-aa30-dac502259ad0.png

9.ADC屬性配置

17d0650a-2dec-11ec-aa30-dac502259ad0.png

180922dc-2dec-11ec-aa30-dac502259ad0.png

10.R_ADC_Open()函數(shù)原型

18466f48-2dec-11ec-aa30-dac502259ad0.png

故可以用R_ADC_Open() 函數(shù)進(jìn)行配置,開啟和初始化ADC模式。

	/* Initializes the module. */
    err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
    /* Handle any errors. This function should be defined by the user. */
    assert(FSP_SUCCESS == err);

11.R_ADC_ScanCfg()函數(shù)原型

18840c0e-2dec-11ec-aa30-dac502259ad0.png

配置ADC掃描參數(shù),賦能ADC通道。在此函數(shù)中設(shè)置通道特定設(shè)置。


	 /* Enable channels. */
    err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
    assert(FSP_SUCCESS == err);

12.R_ADC_ScanStart()函數(shù)原型

18bef292-2dec-11ec-aa30-dac502259ad0.png

啟動(dòng)掃描,若設(shè)置為單次掃描,沒掃描完一次都需要重新開啟。

		/* Enable scan triggering from ELC events. */
        (void) R_ADC_ScanStart(&g_adc0_ctrl);

故可以用R_IOPORT_PinRead()函數(shù)進(jìn)行讀取IO口電平狀態(tài),該函數(shù)只能讀取一個(gè)端口的電平。

bsp_io_level_t p_port_value_port_151;
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_15, &p_port_value_port_151);

13. 回調(diào)函數(shù)adc_callback ()

每次掃描完之后都會(huì)進(jìn)入回調(diào)函數(shù)中。

volatile bool scan_complete_flag = false;
void adc_callback (adc_callback_args_t * p_args)
{
    FSP_PARAMETER_NOT_USED(p_args);
    scan_complete_flag = true;
}

故需要在掃描時(shí)候在主程序中等待其掃描完畢。


	    scan_complete_flag = false;
        while (!scan_complete_flag)
        {
            /* Wait for callback to set flag. */
        }

14.R_ADC_Read()函數(shù)原型

18ed9a02-2dec-11ec-aa30-dac502259ad0.png

讀取單個(gè)通道的ADC值。

		err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_data1);
        assert(FSP_SUCCESS == err);

        a1=(double)(adc_data1/4095.0)*3.3;

15.多通道設(shè)置

以讀取通道0(P000)和通道1 (P010)為例子,通道配置如下。

191798ca-2dec-11ec-aa30-dac502259ad0.png

通道配置要注意通道數(shù),配置錯(cuò)誤可能會(huì)讀取錯(cuò)誤。

195862c4-2dec-11ec-aa30-dac502259ad0.png

16.代碼

volatile bool scan_complete_flag = false;
void adc_callback (adc_callback_args_t * p_args)
{
    FSP_PARAMETER_NOT_USED(p_args);
    scan_complete_flag = true;
} 
void hal_entry(void)
{
    /* TODO: add your own code here */

    fsp_err_t err = FSP_SUCCESS;
    /* Initializes the module. */
    err = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
    /* Handle any errors. This function should be defined by the user. */
    assert(FSP_SUCCESS == err);
 	/* Enable channels. */
    err = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
    assert(FSP_SUCCESS == err);

    double a0,a5;
    uint16_t adc_data1=0;
    uint16_t adc_data2=0;
    while(1)
    {

    /* Enable scan triggering from ELC events. */
           (void) R_ADC_ScanStart(&g_adc0_ctrl);
           scan_complete_flag = false;
           while (!scan_complete_flag)
           {
               /* Wait for callback to set flag. */
           }

           err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_0, &adc_data1);
           assert(FSP_SUCCESS == err);
           a0=(adc_data1/4095.0)*3.3;

           err =R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_5, &adc_data1);
           assert(FSP_SUCCESS == err);
           a5=(adc_data1/4095.0)*3.3;

           R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);
    }

	#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
	#endif
}

17.視頻教學(xué)

視頻教學(xué)稍后會(huì)在B站官方賬號(hào)更新,請(qǐng)留意B站視頻更新~

198d40e8-2dec-11ec-aa30-dac502259ad0.jpg

原文標(biāo)題:瑞薩e2studio----ADC通過單次掃描多通道方式采樣

文章出處:【微信公眾號(hào):RA生態(tài)工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17148

    瀏覽量

    351186
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9094

    瀏覽量

    367540
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19123

    瀏覽量

    305150
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPB-RA6E2 評(píng)估板入門學(xué)習(xí)

    FPB-RA6E2 評(píng)估板入門學(xué)習(xí)
    的頭像 發(fā)表于 12-11 09:22 ?187次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b> FPB-RA6<b class='flag-5'>E2</b> 評(píng)估板入門學(xué)習(xí)

    e2studio(1)----芯片之搭建FSP環(huán)境

    視頻教學(xué) 樣品申請(qǐng) 請(qǐng)勿添加外鏈 e2studio軟件 e2studio的集成開發(fā)環(huán)境,F(xiàn)SP 提供了眾多可提高效率的工具,用于開發(fā)針對(duì)
    發(fā)表于 09-30 15:28

    如何使用e2studio對(duì)單片機(jī)進(jìn)行GPIO輸出

    本篇文章主要介紹如何使用e2studio對(duì)單片機(jī)進(jìn)行GPIO輸出,并以LED顯示。
    的頭像 發(fā)表于 07-30 16:12 ?664次閱讀
    如何使用<b class='flag-5'>e2studio</b>對(duì)<b class='flag-5'>瑞</b><b class='flag-5'>薩</b>單片機(jī)進(jìn)行GPIO輸出

    max11261通道模式自動(dòng)掃描,采樣率平均每個(gè)通道只能到200hz嗎?

    Max11261 使用mode1,連續(xù)采樣,采樣率能達(dá)到4K 但是使用通道模式時(shí),為了連續(xù)采樣,使用了模式4(只有模式4能夠自動(dòng)連續(xù)
    發(fā)表于 07-23 06:47

    【GD32F303紅楓派開發(fā)板使用手冊(cè)】第十二講 ADC-雙軸按鍵搖桿通道循環(huán)采樣實(shí)驗(yàn)

    本實(shí)驗(yàn)是通過ADC規(guī)則組通道循環(huán)采樣方式實(shí)現(xiàn)雙軸按鍵搖桿傳感器x和y軸電壓值的讀取,
    的頭像 發(fā)表于 06-11 09:40 ?638次閱讀
    【GD32F303紅楓派開發(fā)板使用手冊(cè)】第十二講   <b class='flag-5'>ADC</b>-雙軸按鍵搖桿<b class='flag-5'>多</b><b class='flag-5'>通道</b>循環(huán)<b class='flag-5'>采樣</b>實(shí)驗(yàn)

    【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第八講 ADC-規(guī)則組通道采樣實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ADC的簡(jiǎn)介 GD32FH757 ADC工作原理 DMA和DMAMUX的原理 規(guī)則組通道循環(huán)
    的頭像 發(fā)表于 05-14 09:39 ?634次閱讀
    【GD32H757Z海棠派開發(fā)板使用手冊(cè)】第八講 <b class='flag-5'>ADC</b>-規(guī)則組<b class='flag-5'>多</b><b class='flag-5'>通道</b><b class='flag-5'>采樣</b>實(shí)驗(yàn)

    stm8的ADC工作在掃描模式下時(shí),如果順次掃描通道1,通道2,通道3,轉(zhuǎn)換完成后的數(shù)據(jù)分別存在哪個(gè)數(shù)據(jù)緩存器中呢?

    stm8的adc工作在掃描模式下時(shí),如果順次掃描通道1,
    發(fā)表于 05-13 06:52

    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第八講 ADC-規(guī)則組通道采樣實(shí)驗(yàn)

    通過本實(shí)驗(yàn)主要學(xué)習(xí)以下內(nèi)容: ?ADC的簡(jiǎn)介 ?GD32F470 ADC工作原理 ?DMA原理 ?規(guī)則組通道循環(huán)
    的頭像 發(fā)表于 05-12 10:00 ?770次閱讀
    【GD32F470紫藤派開發(fā)板使用手冊(cè)】第八講 <b class='flag-5'>ADC</b>-規(guī)則組<b class='flag-5'>多</b><b class='flag-5'>通道</b><b class='flag-5'>采樣</b>實(shí)驗(yàn)

    STM32F0 ADC通道轉(zhuǎn)換,最后一個(gè)通道的EOC不置位是為什么?

    STM32F030 ADC采樣序列中包括IN0,IN1,IN2三個(gè)通道,采用轉(zhuǎn)換模式,軟件觸
    發(fā)表于 04-16 06:34

    STM32F030K6T6 ADC連續(xù)采樣通道切換是否會(huì)有延時(shí)?

    STM32F030K6T6這款芯片只有一個(gè)獨(dú)立的ADC。在我的設(shè)計(jì)中,ADC時(shí)鐘設(shè)置為12MHz,雙通道采樣,來回切換(設(shè)想中是每個(gè)通道
    發(fā)表于 04-01 07:53

    STM32F205利用DMA實(shí)現(xiàn)通道ADC采樣,但是每啟動(dòng)一轉(zhuǎn)換才能更新一結(jié)果是為什么?

    1、ADC配置采樣12個(gè)規(guī)則通道,采用、掃描模式,允許DMA,配置每次轉(zhuǎn)換結(jié)束都有DMA r
    發(fā)表于 03-27 06:37

    關(guān)于STM32U575 ADC通道采樣配置問題求解

    倍; 2.通道采樣是否可以如上面代碼所示,在ADC
    發(fā)表于 03-26 06:25

    GD32 ADC規(guī)則組通道采樣,數(shù)據(jù)發(fā)生錯(cuò)位?

    我們知道,使用ADC規(guī)則組(常規(guī)組)通道采樣時(shí),必須要配合DMA使用,但有的小伙伴遇到這種應(yīng)用下數(shù)據(jù)錯(cuò)位的情況,比如預(yù)設(shè)的轉(zhuǎn)換順序是通道0
    的頭像 發(fā)表于 03-14 09:58 ?2134次閱讀
    GD32 <b class='flag-5'>ADC</b>規(guī)則組<b class='flag-5'>多</b><b class='flag-5'>通道</b><b class='flag-5'>采樣</b>,數(shù)據(jù)發(fā)生錯(cuò)位?

    STM32的ADC采樣通道ADC采樣硬件電路圖

    每一個(gè)ADC通道都對(duì)應(yīng)一個(gè)GPIO引腳,看圖中的ADC123_IN10,表示這個(gè)引腳(PC0)可以配置為ADC1的通道10,或者是
    發(fā)表于 03-01 12:34 ?7565次閱讀
    STM32的<b class='flag-5'>ADC</b><b class='flag-5'>采樣</b>與<b class='flag-5'>多</b><b class='flag-5'>通道</b><b class='flag-5'>ADC</b><b class='flag-5'>采樣</b>硬件電路圖

    44個(gè)ADC通道配置為隊(duì)列掃描,為什么無法更快的采樣?

    我有 44 個(gè) ADC 通道配置為隊(duì)列掃描。 我使用給定的函數(shù)初始化它們,但是盡管我選擇了采樣時(shí)間為 1e-7,但我無法讓它們更快地
    發(fā)表于 01-19 07:18