欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

小凌派-RK2206OpenHarmony開發(fā)板例程系列之一:ADC按鍵案例

福州市凌睿智捷電子有限公司 ? 2022-04-11 13:59 ? 次閱讀

一、簡介
嵌入式系統(tǒng)產(chǎn)品開發(fā)中,按鍵板的設(shè)計(jì)是最基本的,也是項(xiàng)目評估階段必須要考慮的問題。其實(shí)現(xiàn)方式有很多種,具體使用那一種就需要結(jié)合可用IO數(shù)量,并綜合考慮成本,做出最終選擇。傳統(tǒng)的按鍵檢測方法是一個(gè)按鍵對應(yīng)一個(gè)GPIO口,進(jìn)行高低電平輸入檢測。可是在GPIO口緊缺的情況下,不得不需要一個(gè)有效的解決方案,其中ADC檢測實(shí)現(xiàn)按鍵功能是一種相對有效的解決方案。
ADC檢測實(shí)現(xiàn)簡單實(shí)用的按鍵方法:僅需要一個(gè)ADC和若干個(gè)電阻就可實(shí)現(xiàn)多個(gè)按鍵的輸入檢測。工作原理:按下按鍵時(shí),通過電阻分壓得到不同的電壓值,ADC采集在各個(gè)范圍內(nèi)的值來判定是哪個(gè)按鍵按下。
本文采用RK2206芯片自帶的逐次逼近寄存器模數(shù)轉(zhuǎn)換器(Successive-Approximation Analog to Digital Converter),是一種常用的A/D轉(zhuǎn)換結(jié)構(gòu),其較低的功耗表現(xiàn),不錯(cuò)的轉(zhuǎn)換速率,在有低功耗要求(可穿戴設(shè)備、物聯(lián)網(wǎng))的數(shù)據(jù)采集場景下廣泛應(yīng)用。
二、硬件電路設(shè)計(jì)
ADC檢測實(shí)現(xiàn)簡單實(shí)用的按鍵方法:僅需要一個(gè)ADC和若干個(gè)電阻就可實(shí)現(xiàn)多個(gè)按鍵的輸入檢測。工作原理:按下按鍵時(shí),通過電阻分壓得到不同的電壓值,ADC采集在各個(gè)范圍內(nèi)的值來判定是哪個(gè)按鍵按下。
模塊整體硬件電路如下圖所示,電路中包含了1根ADC引腳和4個(gè)按鍵。

凌智電子:小凌派-RK2206鴻蒙開發(fā)板例程系列之一ADC按鍵案例-OpenHarmony技術(shù)社區(qū)

圖1 硬件電路圖

其中,4個(gè)按鍵分別連接不同的電阻。當(dāng)按鍵按下時(shí),USER_KEY_ADC檢測到不同的電壓。具體如下所示:

表1 按鍵對應(yīng)電壓表

凌智電子:小凌派-RK2206鴻蒙開發(fā)板例程系列之一ADC按鍵案例-OpenHarmony技術(shù)社區(qū)

USER_KEY_ADC引腳連接到RK2206芯片的GPIO0_C5,如下圖所示:

凌智電子:小凌派-RK2206鴻蒙開發(fā)板例程系列之一ADC按鍵案例-OpenHarmony技術(shù)社區(qū)

圖2 USER_KEY_ADC引腳的硬件電路圖

三、ADC接口
ADC相應(yīng)接口頭文件在:
/device/rockchip/rk2206/adapter/include/lz_hardware.h
RK2206芯片提供以下兩大類接口:
(1)初始化、銷毀ADC;
(2)ADC讀操作。
具體接口如PPT所示。以下我們詳細(xì)講解這些接口。
(1)LzSaradcInit
該函數(shù)主要功能是SARADC設(shè)備初始化。
int LzSaradcInit(void);
成功返回LZ_HARDWARE_SUCCESS, 其余為失敗。
(2)LzSaradcDeinit
該函數(shù)主要功能是SARADC設(shè)備釋放。
int LzSaradcDeinit(void);
成功返回LZ_HARDWARE_SUCCESS, 其余為失敗。
(3)LzSaradcReadValue
該函數(shù)主要功能是SARADC設(shè)備讀取。
int LzSaradcReadValue(unsigned int chn, unsigned int *val);
參數(shù)chn:ADC通道id;
參數(shù)val:讀取值。
成功返回LZ_HARDWARE_SUCCESS, 其余為失敗。
四、程序設(shè)計(jì)
ADC按鍵程序每1秒通過GPIO0_PC5讀取一次按鍵電壓,通過電壓數(shù)值判斷當(dāng)前是哪個(gè)按鍵被按下,并打印出該按鍵名稱。
如圖所示為ADC按鍵主程序流程圖,開機(jī)LiteOS系統(tǒng)初始化后,進(jìn)入主程序先初始化ADC設(shè)備。程序進(jìn)入主循環(huán),1秒獲取一次ADC采樣電壓,判斷:
(1)采樣電壓在0.00~0.11V之間,則當(dāng)前是按下Key1,打印Key1;
(2)采樣電壓在0.45~0.65V之間,則當(dāng)前是按下Key2,打印Key2;
(3)采樣電壓在0.90~1.1V之間,則當(dāng)前是按下Key3,打印Key3;
(4)采樣電壓在1.55~1.75V之間,則當(dāng)前是按下Key4,打印Key4;
(5)當(dāng)前無按鍵。

凌智電子:小凌派-RK2206鴻蒙開發(fā)板例程系列之一ADC按鍵案例-OpenHarmony技術(shù)社區(qū)

圖3主程序流程圖

void adc_process()
{
    float voltage;

    /* 初始化adc設(shè)備 */
    adc_dev_init();
    
    while (1)
    {
        printf("***************Adc Example*************\r\n");
        /*獲取電壓值*/
        voltage = adc_get_voltage();
        printf("vlt:%.3fV\n", voltage);

        if ((0.11 >= voltage) && (voltage >= 0.00))
        {
            printf("\tKey1\n");
        }
        else if ((0.65 >= voltage) && (voltage >= 0.45))
        {
            printf("\tKey2\n");
        }
        else if ((1.1 >= voltage) && (voltage >= 0.9))
        {
            printf("\tKey3\n");
        }
        else if ((1.75 >= voltage) && (voltage >= 1.55))
        {
            printf("\tKey4\n");
        }

        /* 睡眠1秒 */
        LOS_Msleep(1000);
    }
}

ADC初始化程序主要分為ADC初始化和配置ADC參考電壓為外部電壓兩部分:

static unsigned int adc_dev_init()
{
    unsigned int ret = 0;
    uint32_t *pGrfSocCon29 = (uint32_t *)(0x41050000U + 0x274U);
    uint32_t ulValue;

    ret = DevIoInit(m_adcKey);
    if (ret != LZ_HARDWARE_SUCCESS)
    {
        printf("%s, %s, %d: ADC Key IO Init fail\n", __FILE__, __func__, __LINE__);
        return __LINE__;
    }
    ret = LzSaradcInit();
    if (ret != LZ_HARDWARE_SUCCESS) {
        printf("%s, %s, %d: ADC Init fail\n", __FILE__, __func__, __LINE__);
        return __LINE__;
}

    /* 設(shè)置saradc的電壓信號,選擇AVDD */
    ulValue = *pGrfSocCon29;
    ulValue &= ~(0x1 << 4);
    ulValue |= ((0x1 << 4) << 16);
    *pGrfSocCon29 = ulValue;
    
    return 0;
}

RK2206芯片采用一種逐次逼近寄存器型模數(shù)轉(zhuǎn)換器(Successive-Approximation Analog to Digital Converter),是一種常用的A/D轉(zhuǎn)換結(jié)構(gòu),其較低的功耗表現(xiàn),還不錯(cuò)的轉(zhuǎn)換速率,在有低功耗要求(可穿戴設(shè)備、物聯(lián)網(wǎng))的數(shù)據(jù)采集場景下廣泛應(yīng)用。該ADC采用10bit采樣,最高電壓為3.3V。簡而言之,ADC采樣讀取的數(shù)據(jù),bit[0~9]有效,且最高數(shù)值0x400(即1024)代表實(shí)際電壓差3.3V,也就是說1個(gè)數(shù)值等于3.3V / 1024 = 0.003222V。

static float adc_get_voltage()
{
    unsigned int ret = LZ_HARDWARE_SUCCESS;
    unsigned int data = 0;

    ret = LzSaradcReadValue(ADC_CHANNEL, &data);
    if (ret != LZ_HARDWARE_SUCCESS)
    {
        printf("%s, %s, %d: ADC Read Fail\n", __FILE__, __func__, __LINE__);
        return 0.0;
}

return (float)(data * 3.3 / 1024.0);
}

五、編譯過程
1、打開sdk下面路徑的文件
/vendor/lockzhiner/rk2206/samples/b1_adc/adc_example.c
注意:Gitee上的ADC案例為通用案例,請大家根據(jù)上述的需求修改相關(guān)源代碼。
2、修改編譯腳本
修改 vendor/lockzhiner/rk2206/sample 路徑下 BUILD.gn 文件,指定 adc_example 參與編譯。
“./b0_adc:adc_example”,
修改 device/lockzhiner/rk2206/sdk_liteos 路徑下 Makefile 文件,添加 -ladc_example 參與編譯。
hardware_LIBS = -lhal_iothardware -lhardware -ladc_example
3、編譯固件

hb set -root .
hb set
hb build -f

4、燒寫固件
5、通過串口查看結(jié)果
運(yùn)行結(jié)果

***************Adc Example*************
vlt:3.297V
***************Adc Example*************
vlt:3.297V
***************Adc Example*************
vlt:3.297V
***************Adc Example*************
vlt:3.297V
***************Adc Example*************
vlt:3.297V
***************Adc Example*************
vlt:3.297V
……

好了,今天的課程就到這里,更多技術(shù)干貨請關(guān)注福州市凌睿智捷電子有限公司(凌智電子),持續(xù)更新中…

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

    關(guān)注

    18

    文章

    1035

    瀏覽量

    47691
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3744

    瀏覽量

    16542
  • 凌智電子
    +關(guān)注

    關(guān)注

    1

    文章

    25

    瀏覽量

    1157
收藏 人收藏

    評論

    相關(guān)推薦

    OpenHarmony源碼編譯后燒錄鏡像教程,RK3566鴻蒙開發(fā)板演示

    本文介紹瑞芯微主板/開發(fā)板編譯OpenHarmony源碼后燒錄鏡像的教程,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示。搭載了瑞芯微RK3566四核處理器,樹莓
    的頭像 發(fā)表于 12-30 10:08 ?164次閱讀
    <b class='flag-5'>OpenHarmony</b>源碼編譯后燒錄鏡像教程,<b class='flag-5'>RK</b>3566鴻蒙<b class='flag-5'>開發(fā)板</b>演示

    OpenHarmony怎么修改DPI密度值?觸覺智能RK3566鴻蒙開發(fā)板演示

    開源鴻蒙OpenHarmony系統(tǒng)下,修改DPI密度值的方法,觸覺智能Purple Pi OH鴻蒙開發(fā)板演示,搭載了瑞芯微RK3566四核處理器,Laval鴻蒙社區(qū)推薦開發(fā)板,已適配全
    的頭像 發(fā)表于 12-24 11:46 ?256次閱讀
    <b class='flag-5'>OpenHarmony</b>怎么修改DPI密度值?觸覺智能<b class='flag-5'>RK</b>3566鴻蒙<b class='flag-5'>開發(fā)板</b>演示

    OpenHarmony開源項(xiàng)目榮獲本期Gitee官方推薦

    近日,我司OpenHarmony開源項(xiàng)目榮獲本期Gitee官方推薦。本期Gitee官方推薦不僅是對
    的頭像 發(fā)表于 11-20 01:04 ?411次閱讀
    <b class='flag-5'>凌</b>蒙<b class='flag-5'>派</b><b class='flag-5'>OpenHarmony</b>開源項(xiàng)目榮獲本期Gitee官方推薦

    【迅為】瑞芯微RK3588開發(fā)板RK3568開發(fā)板區(qū)別及優(yōu)勢

    RK3568開發(fā)板
    的頭像 發(fā)表于 11-18 14:19 ?571次閱讀
    【迅為】瑞芯微<b class='flag-5'>RK</b>3588<b class='flag-5'>開發(fā)板</b><b class='flag-5'>RK</b>3568<b class='flag-5'>開發(fā)板</b>區(qū)別及優(yōu)勢

    【「OpenHarmony開發(fā)與實(shí)踐 | 基于紅莓RK2206開發(fā)板」閱讀體驗(yàn)】+初體驗(yàn)1

    愛好者沒有bug,「OpenHarmony開發(fā)與實(shí)踐 | 基于紅莓RK2206開發(fā)板」大賣吧!哦對了 你們的開發(fā)板是怎么準(zhǔn)備的呢?【小
    發(fā)表于 09-18 18:30

    【「OpenHarmony開發(fā)與實(shí)踐 | 基于紅莓RK2206開發(fā)板」閱讀體驗(yàn)】+初體驗(yàn)2連發(fā)發(fā)

    啥也不說先上圖 對于《OpenHarmony開發(fā)與實(shí)踐 | 基于紅莓RK2206開發(fā)板》這本書的熱愛,簡直就像夏日里的股清泉,讓人忍不
    發(fā)表于 09-18 18:01

    基于ArkTS語言的OpenHarmony APP應(yīng)用開發(fā):HelloOpenharmony

    1、程序簡介該程序是基于OpenHarmony標(biāo)準(zhǔn)系統(tǒng)編寫的UI應(yīng)用類:HelloOpenHarmony。本案例是基于API9接口開發(fā)。本案例已在OpenHarmony
    的頭像 發(fā)表于 09-15 08:09 ?474次閱讀
    基于ArkTS語言的<b class='flag-5'>OpenHarmony</b> APP應(yīng)用<b class='flag-5'>開發(fā)</b>:Hello<b class='flag-5'>Openharmony</b>

    瑞芯微RK3568鴻蒙開發(fā)板OpenHarmony系統(tǒng)修改cfg文件權(quán)限方法

    本文適用于OpenHarmony開源鴻蒙系統(tǒng)修改cfg文件權(quán)限方法,深圳觸覺智能研發(fā)的RK3566、RK3568、RK3588等開發(fā)板、主板
    的頭像 發(fā)表于 09-11 13:26 ?1073次閱讀
    瑞芯微<b class='flag-5'>RK</b>3568鴻蒙<b class='flag-5'>開發(fā)板</b><b class='flag-5'>OpenHarmony</b>系統(tǒng)修改cfg文件權(quán)限方法

    基于OpenHarmony輕量級操作系統(tǒng)實(shí)現(xiàn)RK2206 WiFi-AP模式通信開發(fā)案例

    實(shí)驗(yàn)內(nèi)容本示例將演示如何在小-RK2206開發(fā)板上使用WiFi-AP模式(即將RK2206作為WiFi路由器),實(shí)現(xiàn)與PC端進(jìn)行TCP通
    的頭像 發(fā)表于 08-08 08:23 ?493次閱讀
    基于<b class='flag-5'>OpenHarmony</b>輕量級操作系統(tǒng)實(shí)現(xiàn)<b class='flag-5'>RK2206</b> WiFi-AP模式通信<b class='flag-5'>開發(fā)</b>案例

    基于OpenHarmony輕量級操作系統(tǒng)實(shí)現(xiàn)RK2206 WiFi-AP模式通信開發(fā)案例

    實(shí)驗(yàn)內(nèi)容 本示例將演示如何在小-RK2206開發(fā)板上使用WiFi-AP模式(即將RK2206作為WiFi路由器),實(shí)現(xiàn)與PC端進(jìn)行TCP
    發(fā)表于 08-07 15:50

    基于Openharmony輕量級操作系統(tǒng)的分布式數(shù)據(jù)管理開發(fā)案例

    實(shí)驗(yàn)內(nèi)容本例程演示如何在小-RK2206開發(fā)板上使用OpenHarmony輕量級操作系統(tǒng)進(jìn)行
    的頭像 發(fā)表于 08-07 08:23 ?1050次閱讀
    基于<b class='flag-5'>Openharmony</b>輕量級操作系統(tǒng)的分布式數(shù)據(jù)管理<b class='flag-5'>開發(fā)</b>案例

    鴻蒙OpenHarmony南向/北向快速開發(fā)教程-迅為RK3568開發(fā)板

    大家期待已久的迅為RK3568開發(fā)板終于迎來了鴻蒙4.1系統(tǒng)的強(qiáng)勢支持!想知道如何實(shí)現(xiàn)快速開發(fā)學(xué)習(xí)嗎?跟著我們起來探索吧! 迅為RK356
    發(fā)表于 07-23 10:44

    名單公布!【書籍評測活動(dòng)NO.38】OpenHarmony開發(fā)與實(shí)踐 | 基于紅莓RK2206開發(fā)板

    圖文并茂。 4、試讀報(bào)告發(fā)表在電子發(fā)燒友論壇>>社區(qū)活動(dòng)專版標(biāo)題名稱必須包含【「OpenHarmony開發(fā)與實(shí)踐 | 基于紅莓RK2206開發(fā)板」閱讀體驗(yàn)】+自擬標(biāo)題
    發(fā)表于 07-19 10:57

    【七】Purple Pi OH開發(fā)板帶你7天入門OpenHarmony!

    OpenHarmonyOS。.PurplePiOH開發(fā)板的使用體驗(yàn)1.1USB首先,讓我們談?wù)凱urplePiOH開發(fā)板。作為款與樹莓
    的頭像 發(fā)表于 03-22 08:31 ?471次閱讀
    【七】Purple Pi OH<b class='flag-5'>開發(fā)板</b>帶你7天入門<b class='flag-5'>OpenHarmony</b>!

    OpenHarmony鴻蒙實(shí)戰(zhàn)】在RK3399開發(fā)板實(shí)現(xiàn)智能門禁人臉識別

    基于RK3399開發(fā)板,使用OpenHarmony3.0-LTS開發(fā)的應(yīng)用。通過定時(shí)獲取攝像頭數(shù)據(jù),實(shí)現(xiàn)人臉識別比對等功能。
    的頭像 發(fā)表于 03-20 17:38 ?1544次閱讀
    【<b class='flag-5'>OpenHarmony</b>鴻蒙實(shí)戰(zhàn)】在<b class='flag-5'>RK</b>3399<b class='flag-5'>開發(fā)板</b>實(shí)現(xiàn)智能門禁人臉識別