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

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

3天內不再提示

10分鐘掌握EV1527無(wú)線(xiàn)模塊編解碼

airX嵌入式 ? 來(lái)源:airX嵌入式 ? 作者:airX嵌入式 ? 2022-12-12 09:34 ? 次閱讀


《《《《《正文》》》》》


《無(wú)線(xiàn)模塊選擇》

796798c8-7801-11ed-8abf-dac502259ad0.png

說(shuō)明:

一、上圖這種常規的 433Mhz 無(wú)線(xiàn)模塊,發(fā)射端一般用 PT2262/EV1527/PT2240/HCS301編碼。如果選擇 PT2262,接收端則直接搭配 2272,匹配好振蕩電阻和烙好 A0-A7 腳就可以直接使用了。

二、如果發(fā)射用 EV1527、PT2240、HCS301 等芯片,這些需要自已編寫(xiě)解碼程序,單片機解碼,要不斷地處理 100us-20ms 脈沖識別,還要做別的任務(wù),比如按鍵 LED 數碼描等。

三、如果單片機的任務(wù)單一,可以用在 main 中循環(huán)查詢(xún)端口的方式來(lái)不斷地判斷脈沖寬度,一般工程師都是用這種方式入手的,這種方式僅限 EMC153 這類(lèi)低檔 MCU,如果是 51或 ST 不推薦,原因是單片機還是有其它任務(wù),這些耗時(shí)較長(cháng),會(huì )直接造成無(wú)線(xiàn)接收的丟碼,這種解碼方式僅限入門(mén)用。

四、推薦解碼方法是一個(gè)中斷引腳加一個(gè)定時(shí)器,在中斷里完成這部分的無(wú)線(xiàn)解碼;雖然模塊在靜態(tài)時(shí),有 30us—1000us 不等雜波,占用 MCU 太多的時(shí)間,這完全可以忽視;寫(xiě)好中斷代碼就好了,中斷以外的時(shí)間處理其它任務(wù)完全沒(méi)有問(wèn)題。比如串口收發(fā),SPI通訊等。處理串口中斷,和其它定時(shí)中斷也基本不影響,如果串口波特率較高,實(shí)測有誤碼時(shí),可以將串口中斷的優(yōu)先級別高于無(wú)線(xiàn)接收。


《具體解碼方法》

一般選擇單片機具有上升沿/下降沿,雙邊沿中斷的引腳來(lái)直接連接無(wú)線(xiàn)接收模塊(老式 51 單片機僅有下降沿方式,后面講此改進(jìn)方法),注意不要灌電給接收模塊,就是單片機 5V,模塊選 3V 的,這樣會(huì )改變接收模塊的電壓,應作處理,一般此腳設為上拉輸入,但更建議將引腳設為高阻輸入,這樣減小接收模塊的負載,有利其減小電壓紋波。

如何解碼?我們選觀(guān)察下以下編碼圖,以 1527 編碼為例說(shuō)明:

797933b2-7801-11ed-8abf-dac502259ad0.png

上面圖中間部分是一幀完整的數據,最有特征的就是最寬的部分,俗稱(chēng)同步脈沖,兩個(gè)同步脈沖間的小脈沖是我們要解的編碼。兩個(gè)同步頭間的高電平是 25bit,其中最后 1bit 是下一同步頭的。我們只解其中的 24bit 即可。

79923a06-7801-11ed-8abf-dac502259ad0.png

上面圖的 CLK 是指振蕩電阻的振蕩周期,我們可以忽視,直接用示波器量下 4CLK 的寬度就好了,不用對照 DATASHEET 去找這個(gè) CLK 到底是多少。請仔細觀(guān)察上面的圖,它的H 和 L 周期是一致的,只是顛倒了位置.所以為了提高解碼效率,我們雖是雙邊沿中斷觸發(fā),但只檢查低電平的持續時(shí)間是多少就行了,高電平直接無(wú)視,請看下附流程圖。上升沿時(shí)判斷定時(shí)器的脈沖寬度,請注意,1527 這類(lèi)編碼必須要接收正確的兩次信號才可以向外輸出,才能證明數據收到了,這是許多新入門(mén)者常犯的錯誤,因為無(wú)線(xiàn)的亂碼有可能會(huì )形成這種巧合的接收,請務(wù)必校驗兩次,否則產(chǎn)品批量出貨后可能會(huì )有麻煩。

HCS301 的編碼只需接收一次就行了,它一包 64bit 位中自帶校驗碼,不需要我們這種重復兩次的方法來(lái)校驗。Chkbuf 中的數據最好也加個(gè)時(shí)間限制,超時(shí)后,校驗位為清 0,下次最收到碼時(shí),又成為了第一包數據了。數據收到后,交由主程序中查詢(xún)去處理,有可能還要有 E2 中的數據再次比較,證明是否有無(wú)對碼等的操作。

請參見(jiàn)下面的流程圖:

79b67236-7801-11ed-8abf-dac502259ad0.png


《EV1527 編碼芯片之無(wú)線(xiàn)解碼原理說(shuō)明》

EV1527 是一片由 CMOS 設計制造的可預燒內碼的學(xué)習碼編碼 IC,由軟件解碼,每次發(fā)4 幀,每幀 24 位加一個(gè)同步碼。此 24 位中,前 20 位為芯片內碼(即 ID,共有 2 的 20 次方,即 1048576 組組合,大大降低使用上編碼重復的幾率),后 4 位是按鍵值(即數據)。

其編碼圖形如下所示:

79df89b4-7801-11ed-8abf-dac502259ad0.png

其中邏輯 1 是一個(gè)長(cháng)高電平加一個(gè)短低電平;邏輯 0 是一個(gè)短高電平加一個(gè)長(cháng)低電平。同步碼在 24 位編碼后面。這樣解碼的時(shí)候只要檢測高電平和低電平的持續時(shí)間就可以判斷是邏輯 1 還是邏輯 0 了,因為它們都是以高電平開(kāi)頭的,另外末尾的一個(gè)同步碼的第一個(gè)上升沿剛好可以作為第 24 位的低電平的持續時(shí)間的判斷用。因為 ASK 接收模塊當沒(méi)有接收到有效信號的時(shí)候數據腳會(huì )輸出雜亂無(wú)章的波形,不便于用中斷法解碼,宜用查詢(xún)法,其 EV1527 的解碼原理如下流程圖所示:其中需要用到定時(shí)器,定時(shí)器設為 50us 中斷一次,一直開(kāi)啟的。

79f09ace-7801-11ed-8abf-dac502259ad0.png

具體解碼函數如下所示:需要用到的變量:
extern unsigned char timer_4_count;
extern unsigned char timer_4_countover;
unsigned char in_bit = 0;
unsigned char rx_start = 0;
unsigned char rx_data_ok = 0;
unsigned char recvbit[4];
unsigned char recvbitcount = 0;
unsigned char recvbyte[40];
unsigned char recvbytecount = 0;
unsigned char Recv_data[5];
unsigned char in_bit_n = 0;

///////////////////接收函數///////////////////////

void Recieve()
{
//一進(jìn)來(lái)就先把引腳的狀態(tài)讀取了,然后判斷跟前面的是否一樣,不一樣的時(shí)候才進(jìn)行后
續運算
in_bit_n = inport; //inport 是 ASK 模塊的數據腳
if(in_bit == in_bit_n)
{
return;
}
in_bit = in_bit_n;
//P3_7 = in_bit; //把值丟給 LED 口
if(timer_4_countover)
{//超時(shí)錯誤
RecieveError();
return;
}
// 接收 4 次電平變化,才能確定 1 bit
if((timer_4_count > min_time_l)&&(timer_4_count < max_time_l))
{//窄脈沖,4~14,就是 200us~700us
if(in_bit) //高電平,現在為高電平,其實(shí)之前是低電平的
{
recvbit[recvbitcount] = 0x00; //低短
}
else//低電平
{
recvbit[recvbitcount] = 0x01; //高短
}
}
else if((timer_4_count > min_time_h)&&(timer_4_count < max_time_h))
{//寬脈沖,16~60,就是 800us~3000us
if(in_bit)
{
recvbit[recvbitcount] = 0x02; //低長(cháng)
}
else
{
recvbit[recvbitcount] = 0x03; //高長(cháng)
}
}
else
{//出錯
RecieveError();
return;
}
timer_4_count = 0;
timer_4_countover = 0;
// 1527
recvbitcount++;
if(recvbitcount < 2)
{
return;
}
else
{
//這里判斷的電平,應該是跟實(shí)際的相反的,因為只有電平變化了,才會(huì )做相應處理,
不變化的話(huà)是直接退出的。
if((recvbit[0] == 1)&&(recvbit[1] == 2)) //高短低長(cháng)
{
recvbyte[recvbytecount] = 0;
}
else if((recvbit[0] == 3)&&(recvbit[1] == 0)) //高長(cháng)低短
{
recvbyte[recvbytecount] = 1;
}
else
{
RecieveError();
return;
}
}
recvbytecount++; //接收到的字節數加 1。
recvbitcount = 0; //
if(recvbytecount < RECV_BIT_NUMBER)
{// 未接收完
return;
}
recvbytecount = 0;
timer_4_count = 0;
rx_data_ok = 1;
}

50us 定時(shí)器中斷函數:

unsigned long Timer4Count = 0;
unsigned char timer_4_count = 0;
unsigned char timer_4_countover = 0;
#pragma vector = TIM4_OVR_UIF_vector __interrupt __root void TIM4_UIF_HANDLER()
{
static unsigned char tt4=0;
//PA_ODR_ODR2=~PA_ODR_ODR2;
tt4++;
if(tt4>=20)
{//1ms
tt4=0;
Timer4Count++;
//PA_ODR_ODR3=~PA_ODR_ODR3;
}
timer_4_count++;
if(timer_4_count == 0)
timer_4_countover++;
TIM4_SR_UIF=0;
}
程序功能:使用前需要對碼,即按一下按鍵后松開(kāi),4 個(gè) LED 全亮后熄滅只留 LED2,LED3 常亮,5s 鐘內按下遙控器,可以發(fā)現 LED 分兩組閃爍三次后熄滅即可完成對碼。后該遙控器就可以工作。接收端收到無(wú)線(xiàn)信號后,先輸出串口,然后判斷 ID,ok 后點(diǎn)亮對應的 LED,100ms 后熄滅。若想解其他最小脈寬的編碼,只需修改程序中的如下四個(gè)變量即可:
#define max_time_h 60 //寬脈沖最大允許時(shí)間 data*TCC_time
#define min_time_h 16 //寬脈沖最小允許時(shí)間
#define max_time_l 14 //窄脈沖最大允許時(shí)間
#define min_time_l 4 //窄脈沖最小允許時(shí)間

注:所謂“最小脈寬”即 EV1527 的編碼中四倍時(shí)鐘,如下圖所示:

7a229ec0-7801-11ed-8abf-dac502259ad0.png


審核編輯:湯梓紅


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

    關(guān)注

    6008

    文章

    44106

    瀏覽量

    623609
  • 無(wú)線(xiàn)模塊
    +關(guān)注

    關(guān)注

    12

    文章

    611

    瀏覽量

    48021
  • eV1527
    +關(guān)注

    關(guān)注

    2

    文章

    9

    瀏覽量

    25633

原文標題:10分鐘掌握EV1527無(wú)線(xiàn)模塊編解碼

文章出處:【微信號:airX嵌入式,微信公眾號:airX嵌入式】歡迎添加關(guān)注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    無(wú)線(xiàn)編碼IC EV1527怎么預燒內碼?

    無(wú)線(xiàn)編碼IC EV1527怎么預燒內碼?知道的請詳細說(shuō)明一下。謝謝?。?!
    發(fā)表于 06-29 11:58

    想找一個(gè)芯片方案,無(wú)線(xiàn)發(fā)碼專(zhuān)用集成電路,類(lèi)似于EV1527,但要求是免調試的。希望知道的推薦下。

    想找一個(gè)芯片方案,無(wú)線(xiàn)發(fā)碼專(zhuān)用集成電路,類(lèi)似于EV1527,但要求是免調試的。希望知道的推薦下。
    發(fā)表于 04-18 10:24

    請問(wèn)單片機解碼433MHZ EV1527學(xué)習型編碼ic 學(xué)習功能如何用程序實(shí)現?

    目前我在做一個(gè)51單片機解碼433Mhz模塊EV1527學(xué)習型編碼IC,不知道如何學(xué)習對碼?
    發(fā)表于 09-09 15:04

    基于STM32和hs1527、ev1527、rt1527、fp1527無(wú)線(xiàn)接收解碼程序

    ???1527的數據幀結構無(wú)線(xiàn)遙控的編碼,從編碼類(lèi)型上來(lái)說(shuō),分為2類(lèi),一類(lèi)是固定碼,也就是編碼芯片的地址是不變的,芯片型號以 hs1527、ev1527、rt
    發(fā)表于 07-18 15:04

    基于STM32和hs1527、ev1527、rt1527、fp1527無(wú)線(xiàn)接收解碼程序

    ???1527的數據幀結構無(wú)線(xiàn)遙控的編碼,從編碼類(lèi)型上來(lái)說(shuō),分為2類(lèi),一類(lèi)是固定碼,也就是編碼芯片的地址是不變的,芯片型號以 hs1527、ev1527、rt
    發(fā)表于 07-18 15:05

    SYN480R模塊解碼EV1527該怎樣去使用呢

    1. EV1527幀結構EV1527 每幀數據由同步碼和24位的數據碼組成,數據碼又分為地址碼(20位)和按鍵碼(4位)。以我手頭上的433Mhz的EV1527遙控器為例,遙控波形如下。bit0
    發(fā)表于 01-12 08:03

    如何解決ev1527信號頻率的問(wèn)題?

    如何解決ev1527信號頻率的問(wèn)題?
    發(fā)表于 02-28 07:49

    EV1527射頻模塊調試過(guò)程分享

    容易,要做好卻很難。剛開(kāi)始在本地找了一家射頻模組供應商,根據他們的建議設計,做了一版PCB,后來(lái)發(fā)現收發(fā)距離尤其是穿墻能力不行,當然,這里是直接用的EV1527協(xié)議,在單片機上實(shí)現起來(lái)還是比較容易
    發(fā)表于 02-28 09:19

    eV1527學(xué)習碼編碼IC

    eV1527是一片由CMOS設計制造的可預燒內碼的學(xué)習碼編碼IC,由軟件解碼;內碼共有20個(gè)位元可預燒1048576組(220)內碼組合,降低使用上編碼重復的機率。
    發(fā)表于 07-11 15:35 ?459次下載
    <b class='flag-5'>eV1527</b>學(xué)習碼編碼IC

    EV1527解碼資料

    有關(guān)ev1527解碼資料,可供參考參考,內有其詳解,有需要可下載。
    發(fā)表于 05-13 16:40 ?243次下載

    ev1527,pt2262,upd6122等編解碼

    ev1527,pt2262,upd6122等編解碼,紅外等資料。
    發(fā)表于 10-13 18:00 ?0次下載

    基于EV1527編碼芯片的應用及其解碼方法

    基于EV1527編碼芯片的應用及其解碼方法
    發(fā)表于 10-31 08:16 ?340次下載
    基于<b class='flag-5'>EV1527</b>編碼芯片的應用及其<b class='flag-5'>解碼</b>方法

    Ev1527的pic單片機軟件接收解碼程序

    Ev1527的pic單片機軟件接收解碼程序
    發(fā)表于 02-27 16:57 ?85次下載

    基于51單片機的無(wú)線(xiàn)遙控編碼程序EV1527

    基于51單片機的無(wú)線(xiàn)遙控編碼程序EV1527
    發(fā)表于 07-30 10:26 ?240次下載

    用遠-R1接收模塊解碼EV1527的C代碼

    EV1527 每幀數據由同步碼和 24 位的數據碼組成,數據碼又分為地址碼(20 位)和按鍵碼(4 位)。以 433Mhz EV1527 遙控器為例,遙控波形如下。
    的頭像 發(fā)表于 12-12 09:37 ?4047次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看