找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2195|回復: 31
收起左側

單片機無線遙控波形圖解碼求助

[復制鏈接]
ID:1102016 發(fā)表于 2024-1-29 14:19 | 顯示全部樓層 |閱讀模式
未標題-23.jpg

請教各位大神,這是一個接收機收到無線遙控器其中一個按鍵后的從DATA口的輸出波形圖,我想用STM32單片機的一個IO腳來接收并解碼這個信號,低電平表示0碼,高電平表示1碼,存儲到一組數據中,我參考了stm32紅外接收解碼的教程,但是NEC的0碼1碼的位寬是不相同的,而這個是0碼1碼位寬都相同,現在陷入困境中,望各位大師幫小弟看看有什么方法可以寫出解碼,謝謝!
回復

使用道具 舉報

ID:161164 發(fā)表于 2024-1-29 14:46 | 顯示全部樓層
如果第一個位元一定是0
那就設置一個420us中斷
連續(xù)掃到高電平就代表收到頭幀
然后就可以讀40個電平
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-1-29 16:38 | 顯示全部樓層
把邏輯分析儀測到的波形數據保存一下,然后上傳,這樣別人才方便看到更多細節(jié),你這個圖片一放大就看不清了。
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-1-29 16:39 | 顯示全部樓層
把每個按鍵的數據都用邏輯分析儀測一下,然后對比,找出共同點和不同點,然后才好寫解碼程序
回復

使用道具 舉報

ID:450849 發(fā)表于 2024-1-29 17:10 | 顯示全部樓層
先找到頭,再記錄分別記錄每個高低電平寬度,再統(tǒng)計高低電平個數。
回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-1-29 21:40 | 顯示全部樓層
這個是波形數據

Session 102.rar

2.13 KB, 下載次數: 7

回復

使用道具 舉報

ID:73992 發(fā)表于 2024-1-30 00:30 | 顯示全部樓層
依次是0x7F,0X52,0XD1,0XF3,0X84,0XB5一共6個字節(jié)。我根據第一幅圖猜的
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-1-30 12:35 | 顯示全部樓層
lyonkon 發(fā)表于 2024-1-30 00:30
依次是0x7F,0X52,0XD1,0XF3,0X84,0XB5一共6個字節(jié)。我根據第一幅圖猜的

明顯是錯的,不要在這誤導人
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-1-30 12:37 | 顯示全部樓層
我看了你發(fā)的波形,大概知道怎么解了,如果愿意%,我可以提供程序和思路
回復

使用道具 舉報

ID:73992 發(fā)表于 2024-1-30 15:47 來自觸屏版 | 顯示全部樓層
單片機研究協(xié)會 發(fā)表于 2024-1-30 12:35
明顯是錯的,不要在這誤導人

逆向工程,允許猜測,允許測試錯誤。我按照上圖直觀的猜測,按高低脈沖平均時間,作為1bit時間。圖上顯示是47位。我按照最高位補0或者最低位補0進行分析。如果錯了,你可以指明。
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-1-30 18:15 來自觸屏版 | 顯示全部樓層
lyonkon 發(fā)表于 2024-1-30 15:47
逆向工程,允許猜測,允許測試錯誤。我按照上圖直觀的猜測,按高低脈沖平均時間,作為1bit時間。圖上顯示 ...

你猜錯了,不是你想的那樣
回復

使用道具 舉報

ID:73992 發(fā)表于 2024-1-30 20:51 | 顯示全部樓層

或許我猜錯了,但是可以用。用單片機以我說的值,模擬這段波形時序,發(fā)送或者接受。就可以不需要知道具體的值。如果這個值能用 你說是錯的嗎。
我也可以隨便說,某某錯了 如何如何。但是,我說某人哪里錯了的時候,我必須拿出依據。
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-1-31 02:06 來自觸屏版 | 顯示全部樓層
lyonkon 發(fā)表于 2024-1-30 20:51
或許我猜錯了,但是可以用。用單片機以我說的值,模擬這段波形時序,發(fā)送或者接受。就可以不需要知道具體 ...

也許你以前做過類似的解碼,不過這個跟你之前做過的不一樣。
因為我知道正確答案,所以可以確定你猜錯了。
回復

使用道具 舉報

ID:73992 發(fā)表于 2024-1-31 13:00 | 顯示全部樓層
單片機研究協(xié)會 發(fā)表于 2024-1-31 02:06
也許你以前做過類似的解碼,不過這個跟你之前做過的不一樣。
因為我知道正確答案,所以可以確定你猜錯了 ...

正確的值,也要符合時序。相同的時序,可以用不同的系統(tǒng)和編碼來實現。上圖時序可以按自己的方式,或者符合自己單片機的方式進行編碼。保持發(fā)送和接收時序正確。
至于你說的什么正確的值,我絲毫不會介意。因為優(yōu)化系統(tǒng)和時序的時候,用到你說的那個值的幾率不高。
你硬要說別人的值或者方案是錯的。那你繼續(xù)
回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-1-31 13:45 | 顯示全部樓層
Session 11.zip (7.18 KB, 下載次數: 7)
我把一共9個按鍵的波形都放上來,麻煩各位老師幫我指點一下
回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-2-21 00:54 | 顯示全部樓層
51hei截圖20240220230609754.jpg 51hei截圖20240220230308856.jpg
各位老師,我用這個代碼勉強能顯示出來,請問該怎樣寫函數把這些數據保存到一個數組里?
回復

使用道具 舉報

ID:73992 發(fā)表于 2024-2-21 19:41 | 顯示全部樓層
weispan 發(fā)表于 2024-2-21 00:54
各位老師,我用這個代碼勉強能顯示出來,請問該怎樣寫函數把這些數據保存到一個數組里?

可以用stm32 usart 假設一個波特率然后嘗試接受遙控器數據。接受到的數據用dma存入片內sram 。然后在線調試,可以在內存里查看接受到的值,然后微調波特率直到滿意為止。
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-2-22 09:05 | 顯示全部樓層
這個波形其實很簡單的,你們都想復雜了,如果頂帖到100樓,我就公布解碼方法和解碼出的正確數據
回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-2-23 02:00 | 顯示全部樓層
51hei截圖20240223012007704.jpg 51hei截圖20240223012039383.jpg 1.jpg 51hei截圖20240223014431951.jpg
各位老師,我改成 usart接收 只有把波特率改到4800,一直按住遙控的一個按鍵才能收到這些碼,其它波特率都顯示都是兩個重復數字,我看到這些碼有相同的,但通過計算器轉換發(fā)現和這個按鍵的邏輯分析儀捕捉的數據又不一樣,不知如何是好?

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:73992 發(fā)表于 2024-2-23 17:26 | 顯示全部樓層
weispan 發(fā)表于 2024-2-23 02:00
各位老師,我改成 usart接收 只有把波特率改到4800,一直按住遙控的一個按鍵才能收到這些碼,其它波特率 ...

比如每按下左鍵,STM32usrat總是接收到  0x70 82 33 66 55.然后將這一組數據寫入程序。
usart每收到一組數據,與你設定的數據對比。如果相同燈亮。如果不同,進行下一組數據對比。
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-2-23 17:34 | 顯示全部樓層
lyonkon 發(fā)表于 2024-2-23 17:26
比如每按下左鍵,STM32usrat總是接收到  0x70 82 33 66 55.然后將這一組數據寫入程序。
usart每收到一組 ...

這是錯誤的數據
回復

使用道具 舉報

ID:73992 發(fā)表于 2024-2-23 19:07 | 顯示全部樓層

我不愿意再為這個方案去爭,我只是說出來我的方法。樓主愿意用哪種方案去逆向,是樓主自己決定。
但是我不認為,我的方案不行。
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-2-26 09:55 | 顯示全部樓層
lyonkon 發(fā)表于 2024-2-23 19:07
我不愿意再為這個方案去爭,我只是說出來我的方法。樓主愿意用哪種方案去逆向,是樓主自己決定。
但是我 ...

不愿意爭就不要再回復了
回復

使用道具 舉報

ID:73992 發(fā)表于 2024-2-26 21:22 | 顯示全部樓層

是說以我的這個方案不和你爭。但人家愿意問,我就愿意回答。有原理說原理,有依據說依據?茖W是大家的,螳臂擋車是徒勞且無效的。
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-2-27 10:01 | 顯示全部樓層
昨天看了一個短視頻讓我深有感觸《我不幫你誰幫你》,回想自己剛入門的時候也是遇到了很多困難,也得到過很多熱心前輩的幫助。這里我就公布正確答案,這個波形是UART,是大多數入門單片機所學的第一個通訊接口,這個UART的波特率是2400。
Snipaste_2024-02-27_09-53-45.png

從上面這個圖片可以看出最小的頻率是2425,由此可以看出波特率是2400。
Snipaste_2024-02-27_09-55-35.png

這樣設置解碼,就可以用UART,2400波特率解碼這個協(xié)。
Snipaste_2024-02-27_09-50-23.png

這樣就得到了解碼后的數據,
一共4個字節(jié),0xA5,0xF1,0x0E,0x5A
很明顯0xA5和0x5A是反碼,0xF1和0x0E是反碼,就是由這點我可以確定我這個方法解碼出的數據就是正確的數據。
Snipaste_2024-02-27_09-49-30.png
Snipaste_2024-02-27_09-49-57.png

另一個波形圖解碼出的數據,
1、0xA5,0x8A,0x75,0x5A
2、0xA5,0xB5,0x4A,0x5A
由此可以看出第1個數據是搖控器的地址,第2個數據是搖控器的鍵碼,第3個數據是搖控器鍵碼的反碼,第4個數據是搖控器地址的反碼。

評分

參與人數 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-2-28 00:05 | 顯示全部樓層
51hei截圖20240227234546206.jpg
感謝各位老師在百忙中抽空來熱情指導,分析研究指正幫助小弟,真的很感激不盡!另外,
特別感謝單片機研究協(xié)會老師的分享!令小弟茅塞頓開 ,謝謝老師!但是小弟有個地方不是很理解,如圖中老師所說第二個數據這里是0XB5,可是通過計算器轉換和圖中邏輯分析儀的顯示的波形不是很相同,請問是什么導致的?
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-2-28 15:09 | 顯示全部樓層
你只需要計算打點的位置,UART的數據包含起始信號(固定為0),8位數據,停止信號(固定為1),UART一個字節(jié)有10位數據
回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-2-28 15:24 | 顯示全部樓層
未標題-t71.jpg
單片機研究協(xié)會老師你好,按你的指導把UART設置成2400 按這個波形對應的按鍵,但收到的和邏輯分析的數據不一樣,請問是會是什么原因導致的?
回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-2-28 16:11 | 顯示全部樓層
51hei截圖20240228160837678.jpg 51hei截圖20240228160940214.jpg
老師你好,我這兩個地方是不是還需要設置才能正確顯示嗎?
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-2-28 22:12 | 顯示全部樓層
你先試一下能不能用2400的波特率發(fā)數據,如果不能用2400波特率發(fā)數據,也就不能用2400波特率接收數據,有可能是波特率太低了,UART所在的APB時鐘太高了,降低UART所在的APB時鐘試一下。
回復

使用道具 舉報

ID:1102016 發(fā)表于 2024-2-29 14:34 | 顯示全部樓層
51hei截圖20240229142836340.jpg
老師你好,按照你的提示,在USART1這里由48改成8后能正確顯示出來了,太感謝!
回復

使用道具 舉報

ID:828160 發(fā)表于 2024-2-29 18:03 | 顯示全部樓層
很少見到無線搖控器用UART發(fā)數據的,這樣收發(fā)的程序都比較簡單了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表