找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 26626|回復(fù): 32
打印 上一主題 下一主題
收起左側(cè)

一款超小型的無線收發(fā)模塊LT8920配置思路+單片機(jī)發(fā)射接收程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
近來一直在研究無線項(xiàng)目,其中的重點(diǎn)就是無線收發(fā)芯片,可以正常的發(fā)送接收數(shù)據(jù)了,無線項(xiàng)目的大難題也就解決了。于是開始收集各種無線收發(fā)芯片的資料,例如NRF24L01,CC1101,一些LoRa模塊還有一些超外差無線模塊等等,但是他們有著相同的問題,一是例如NRF24L01和CC1101之類的使用QFN封裝的模塊在自制上存在焊接困難度的問題,再就是這些模塊普遍都有著過于繁雜的外圍電路(一些電感電容),無法將其做到很小的體積。于是在查閱了很多資料后,有一款小巧的無線模塊進(jìn)入我的眼簾,就是LT8920。


先不談他的各項(xiàng)參數(shù)指標(biāo)相對(duì)其他模塊有什么優(yōu)劣,光是這個(gè)采用了SSOP16的引腳封裝就使得其焊接容易了許多。并且其簡潔的外圍電路著實(shí)易于制作,只需要一個(gè)晶振一個(gè)電容即可,這確實(shí)在焊接難度和外圍電路成本上秒殺其他芯片。于是我開始對(duì)這個(gè)芯片進(jìn)行了學(xué)習(xí),希望可以使用它做出一些項(xiàng)目。調(diào)試起來還是廢了一番周折,因?yàn)閺S家給出的數(shù)據(jù)手冊并不清楚,所以很多東西都是摸著石頭過河,在前前后后調(diào)試了大概3天左右,終于可以正常的收發(fā)數(shù)據(jù),下面我就分享一些學(xué)習(xí)的過程。
                  
拿到一個(gè)新的芯片,想要了解他就一定要去下載數(shù)據(jù)手冊,一般在網(wǎng)上都可以找到,有中文的有英文的,遇到英文的數(shù)據(jù)手冊就需要具備一定的英語閱讀能力才可以理解清楚意思。這個(gè)芯片的數(shù)據(jù)手冊我也會(huì)放到文章的最后,大家可以下載來學(xué)習(xí)。


1.基本介紹
這款芯片使用的是2.4G頻段進(jìn)行通信,可以設(shè)置通信頻率,發(fā)射速率以及發(fā)射功率,電源使用2.2V到3.6V的電壓都可以,發(fā)射時(shí)電流在20毫安左右,接受電流在18毫安左右,可以說比較省電的一款芯片。芯片內(nèi)置倍頻電路,但是沒有內(nèi)置晶振,所以需要外接一顆12Mhz的晶振,晶振的補(bǔ)償電容芯片已經(jīng)內(nèi)置了,所以無需外接。對(duì)于芯片與MCU的通信方面,使用的是SPI總線協(xié)議,最高支持10Mhz的速度。為了更好的兼容一些低速的MCU,這款芯片內(nèi)置FIFO緩存器。
如下圖給出了典型應(yīng)用電路:




2.通信代碼編寫
看完了這些參數(shù),我對(duì)這款芯片也有了一些了解,下面要做的就是編寫程序進(jìn)行通信了。我使用的是STC8單片機(jī)來對(duì)這個(gè)芯片進(jìn)行控制,由于模塊采用的是4線的SPI總線通信,盡管一些STC的單片機(jī)上帶有硬件的SPI總線接口,但是為了程序的可移植性,整個(gè)程序使用軟件模擬SPI總線協(xié)議來進(jìn)行與LT8920的通信。
既然是使用SPI通信,那么肯定數(shù)據(jù)手冊里面就有一些關(guān)于通信時(shí)序的說明,我在數(shù)據(jù)手冊里面找到如下:




可以看到芯片是在時(shí)鐘的下降沿讀取MOSI線上的數(shù)據(jù)和在MISO線上發(fā)送數(shù)據(jù),并且先發(fā)送高位,再發(fā)送低位。并且可以看出一次需要讀取2字節(jié)(16位)的數(shù)據(jù),看完這個(gè)時(shí)序圖,我就很容易的寫出了SPI接口的寫入函數(shù)。




對(duì)于從LT8920上讀取寄存器數(shù)據(jù),需要注意的一點(diǎn)是每次SPI通信的地址最高位是讀寫標(biāo)志位,寫入的時(shí)候是0,讀取的時(shí)候是1,所以在SPI讀取函數(shù)中,所有的地址都需要加0x80,如圖:




寫完這兩個(gè)函數(shù)之后,寄存器的配置就可以使用這兩個(gè)函數(shù)了,但是我注意到手冊中說到,對(duì)于FIFO寄存器(就是存儲(chǔ)發(fā)射和接受數(shù)據(jù)的寄存器),可以采用單字節(jié)讀取或者寫入,那么我就又寫了兩個(gè)函數(shù),一次讀取和寫入分別都是單字節(jié)的,如圖:




寫完這兩個(gè)函數(shù),基本的SPI通信就沒問題了,下面我就開始對(duì)LT8920的寄存器進(jìn)行逐一的了解與設(shè)置,這耗費(fèi)了較多的時(shí)間。


3.寄存器設(shè)置與初始化
對(duì)于在LT8920中的寄存器,其地址和其寄存器的編號(hào)相同,這就給了編寫代碼時(shí)的便利性,需要操作那個(gè)寄存器只需要知道其的編號(hào)即可,在LT8920中,一共有近50多個(gè)寄存器,對(duì)這些寄存器的逐個(gè)配置,就可以使用LT8920來收發(fā)數(shù)據(jù)了。但是遺憾的是,手冊中并沒有逐個(gè)逐個(gè)說明寄存器的作用,而是只說明了幾個(gè)重要的寄存器的作用以及配置,但是在手冊最后給出了所有寄存器的推薦配置值,于是我參考了手冊最后的推薦值以及一些網(wǎng)絡(luò)上的調(diào)試經(jīng)驗(yàn),給出了每個(gè)寄存器的初值,如圖:




可以看出,上電之后先給LT8920進(jìn)行復(fù)位,然后延時(shí)5ms,等待晶振輸出頻率穩(wěn)定之后就可以開始初始化端口了,我默認(rèn)使用的都是準(zhǔn)雙向口,所以將端口設(shè)置為1的時(shí)候也是作為輸入模式。下面是LT8920的初始化時(shí)序:




4.接受數(shù)據(jù)程序
初始化完畢之后就可以開始發(fā)送接收數(shù)據(jù)了,這個(gè)芯片有一個(gè)外置引腳PKT來指示芯片的FIFO緩存中是否有數(shù)據(jù),當(dāng)有數(shù)據(jù)的時(shí)候,整個(gè)外置引腳會(huì)被置1,沒有的時(shí)候則會(huì)被置0。所以在編寫接受數(shù)據(jù)的程序時(shí),我只需要不停地判斷這個(gè)引腳是不是高電平,如果是,那么就進(jìn)入處理函數(shù),不是就不進(jìn)入。
對(duì)于從LT8920的FIFO中讀取接受到的數(shù)據(jù),其第一字節(jié)表示的是整個(gè)數(shù)據(jù)的長度,單位是字節(jié),所以我在從LT8920的FIFO中讀取數(shù)據(jù)時(shí),先讀取一個(gè)字節(jié),那么這個(gè)字節(jié)表示的就是整個(gè)數(shù)據(jù)的長度。具體實(shí)現(xiàn)的程序如下:




5.發(fā)射數(shù)據(jù)程序
Lt8920的發(fā)射其實(shí)也比較簡單,向FIFO中寫入數(shù)據(jù),然后打開發(fā)射器等待發(fā)射完成(PKT置1),之后讀取自動(dòng)應(yīng)答寄存器,如果收到應(yīng)答的話,就代表一次通信成功,實(shí)現(xiàn)的代碼如下:


                          
發(fā)射程序和接受程序都介紹完畢,如果您是使用的其他單片機(jī),如stm32或者arduino,應(yīng)該整體的配置思路我都講解的比較清晰,也比較容易就調(diào)試好這款模塊。所以大家如果有什么關(guān)于這個(gè)模塊的問題,歡迎來咨詢我,我的QQ:2877137721。在近期準(zhǔn)備使用這個(gè)模塊來做一些小巧的項(xiàng)目,請(qǐng)大家期待。

全部datasheet資料51hei下載地址:
C77997_LT8920編帶_2016-10-09.zip (923.57 KB, 下載次數(shù): 443)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏16 分享淘帖 頂2 踩
回復(fù)

使用道具 舉報(bào)

32#
ID:1114440 發(fā)表于 2024-3-27 15:44 | 只看該作者
getwch 發(fā)表于 2019-11-2 00:24
你好,我想問下,我基本調(diào)試已經(jīng)成功了,但在讀取RSSI的時(shí)候遇到了些問題,手冊上說6寄存器,是RSSI的原 ...

您好請(qǐng)問您解決了嗎?
回復(fù)

使用道具 舉報(bào)

31#
ID:46971 發(fā)表于 2023-6-22 12:44 | 只看該作者
學(xué)習(xí)了,謝謝樓主分享,十分感謝!
回復(fù)

使用道具 舉報(bào)

30#
ID:301968 發(fā)表于 2022-5-5 10:25 | 只看該作者
4.接受數(shù)據(jù)程序
初始化完畢之后就可以開始發(fā)送接收數(shù)據(jù)了,這個(gè)芯片有一個(gè)外置引腳PKT來指示芯片的FIFO緩存中是否有數(shù)據(jù),當(dāng)有數(shù)據(jù)的時(shí)候,整個(gè)外置引腳會(huì)被置1,沒有的時(shí)候則會(huì)被置0。所以在編寫接受數(shù)據(jù)的程序時(shí),我只需要不停地判斷這個(gè)引腳是不是高電平,如果是,那么就進(jìn)入處理函數(shù),不是就不進(jìn)入。

PKT引腳作用解釋錯(cuò)誤,請(qǐng)查看寄存器說明
回復(fù)

使用道具 舉報(bào)

29#
ID:3666 發(fā)表于 2021-3-29 15:47 | 只看該作者
樓主,如果我一個(gè)單片機(jī)上接三個(gè)TL8902應(yīng)該如何做
回復(fù)

使用道具 舉報(bào)

28#
ID:230926 發(fā)表于 2020-11-11 15:42 | 只看該作者
@289466080 請(qǐng)教一下,LT8988的IIC代碼是否可以提供一下,多謝多謝!
回復(fù)

使用道具 舉報(bào)

27#
ID:287770 發(fā)表于 2020-10-20 18:48 | 只看該作者
289466080 發(fā)表于 2020-7-28 13:39
可以找FAE 問問看,我用LT8988,應(yīng)該更便宜些,SOT-23-6的原廠FAE跟我講0.5RMB用的模擬I2C做的

你好,我最近也在弄這個(gè)芯片,LT8960,,也是IC的,你有代碼給我參考一下嘛?我看他們的都是SPI的。
回復(fù)

使用道具 舉報(bào)

26#
ID:282538 發(fā)表于 2020-7-28 13:39 | 只看該作者
JJINGER 發(fā)表于 2020-7-1 17:28
請(qǐng)教一下,LT8920到天線之間的濾波電路需要嗎?
怎樣設(shè)計(jì)效果最好?

可以找FAE 問問看,我用LT8988,應(yīng)該更便宜些,SOT-23-6的原廠FAE跟我講0.5RMB用的模擬I2C做的
回復(fù)

使用道具 舉報(bào)

25#
ID:794759 發(fā)表于 2020-7-1 17:28 | 只看該作者
請(qǐng)教一下,LT8920到天線之間的濾波電路需要嗎?
怎樣設(shè)計(jì)效果最好?
回復(fù)

使用道具 舉報(bào)

24#
ID:307544 發(fā)表于 2020-6-16 10:14 | 只看該作者
設(shè)計(jì)思路清晰,謝謝分享!
回復(fù)

使用道具 舉報(bào)

23#
ID:282538 發(fā)表于 2020-6-16 08:29 | 只看該作者
我以為是參考代碼,下載下來看才知道是規(guī)格書
回復(fù)

使用道具 舉報(bào)

22#
ID:282538 發(fā)表于 2020-6-15 16:21 | 只看該作者
謝謝分享,學(xué)習(xí)了。
回復(fù)

使用道具 舉報(bào)

21#
ID:379432 發(fā)表于 2020-6-3 15:41 | 只看該作者
lt8920很垃圾的芯片,datasheet太亂,還是用國外的好點(diǎn)
回復(fù)

使用道具 舉報(bào)

20#
ID:717680 發(fā)表于 2020-5-11 15:04 | 只看該作者
謝謝分享,最近正在做類似的項(xiàng)目剛好用上!
回復(fù)

使用道具 舉報(bào)

19#
ID:115836 發(fā)表于 2020-5-6 22:00 | 只看該作者
樓主好,請(qǐng)問一下這個(gè)芯片能不能用于一對(duì)多或者多對(duì)多的通信?
回復(fù)

使用道具 舉報(bào)

18#
ID:81102 發(fā)表于 2020-5-5 22:50 | 只看該作者
getwch 發(fā)表于 2019-11-2 00:24
你好,我想問下,我基本調(diào)試已經(jīng)成功了,但在讀取RSSI的時(shí)候遇到了些問題,手冊上說6寄存器,是RSSI的原 ...

我也遇到相同問題 你那解決了么 ?
回復(fù)

使用道具 舉報(bào)

17#
ID:81102 發(fā)表于 2020-5-5 22:11 | 只看該作者
getwch 發(fā)表于 2019-11-2 00:24
你好,我想問下,我基本調(diào)試已經(jīng)成功了,但在讀取RSSI的時(shí)候遇到了些問題,手冊上說6寄存器,是RSSI的原 ...

你問題解決了么 我也跟你遇到同樣的問題 RSSI有問題 前輩請(qǐng)指教下
回復(fù)

使用道具 舉報(bào)

16#
ID:299748 發(fā)表于 2020-4-29 11:13 | 只看該作者
Similarv 發(fā)表于 2019-6-12 14:26
近期,我的某項(xiàng)目使用到了這款芯片,樓主你的配置沒啥問題,但有個(gè)致命的風(fēng)險(xiǎn)你沒注意到:
FIFO數(shù)據(jù)包的首 ...

我使用時(shí)也是經(jīng)常復(fù)位
回復(fù)

使用道具 舉報(bào)

15#
ID:728403 發(fā)表于 2020-4-13 17:31 | 只看該作者
謝謝分享,正好也在做類似的項(xiàng)目,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

14#
ID:667303 發(fā)表于 2020-4-1 12:14 | 只看該作者
謝謝老板,資料不錯(cuò)。!
回復(fù)

使用道具 舉報(bào)

13#
ID:717680 發(fā)表于 2020-3-28 16:57 | 只看該作者
謝謝分享,正好也在做類似的項(xiàng)目,學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

12#
ID:669348 發(fā)表于 2019-12-21 10:21 | 只看該作者
學(xué)習(xí)了,我的MSP430上面還沒初始化調(diào)通
回復(fù)

使用道具 舉報(bào)

11#
ID:655879 發(fā)表于 2019-12-4 13:26 | 只看該作者
好象不錯(cuò)
回復(fù)

使用道具 舉報(bào)

10#
ID:498530 發(fā)表于 2019-11-2 00:24 | 只看該作者
Similarv 發(fā)表于 2019-6-12 14:26
近期,我的某項(xiàng)目使用到了這款芯片,樓主你的配置沒啥問題,但有個(gè)致命的風(fēng)險(xiǎn)你沒注意到:
FIFO數(shù)據(jù)包的首 ...

你好,我想問下,我基本調(diào)試已經(jīng)成功了,但在讀取RSSI的時(shí)候遇到了些問題,手冊上說6寄存器,是RSSI的原始數(shù)據(jù),所有初始化均參照手冊配置完成,但檢測不到RSSI
回復(fù)

使用道具 舉報(bào)

9#
ID:633767 發(fā)表于 2019-11-1 11:48 | 只看該作者
學(xué)習(xí)了,剛好有用到
回復(fù)

使用道具 舉報(bào)

8#
ID:605655 發(fā)表于 2019-8-31 10:20 | 只看該作者
感謝分享,現(xiàn)在準(zhǔn)備著手項(xiàng)目了
回復(fù)

使用道具 舉報(bào)

7#
ID:486481 發(fā)表于 2019-7-24 08:44 | 只看該作者
回復(fù)

使用道具 舉報(bào)

6#
ID:502376 發(fā)表于 2019-7-10 10:12 | 只看該作者
學(xué)習(xí)了。
回復(fù)

使用道具 舉報(bào)

5#
ID:168320 發(fā)表于 2019-7-6 10:05 | 只看該作者
多謝分享
回復(fù)

使用道具 舉報(bào)

地板
ID:573382 發(fā)表于 2019-6-27 14:09 | 只看該作者
收藏!
回復(fù)

使用道具 舉報(bào)

板凳
ID:560917 發(fā)表于 2019-6-12 14:58 | 只看該作者
謝謝你的分享
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:476527 發(fā)表于 2019-6-12 14:26 | 只看該作者
近期,我的某項(xiàng)目使用到了這款芯片,樓主你的配置沒啥問題,但有個(gè)致命的風(fēng)險(xiǎn)你沒注意到:
FIFO數(shù)據(jù)包的首位是表示剩余數(shù)據(jù)包大小的字節(jié),如果這個(gè)字節(jié)在通信時(shí)受到干擾,使之變?yōu)楹艽,那你接下來要寫入的?shù)組就會(huì)溢出邊界,直接導(dǎo)致你的單片機(jī)復(fù)位!
這個(gè)復(fù)位問題在我去測試的時(shí)候頻繁遇到,經(jīng)過痛苦的排查之后,我才意識(shí)到,我沒有對(duì)這個(gè)關(guān)鍵的首字節(jié)進(jìn)行檢查!
解決的辦法很簡單,在讀完FIFO的首字節(jié)之后,判斷一下它的大小是否正常即可。
  1. /*這段代碼有出現(xiàn)問題的可能*/
  2. j = OneByte;
  3. //請(qǐng)?jiān)诖颂帉?duì)j的值經(jīng)行檢查!
  4. while(i<j){
  5.     //讀出數(shù)據(jù),放進(jìn)數(shù)組里
  6. }
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +15 收起 理由
IdeaMing + 15 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

樓主
ID:544323 發(fā)表于 2019-5-22 00:39 | 只看該作者
學(xué)習(xí)了!謝謝分享。!
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表