chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

小凌派-RK2206開(kāi)發(fā)板:智慧車(chē)載

福州市凌睿智捷電子有限公司 ? 2022-08-03 10:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、簡(jiǎn)介

智慧車(chē)載模塊是一款集超聲波測(cè)距以及報(bào)警電路的模塊。模塊可提供2cm-300cm的非接觸式距離感測(cè)功能,測(cè)距精度可達(dá)2cm,能將測(cè)量距離轉(zhuǎn)化為具有一定寬度的脈沖輸出;聲光報(bào)警電路由外部控制,當(dāng)外部處理器判斷距離達(dá)到預(yù)警設(shè)定值時(shí),控制報(bào)警電路工作。

智慧車(chē)載模塊目前只是一個(gè)簡(jiǎn)單的車(chē)距測(cè)試模塊,隨著它的功能逐步完善,其發(fā)展的方向?qū)⒏訉拸V。比如:智慧車(chē)載模塊可完善成為智能車(chē)載資通訊電子系統(tǒng),車(chē)輛自動(dòng)/輔助駕駛系統(tǒng)、駕駛?cè)祟尽⒎雷差A(yù)警、車(chē)載自我診斷系統(tǒng)(On Board Diagnostics,OBD)、胎壓檢測(cè)裝置(TPMS)、車(chē)道偏離警示系統(tǒng)(LWDS)、前方碰撞預(yù)警系統(tǒng)(FCWS)及后方碰撞預(yù)警系統(tǒng)等智慧車(chē)(Smart Car)相關(guān)應(yīng)用。

本文基于瑞芯微RK2206芯片 + LiteOS操作系統(tǒng),通過(guò)gpio控制智慧車(chē)載E53模塊,實(shí)現(xiàn)智慧車(chē)載模塊和開(kāi)發(fā)板的互相通信功能。

二、硬件電路設(shè)計(jì)

1.整體硬件電路設(shè)計(jì)

智慧車(chē)載模塊硬件電路如圖1所示,電路中包含了E53接口連接器,EEPROM存儲(chǔ)器、超聲波處理電路和聲光報(bào)警電路。

ff4bcf64-1059-11ed-9ade-dac502259ad0.png

圖1 硬件電路圖

超聲波測(cè)距芯片,選用CS-100A,其是一款工業(yè)級(jí)超聲波測(cè)距芯片,內(nèi)部集成超聲波發(fā)射電路,超聲波接收電路,數(shù)字處理電路等,單片即可完成超聲波測(cè)距,測(cè)距結(jié)果通過(guò)脈寬的方式進(jìn)行輸出。

CS100A配合使用40KHz的開(kāi)放式超聲波探頭,在超聲波發(fā)射端并聯(lián)一個(gè)電阻R2到地和8MHz的晶振,即可實(shí)現(xiàn)高性能的測(cè)距功能,電阻R2的大小決定了超聲波測(cè)量的距離。

三極管Q1為NPN管,基極為高電平時(shí),三極管才能夠?qū)?,蜂鳴器需PWM波驅(qū)動(dòng),人耳可識(shí)別的頻率范圍為20Hz-20KHz,故PWM頻率需在該范圍內(nèi),我們默認(rèn)使用3KHz的PWM波驅(qū)動(dòng)。

小凌派-RK2206開(kāi)發(fā)板與智慧車(chē)載模塊均帶有防呆設(shè)計(jì),故很容易區(qū)分安裝方向,直接將模塊插入到開(kāi)發(fā)板的E53母座接口上即可,安裝如圖2所示。

ff7e9ed0-1059-11ed-9ade-dac502259ad0.png

圖2 硬件連接圖

2.智慧車(chē)載電路設(shè)計(jì)

硬件資源圖如下所示:

ffcdbfec-1059-11ed-9ade-dac502259ad0.png

引腳名稱(chēng)開(kāi)發(fā)者可在硬件資源圖中查看,也可在智慧車(chē)載模塊背面查看。

引腳名稱(chēng)功能描述
ECHO測(cè)距脈寬輸出,高電平的寬度表示超聲波往返時(shí)間差
TRIG測(cè)距出發(fā),輸入10us的高電平脈沖,E53模塊開(kāi)始測(cè)距
BUZZER蜂鳴器控制
LED_WarningLED控制線(xiàn),低電平有效
I2C_SCLI2C時(shí)鐘信號(hào)線(xiàn)
I2C_SDAI2C數(shù)據(jù)信號(hào)線(xiàn)
GND電源接地引腳
3V33.3V電源輸入引腳
GND電源接地引腳


三、程序設(shè)計(jì)

本實(shí)驗(yàn)使用智慧車(chē)載模塊模擬智慧車(chē)載測(cè)距應(yīng)用。超聲波模塊發(fā)送并接收信號(hào),通過(guò)發(fā)射和接收信號(hào)的時(shí)間差來(lái)計(jì)算實(shí)際測(cè)量的距離;當(dāng)測(cè)量的距離小于預(yù)先設(shè)置的閾值時(shí),驅(qū)動(dòng)蜂鳴器報(bào)警,點(diǎn)亮告警LED燈。

1. 主程序設(shè)計(jì)

如圖6.3.3所示,為智慧車(chē)載主程序流程圖,開(kāi)機(jī)LiteOS系統(tǒng)初始化后,進(jìn)入主程序先初始化智慧車(chē)載模塊。程序進(jìn)入主循環(huán),采用輪詢(xún)的方式,2秒測(cè)量一次距離,當(dāng)測(cè)量到的距離小于等于20厘米時(shí),控制蜂鳴器響,告警燈亮起;當(dāng)測(cè)量到的距離大于20厘米時(shí),蜂鳴器不響應(yīng),告警燈熄滅。


002b8816-105a-11ed-9ade-dac502259ad0.png

圖6.3.3 主程序流程圖

{
unsigned int ret = 0;
/* 每個(gè)周期為200usec,占空比為100usec */
unsigned int duty_ns = 500000;
unsigned int cycle_ns = 1000000;
float distance_cm = 0.0;
/*智慧車(chē)載模塊初始化*/
e53_iv01_init();

while (1)
{
/*獲取智慧車(chē)載模塊測(cè)量的距離*/
ret = e53_iv01_get_distance(&distance_cm);
if (ret == 1)
{
printf("distance cm: %f\n", distance_cm);
/*距離小于等于20cm,開(kāi)啟蜂鳴器告警,點(diǎn)亮LED告警燈;
否則,關(guān)閉蜂鳴器,熄滅LED告警燈*/
if (distance_cm <= 20.0)
{
e53_iv01_buzzer_set(1, duty_ns, cycle_ns);
e53_iv01_led_warning_set(1);
}
else
{
e53_iv01_buzzer_set(0, duty_ns, cycle_ns);
e53_iv01_led_warning_set(0);
}
}
LOS_Msleep(2000);
}
}

2. 初始化程序設(shè)計(jì)

智慧車(chē)載初始化程序主要分為IO初始化和PWM設(shè)備初始化兩部分。

IO初始化程序主要設(shè)置GPIO0_PC4為輸出模式,作為超聲波測(cè)距Trig控制管腳;設(shè)置GPIO0_PA5為輸出模式,作為L(zhǎng)ED_WARNING告警燈控制管腳;設(shè)置GPIO_PA2為輸入模式,作為超聲波測(cè)距Echo控制管腳。

{ /* Trig引腳設(shè)置為GPIO輸出模式 */ PinctrlSet(E53_IV01_TRIG_GPIO, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP); LzGpioInit(E53_IV01_TRIG_GPIO); LzGpioSetDir(E53_IV01_TRIG_GPIO, LZGPIO_DIR_OUT); E53_IV01_TRIG_Clr(); /* LED告警燈引腳設(shè)置為GPIO輸出模式 */ PinctrlSet(E53_IV01_LED_WARNING_GPIO, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP); LzGpioInit(E53_IV01_LED_WARNING_GPIO); LzGpioSetDir(E53_IV01_LED_WARNING_GPIO, LZGPIO_DIR_OUT);e53_iv01_led_warning_set(0);

/* Echo引腳設(shè)置為GPIO輸入模式 */ PinctrlSet(E53_IV01_ECHO0_GPIO, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP); LzGpioInit(E53_IV01_ECHO0_GPIO); LzGpioSetDir(E53_IV01_ECHO0_GPIO, LZGPIO_DIR_IN);

}

初始化PWM7設(shè)備,使用PWM7作為蜂鳴器的控制源。

{ /* 初始化pwm */ PinctrlSet(E53_IV01_BUZZER_GPIO, MUX_FUNC2, PULL_DOWN, DRIVE_KEEP); PwmIoInit(m_buzzer_config); LzPwmInit(E53_IV01_PWM_IO); return 0;}

3. 距離測(cè)量程序設(shè)計(jì)

發(fā)送至少10us的高電平給智慧車(chē)載,觸發(fā)其開(kāi)始工作;等待200ms,整個(gè)測(cè)距最長(zhǎng)為66ms,獲取Echo管腳的電平,當(dāng)高電平時(shí)獲取一個(gè)時(shí)間戳,當(dāng)?shù)碗娖綍r(shí)再獲取一個(gè)時(shí)間戳,兩個(gè)時(shí)間戳的差值即為超聲波測(cè)距所產(chǎn)生的時(shí)間。

{ uint8_t value = 0; m_echo_info.flag = EECHO_FLAG_CAPTURE_RISE;

while (1) { LzGpioGetVal(E53_IV01_ECHO0_GPIO, &value); if (value == LZGPIO_LEVEL_HIGH) { m_echo_info.time_rise = *m_ptimer5_current_value_low; m_echo_info.flag = EECHO_FLAG_CAPTURE_FALL; break; } }

while (1) { LzGpioGetVal(E53_IV01_ECHO0_GPIO, &value); if (value == LZGPIO_LEVEL_LOW) { m_echo_info.time_fall = *m_ptimer5_current_value_low; m_echo_info.flag = EECHO_FLAG_CAPTURE_SUCCESS; break; } }

/* 釋放信號(hào)量 */ LOS_SemPost(m_task_sem);}

獲得超聲波測(cè)距的時(shí)間后,通過(guò)公式計(jì)算距離,計(jì)算公式:距離 = 時(shí)間差 * 340米/秒 / 2 * 100厘米/米

{ float f_time = (float)time; float f_freq = (float)freq; /* 距離 = 時(shí)間差 * 340米/秒 / 2(超時(shí)波來(lái)回2次) * 100厘米/米 */ *cmeter = f_time / f_freq * 170.0 * 100.0;}



四、編譯過(guò)程

1、搭建和下載源代碼

我已將OpenHarmony源代碼上傳到Gitee社區(qū)中,大家可以根據(jù)以下網(wǎng)址下載。

https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts

注意:編譯環(huán)境可根據(jù)以下網(wǎng)址來(lái)操作:https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/blob/master/vendor/lockzhiner/rk2206/README_zh.md

2、打開(kāi)sdk下面路徑的文件

/vendor/lockzhiner/rk2206/samples/c4_e53_intelligent_vehicle_01 /e53_intelligent_vehicle_01_example.c

3、修改編譯腳本

修改 vendor/lockzhiner/rk2206/sample 路徑下 BUILD.gn 文件,指定 e53_iv01_example 參與編譯。

"./c4_e53_intelligent_vehicle_01:e53_iv01_example",

修改 device/lockzhiner/rk2206/sdk_liteos 路徑下 Makefile 文件,添加 -le53_iv01_example 參與編譯。

hardware_LIBS = -lhal_iothardware -lhardware -le53_iv01_example

3、編譯固件

hb set -root .hb sethb build -f

4、燒寫(xiě)固件

請(qǐng)參考Gitee網(wǎng)址的說(shuō)明手冊(cè)(“燒錄打印”章節(jié)):https://gitee.com/Lockzhiner-Electronics/lockzhiner-rk2206-openharmony3.0lts/blob/master/device/rockchip/README_zh.md

五、實(shí)驗(yàn)結(jié)果

程序編譯燒寫(xiě)到開(kāi)發(fā)板后,按下開(kāi)發(fā)板的RESET按鍵,通過(guò)串口軟件查看日志如下;智慧車(chē)載模塊超聲波探頭正對(duì)著墻壁進(jìn)行測(cè)距,移動(dòng)模塊到不同的距離,當(dāng)測(cè)量的距離小于等于20厘米時(shí),蜂鳴器響起,告警燈亮起;當(dāng)測(cè)量的距離大于20厘米時(shí),蜂鳴器不響應(yīng),告警燈熄滅。

========== E53 IV Example ==========distance cm: 23.89========== E53 IV Example ==========distance cm: 23.90

好了,今天的課程就到這里,我們下次再見(jiàn)!


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

    關(guān)注

    25

    文章

    6026

    瀏覽量

    110527
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RK3568開(kāi)發(fā)板暗藏32位兼容開(kāi)關(guān)?飛嵌入式帶你一鍵解鎖!

    RK3568是一款64位處理器,飛嵌入式為其提供的交叉編譯器也是64位的,然而部分用戶(hù)可能需要在RK3568開(kāi)發(fā)板上運(yùn)行32位應(yīng)用。本文將詳細(xì)闡述如何使用32位交叉編譯器,編譯出32
    的頭像 發(fā)表于 07-19 08:49 ?4039次閱讀
    <b class='flag-5'>RK</b>3568<b class='flag-5'>開(kāi)發(fā)板</b>暗藏32位兼容開(kāi)關(guān)?飛<b class='flag-5'>凌</b>嵌入式帶你一鍵解鎖!

    睿擎RK3506J開(kāi)發(fā)板開(kāi)箱記錄、初步調(diào)試

    睿擎基于RK3506J開(kāi)發(fā),RK3506J是一款三核A7+M0的入門(mén)級(jí)工業(yè)MPU,由于其價(jià)位低,性能優(yōu)異,近期收到熱捧,各家都出了很多RK
    的頭像 發(fā)表于 06-20 20:43 ?1565次閱讀
    睿擎<b class='flag-5'>派</b><b class='flag-5'>RK</b>3506J<b class='flag-5'>開(kāi)發(fā)板</b>開(kāi)箱記錄、初步調(diào)試

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介 本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的FLASH接口,進(jìn)行FLASH編程開(kāi)發(fā)。 例程將創(chuàng)建一個(gè)任務(wù),實(shí)現(xiàn)
    發(fā)表于 04-22 15:02

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的FLASH接口,進(jìn)行FLASH編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),實(shí)現(xiàn)FL
    的頭像 發(fā)表于 04-22 14:49 ?586次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制UART外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介 本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的UART接口,進(jìn)行UART編程開(kāi)發(fā)。 例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置
    發(fā)表于 04-22 14:27

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制UART外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的UART接口,進(jìn)行UART編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置UA
    的頭像 發(fā)表于 04-22 14:22 ?702次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:OpenHarmony如何使用IoT接口控制UART外設(shè)

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實(shí)驗(yàn)簡(jiǎn)介 本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO中斷模式,進(jìn)行GPIO編程開(kāi)發(fā)。 例程將創(chuàng)建一個(gè)任務(wù),通過(guò)
    發(fā)表于 04-21 11:08

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO中斷模式,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置
    的頭像 發(fā)表于 04-21 10:39 ?731次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:OpenHarmony如何使用IoT接口控制GPIO中斷

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介 本案例主要是如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO接口,進(jìn)行GPIO編程開(kāi)發(fā)。 例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置
    發(fā)表于 04-11 15:45

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介本案例主要是如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO接口,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GP
    的頭像 發(fā)表于 04-11 15:36 ?1488次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制ADC外設(shè)

    1、案例簡(jiǎn)介 本案例主要講解如何在小-RK2206開(kāi)發(fā)板上使用IoT庫(kù)的ADC接口,進(jìn)行ADC編程開(kāi)發(fā)。 例程內(nèi)容為創(chuàng)建一個(gè)任務(wù),讀取按
    發(fā)表于 04-10 16:20

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制ADC外設(shè)

    1、案例簡(jiǎn)介本案例主要講解如何在小-RK2206開(kāi)發(fā)板上使用IoT庫(kù)的ADC接口,進(jìn)行ADC編程開(kāi)發(fā)。例程內(nèi)容為創(chuàng)建一個(gè)任務(wù),讀取按鍵的
    的頭像 發(fā)表于 04-10 16:00 ?620次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:OpenHarmony如何使用IoT接口控制ADC外設(shè)

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制PWM外設(shè)

    1、案例簡(jiǎn)介 本案例是在小-RK2206開(kāi)發(fā)板上使用IoT庫(kù)PWM接口,進(jìn)行PWM編程開(kāi)發(fā)。 例程將創(chuàng)建一個(gè)任務(wù),每隔5秒將PWM0~1
    發(fā)表于 04-09 09:37

    基于小RK2206開(kāi)發(fā)板:OpenHarmony如何使用IoT接口控制PWM外設(shè)

    1、案例簡(jiǎn)介本案例是在小-RK2206開(kāi)發(fā)板上使用IoT庫(kù)PWM接口,進(jìn)行PWM編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),每隔5秒將PWM0~10依
    的頭像 發(fā)表于 04-09 08:59 ?1742次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:OpenHarmony如何使用IoT接口控制PWM外設(shè)

    RK2206高性能微控制器特性概覽

    RK2206是一款集成了高性能CPU、DSP以及豐富存儲(chǔ)和接口選項(xiàng)的微控制器,專(zhuān)為滿(mǎn)足現(xiàn)代嵌入式系統(tǒng)的多樣化需求而設(shè)計(jì)。 核心性能:RK2206搭載了Cortex-M4F CPU,主頻高達(dá)
    的頭像 發(fā)表于 02-12 17:43 ?1395次閱讀