日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

CC2530, 各种智能家居通信技术比较

發(fā)布時(shí)間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CC2530, 各种智能家居通信技术比较 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://antkillerfarm.github.io/

CC2530配置紅外載波

CC2530是德州儀器公司推出的用于物聯(lián)網(wǎng)領(lǐng)域的基于8051架構(gòu)的芯片,支持Zigbee、紅外等多種無線通訊方式。本文僅對(duì)紅外相關(guān)的寄存器配置做一個(gè)簡(jiǎn)單說明。

1.配置時(shí)鐘

配置時(shí)鐘需要配置CLKCONCMD寄存器。但是需要注意的是OSC、TICKSPD和CLKSPD存在就低不就高的特點(diǎn),所以如果稍有不慎,最終Timer輸出的頻率就不正確了。

2.配置pin復(fù)用

pin復(fù)用分為3個(gè)級(jí)別:

1)是GPIO,還是外設(shè)?(使用PnSEL選擇。)

2)外設(shè)布局。(為了方便使用,每個(gè)外設(shè)都有兩套布局,可用PERCFG選擇。)

3)外設(shè)復(fù)用選擇。(如果有兩個(gè)外設(shè),在第2步之后,仍然共用1個(gè)pin,則用P2DIR選擇究竟用誰。注意只有P0的外設(shè)可以選,P1是不行的。)

3.配置IR載波

這一步主要是根據(jù)載波頻率計(jì)算相關(guān)寄存器的值,主要是TxCCn(其中x表示Timer x,n表示Channel n)的值。

1) 計(jì)算Timer 3的值,以38KHz載波為為例:

32000000 / 38000 = 842.1053只是計(jì)量單位變?yōu)檩d波周期而已。

這個(gè)值是無法直接用8位的寄存器表示的,因此需要首先4分頻,也就是

842.1053 = 4 * 210.5263

所以T3CC0=211,如果需要占空比50%的載波的話,T3CC1=105。

這樣實(shí)際生成的載波頻率為:

32000000 / 4 / 211 = 37914.7

2)計(jì)算Timer 1的值。

這里需要注意的是,這里T1CCn中配置的值,不再以Timer tick為單位,而是以載波周期為單位。以NEC編碼的邏輯1為例,載波周期為560us,整個(gè)周期為2.25ms。因此:

37914.7 / (1 / 0.00056) = 21.23

37914.7 / (1 / 0.00225) = 85.31

所以T1CC0=85,T1CC1=21

3)配置其他寄存器

IRCTL=1,打開載波模式。需要注意的是,只要載波模式打開,Timer 1的計(jì)量單位就變?yōu)檩d波周期,但只有Channel 1,會(huì)調(diào)制上載波信號(hào)。其他的channel只是計(jì)量單位變?yōu)檩d波周期而已。

還有要仔細(xì)配置相關(guān)的Timer中斷,如果沒有必要的話,最好把中斷都關(guān)上。畢竟即使沒有中斷處理程序,中斷還是要消耗CPU的運(yùn)算資源的。

4) timer調(diào)制模式

T1CCTLn.CMP一般選擇4 - Clear Output on Compare-Up,Set on 0。

但是信號(hào)發(fā)送的最后幾幀,需要特殊處理。主要的原因是:對(duì)TxCCn的修改不是立即生效,而需等待下一次中斷,但對(duì)于T1CCTLn.CMP的修改卻是立即生效的。這兩者的差異有時(shí)會(huì)造成意想不到的結(jié)果。

CC2530雙串口工作

CC2530雖然有兩個(gè)UART,但是所有的示例中都只用到了UART0。而網(wǎng)上使用UART1的例子多數(shù)是實(shí)驗(yàn)性的代碼,沒有用到ZStack框架。因此對(duì)于真正的Zigbee應(yīng)用來說,如何使用UART1仍是一個(gè)難題。

通過閱讀ZStack的代碼,可以發(fā)現(xiàn)UART1的使用之所以困難,主要有以下幾方面的問題:

1.Pin復(fù)用。由于Pin默認(rèn)是用于GPIO的,因此要想使用UART1首先要配好相關(guān)的Pin。這個(gè)可以參考那些從零做起的實(shí)驗(yàn)性代碼,這些代碼主要聚焦于如何配置寄存器,而不是ZStack。

2.ZStack中使用HAL_UART_DMA和HAL_UART_ISR用于指定串口的端口和驅(qū)動(dòng)類型。但由于宏的值是唯一的,因此并不能兩個(gè)UART都采用DMA或者ISR。但是一個(gè)UART用DMA,另一個(gè)用ISR實(shí)際上是可以的。這也是最簡(jiǎn)單的同時(shí)使用雙串口的方法。

3.如果簡(jiǎn)單的配置HAL_UART_DMA和HAL_UART_ISR,可能會(huì)鏈接失敗。從提示可知是驅(qū)動(dòng)所占的RAM超過了系統(tǒng)的RAM所致。這時(shí)需要縮小兩個(gè)串口的緩沖區(qū)的大小,即修改HAL_UART_DMA_RX_MAX和HAL_UART_ISR_RX_MAX的大小。

4.如果繼續(xù)深入代碼的話,可以發(fā)現(xiàn)HAL_UART_DMA和HAL_UART_ISR的唯一性,并不是兩個(gè)串口不能同時(shí)DMA的關(guān)鍵。問題的關(guān)鍵在于,HAL UART的代碼中,DMA和ISR都只有一套數(shù)據(jù)結(jié)構(gòu)。因此如果采用兩套數(shù)據(jù)結(jié)構(gòu)的話,理論上是可以雙串口DMA或ISR的。

5.那么問題就來了,既然可以這樣做,為什么TI不去做呢?一句話還是資源的問題。雙串口會(huì)導(dǎo)致每個(gè)串口的緩沖區(qū)尺寸減小。同時(shí)DMA雖然有5個(gè)通道,但一個(gè)串口就要用掉兩個(gè)(收發(fā)各一個(gè))。按照ZStack默認(rèn)的配置,DMA 0沒有用,DMA1、2用于AES,只有DMA3、4用于串口。因此實(shí)際上TI是不推薦雙串口同時(shí)工作的。

CC2530按鍵事件流程

CC2530的按鍵事件是由GPIO的中斷觸發(fā)的。所有的GPIO都可以作為按鍵事件的中斷源。但CPU的中斷向量有限,只有3個(gè)中斷向量P0INT、P1INT和P2INT可用于GPIO中斷。在中斷處理程序中,讀取PxIFG寄存器可獲得究竟是哪個(gè)GPIO產(chǎn)生的中斷。

1.寄存器

P0IEN—-中斷控制器的中斷開關(guān)。

IEN1.P0IE—-CPU中斷的開關(guān)。

IRCON—中斷是否pending。

P0IFG—中斷發(fā)生時(shí),獲取究竟是哪個(gè)GPIO產(chǎn)生的中斷。

PICTL—上升沿還是下降沿觸發(fā)中斷。

2.軟件流程

P0INT_VECTOR

halKeyPort0Isr

halProcessKeyInterrupt

HAL_KEY_EVENT

HalKeyPoll

HalKeyRead

HalKeyConfig/OnBoard_KeyCallback

OnBoard_SendKeys

KEY_CHANGE

以上的流程是針對(duì)中斷式按鍵消息,輪詢式的按鍵消息,從HAL_KEY_EVENT開始。系統(tǒng)在開機(jī)時(shí)自動(dòng)執(zhí)行一次HAL_KEY_EVENT的處理函數(shù),然后發(fā)起下一次的定時(shí)查詢請(qǐng)求。如此一直循環(huán)下去。

3.向框架添加一個(gè)新的按鈕觸發(fā)源

HAL代碼中已經(jīng)有HAL_KEY_SW_6_PORT等一系列的宏,并定義了KEY_SW_6的行為。照著KEY_SW_6的樣子添加新的按鍵即可。

CC2530 Target類型

CC2530EB—Evaluation Board

CC2530USB

CC2530ZNP—Zigbee Pro Network Processor

從各方面的信息綜合來看,這應(yīng)該是指三種不同類型的板子。

CC2530的競(jìng)爭(zhēng)對(duì)手

目前已知的有Ember公司的EM250、atmel公司的產(chǎn)品、microchip公司的產(chǎn)品。國(guó)內(nèi)的廣州致遠(yuǎn),也就是周立功,也有同類產(chǎn)品(采用NXP JN5168模塊)。

CC2530 Option的幾點(diǎn)解釋

這里以IAR 8.10為例,說明一下菜單Project->Options里有哪些可選的內(nèi)容以及它們的含義。由于可供選擇的內(nèi)容非常多且雜,這里僅列舉個(gè)人實(shí)際使用到的幾點(diǎn)常用功能。

如何確定設(shè)備類型?

General Options->Target->Device information->Device

這個(gè)常用于根據(jù)已有軟件代碼,反查設(shè)備型號(hào)。在代碼移植的時(shí)候很有用。

printf & scanf

General Options->Library options

嵌入式設(shè)備由于硬件功能有限,常需對(duì)軟件代碼進(jìn)行裁剪,以恰好滿足需要為最終目標(biāo)。具體到printf和scanf函數(shù),亦可根據(jù)需要選擇不同的功能集合。

VLA

C/C++ Compiler->Language->C dialect

可變長(zhǎng)數(shù)組(variable length array,簡(jiǎn)稱VLA)在我看來,是C99標(biāo)準(zhǔn)的最大福利。這一點(diǎn)VC至今都不支持,鄙視之。。。

輸出的二進(jìn)制文件的格式

Linker->Output->Format

大的來說可分為兩類:

1.Debug版本。也就是選擇“Debug information for C-APY”選項(xiàng)。如果需要在IAR中,打斷點(diǎn)調(diào)試的話,必須選擇這個(gè)選項(xiàng)。

2.Release版本。選擇“Other”選項(xiàng)。

這里說一下使用TI公司的SmartRF Flash Programmer燒寫這兩種類型文件的方法。

Release版本比較簡(jiǎn)單,直接選擇“Erase and program”即可。

Debug版本需要首先選擇“Read flash into hex-file”,然后再選擇“Erase and program”。如下圖所示:

網(wǎng)上有些人由于不曉得這一步,而得出Debug版本無法燒寫的結(jié)論,這是不正確的。

輸出二進(jìn)制文件的flash布局

在項(xiàng)目的生成路徑下,不僅有存放二進(jìn)制文件的Exe文件夾,還有個(gè)List文件夾。在List文件夾下有個(gè).map文件,包含了很多的鏈接信息。

空中升級(jí)

CC2530的空中升級(jí)可以使用以下兩種方法:

1.OTA(Over The Air)。這是zigbee聯(lián)盟制定的標(biāo)準(zhǔn)。具體到CC2530,就是需要添加ZCL的支持。

2.OAD(Over Air Download)。TI專有的空中升級(jí)文件的技術(shù),比OAT更早面市。這也是TI官方的技術(shù)人員推薦的方法。

其實(shí)兩者的原理都差不多。

并非所有的CC2530設(shè)備都能空中升級(jí),TI官方的說法是要想升級(jí)需要滿足以下條件之一:

1)有外接FLASH存儲(chǔ)空間。

2)沒有外接FLASH的設(shè)備,其image的大小 < (片上FLASH空間 - bootloader空間) / 2。

從第2個(gè)條件不難看出,空中升級(jí)的原理是將新的image下載到flash空閑區(qū)域,然后用新的image替換老的image。

但由于即使最優(yōu)化的Zstack協(xié)議棧也至少有140KB,而CC2530最多只有256KB,因此第2個(gè)條件實(shí)際上是不可能滿足的。

各種智能家居通信技術(shù)比較

名稱概況優(yōu)點(diǎn)缺點(diǎn)
Zigbee基于IEEE 802.15.4的一種近程(10米~100米)、低速率(250Kbps標(biāo)稱速率)、低功耗的無線網(wǎng)絡(luò)技術(shù)。具有低復(fù)雜度、低功耗、低速率、低成本、自組網(wǎng)、高可靠、超視距的特點(diǎn)。協(xié)議Profile比較復(fù)雜,導(dǎo)致廠家的各自為政,產(chǎn)品兼容性較差。
Z-Wave由丹麥公司Zensys所一手主導(dǎo)的無線組網(wǎng)規(guī)格。Z-wave聯(lián)盟的成員均是已經(jīng)在智能家居領(lǐng)域有現(xiàn)行產(chǎn)品的廠商,產(chǎn)品兼容性好。技術(shù)把持在Zensys手中,產(chǎn)業(yè)鏈較封閉,芯片可選余地不大,漸趨式微。
KNXKonnex協(xié)會(huì)提出的家庭、樓宇自動(dòng)化的有線解決方案。歷史悠久,功能豐富,標(biāo)準(zhǔn)完善,廠商支持度比較高。在西歐和北歐比較流行。雖然新的標(biāo)準(zhǔn)中可以使用868 MHz的RF進(jìn)行無線傳輸,但總的來說,還是個(gè)有線方案。適合樓宇建筑時(shí)的預(yù)裝,而不適合后期的智能改造。
BlueTooth Low Energy(BLE)基于IEEE 802.15.1的的低功耗無線通訊技術(shù)。只是協(xié)議升級(jí),無需硬件升級(jí),可充分利用現(xiàn)有手機(jī)的藍(lán)牙功能,快速部署智能終端。不支持網(wǎng)狀網(wǎng)絡(luò),不支持多跳。因此要求傳輸雙方都必須在無線信號(hào)可直接到達(dá)的范圍之內(nèi)。這一點(diǎn)直接限制了傳輸?shù)木嚯x。BLE 4.1之后,雖然可以自組Mesh網(wǎng),但硬件須升級(jí)。
SUB 1G1GHz以下的ISM無線通訊技術(shù)。傳輸距離可達(dá)2~100km。協(xié)議棧依賴芯片廠商提供。更像一種通訊方式,而非通訊解決方案。
Low Power Wifi低功耗的wifi技術(shù),有兩個(gè)變種:普通型和802.11ah。傳輸速度高。普通型兼容現(xiàn)有wifi設(shè)備。802.11ah穿透性好。功耗仍然比Zigbee和BLE大一個(gè)數(shù)量級(jí)。
ThreadGoogle在IEEE 802.15.4的基礎(chǔ)上構(gòu)建的6LowPan方案。由于MAC層和Zigbee相同,因此具備Zigbee的大多數(shù)優(yōu)點(diǎn),且協(xié)議更友好(設(shè)計(jì)思想接近IPV6)。不兼容現(xiàn)有設(shè)備,市場(chǎng)前景有待觀察。
UWB(Ultra Wideband)一種無載波通信技術(shù),利用納秒至微微秒級(jí)的非正弦波窄脈沖傳輸數(shù)據(jù)。UWB能在10米左右的范圍內(nèi)實(shí)現(xiàn)數(shù)百M(fèi)bit/s至數(shù)Gbit/s的數(shù)據(jù)傳輸速率。尚處于試驗(yàn)階段,沒有成功的產(chǎn)品。
電力載波基于電力線傳輸?shù)挠芯€通訊協(xié)議。無須布線,傳輸速度高(500Mbps),距離遠(yuǎn)(500m)。不適合無電力線的場(chǎng)景。
NB-LTE & NB-CIoT都是蜂窩無線通信網(wǎng)向物聯(lián)網(wǎng)進(jìn)軍的產(chǎn)物。前者由Nokia、Ericsson和Intel提出,而后者由華為提出。號(hào)稱與現(xiàn)有LTE網(wǎng)絡(luò)兼容,但2015年9月才推出,具體規(guī)格不詳。

總結(jié)

以上是生活随笔為你收集整理的CC2530, 各种智能家居通信技术比较的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。