一、無線模塊選型。
根據無線通訊的頻段,平常用的無線模塊主要有315MHZ,433MHZ,2.4GHZ。2.4G最近貌似比較火,像24L01,好多開發板上都配這一款芯片。433MHZ頻段的模塊常用的有NRF905、CC1101、SI4432。在315MHZ頻段好像做普通的遙控器比較多,像超外差模塊。
本人想做無線通信,選擇在2.4GHZ和433MHZ之間。說下區別,2.4G無線通信頻率高、波長短、傳輸速率高、繞射能力差、通信距離短。網上賣的模塊不加功率放大也就是一百米以內。433MHZ無線通信頻率低、波長較長、傳輸速率低、繞射能力強、通信距離遠。價格和2.4GHZ模塊相當,但是距離一般在幾百米甚至更遠,據說加上功率放大可達一兩千米。本人想用來遙控智能車,通信數據量不大,但是想讓距離遠一點。所以選擇433MHZ模塊,具體型號是SI4432。
二、初次接觸SI4432
該芯片價格低、傳輸距離遠,網上用的人挺多的。曾經找過一些資料發現很多商業上的無線通信也是用這一款。于是在網上買了一對,加運費一共四十多。沒有廣告嫌疑,感興趣自己搜。買回來之后開始看相關的手冊和例程。我嘞個去,需要配置的寄存器真多,而且通訊速率、頻段、前導碼、同步字等等都是自己定義的,大家寫的都不一樣。加上沒有專業的知識,更是加大難度。 賣家配的資料室51的版本,說實話程序寫的有點亂,主要是因為他們的程序是配套他們的開發板的,有很多都看不懂。而對于我們初學者而言,最需要的卻是最簡單的:簡單收發就行。我使用的控制器型號:STM32F103RB。分析了很久慢慢移植到STM32里面,失敗。多次修改,失敗。在網上搜索,網上雖然用的人多,但是資料甚少。而且一般都是51單片機驅動的,而且是虛擬SPI!然后是幾天的調試,不多說。
經過幾天的調試,終于成功,下面說下使用這款芯片的要點。
三、SPI
我用的控制芯片是STM32F103RB。SPI可以軟件模擬,也可以用硬件的。再次,建議大家用硬件的SPI,穩定,減少CPU負擔。
配置硬件SPI要點:
1、速率不要太高,SI4432手冊上說不要大于10MHZ。
2、MOSI、MOSO、SCK三個引腳配置為復用功能推挽輸出。
3、SPI的時鐘極性配置為:同步時鐘的空閑狀態為 低電平
4、SPI的時鐘的第2個跳變沿數據被采樣。(SPI_CPHA)
5、片選信號軟件控制,自己定義一個IO空控制片選吧,方便。
四、硬件連接
STM32和SI4432硬件連接,具體看模塊吧。我簡單說幾個比較重要的
1、SI4432的SDN引腳,為高時:芯片停止工作。為低時:芯片允許工作。我買的模塊里,這個引腳是被引出來的,別費勁了,直接接地,不要用IO口控制高低。高手略過。
2、模塊的引腳有些是2.54mm間距,有些是1.27mm。想DIY的朋友注意了,我當時就忘了結果買了個1.27mm的后來轉接,麻煩了。
3、盡量不要用杜邦線。我開始一直用杜邦線連起來,但是經常在發送和接收的時候出錯,初始化正常。后來用洞洞板連起來,正常。
4、SI4432是3.3V供電,電源線和地線盡量和STM32的3.3V和地線連在一起。不然的話容易出錯,水平有限,不解釋,等高人。
五、軟件調試
1、SPI配置好以后,向SI4432寫數據注意地址最高位置1。 如:SPI1_ReadWriteByte(addr|0x80)
2、 配置好以后,向0X00、0X01、0X02地址讀取,應該有返回值,具體看手冊,如果和手冊上的差不多就證明SPI通訊成功了。
3、 前導碼個數。SI4432_WriteReg(0x34, 0X0A); 0x34是向SI4432寫入前導碼的地址,0X0A是個數,但是表示其一半,也就是5個字節。
4、剛開始,不要配置幀頭。直接禁止 SI4432_WriteReg(0x32, 0x00 );// 禁止幀頭
5、SI4432有3個GPIO,一般自己是不用的,但是依然要配置,因為這個和模塊相關。具體問賣家。
6、SI4432主要三個狀態:接收狀態、發送狀態、掛起狀態。發送和接收之間可以相互轉換、但是轉換之前需要先進入掛起狀態然后至少15ms之后再進入發送或者接收狀態。程序while(1)之前最好開始就配置為掛起狀態:SI4432_WriteReg(0x07, 0x01);
六、一定要多看官方的程序設計指南和芯片的手冊,我會放到附件里。
以上算是對SI4432的初步認識和注意事項。但是這些細節是比較重要的,因為像這樣的無線模塊最主要是先實現通訊,高級的功能慢慢調。
具體程序不再分析,我會放在附件里。STM32F103RB,庫函數。測試多次,但是需要根據自己的模塊進行調整。
交流可以加黃工QQ2685896890
|