十年單片機開發方案公司深圳英銳恩分享基于PIC的無線數據傳輸發射機設計。
摘要:以PIC單片機和CC1000為核心器件,設計并實現無
無線數據傳輸發射機;介紹PIC16C73芯片和CC1000芯片的性能,詳細討論發射機的硬件和軟件系統設計并予以實現。
關鍵詞:無線數據 傳輸發射機 PIC CC1000
本文介紹以PIC16C73和CC1000為基本部件,設計并實現無線數據傳輸發射機的過程。
1 PIC16C73及CC1000簡介
PIC16C73是Microchip公司生產的一種高性價比的8位嵌入式微控制器。
CC1000是為在無線條件下應用所設計的一種極低功率單芯片射頻收發器。它主要是為315、433、868和915MHz的ISM和SRD設備所設計,可以編程工作在300~1000MHz范圍之間的任一頻率上。它具有極低的電流消耗、高靈敏度、體積小、低供電電壓、FSK數據傳輸率可達76.8kbps、FSK調制頻譜修正等特點,它還為用戶提供了簡單易用的開發包。使用CC1000芯片設計電路簡單,不需要使用極少的外部元件、不需要外部射頻轉換和中頻濾波器。
2 系統設計
本無線數據傳輸發射機框圖如圖1所示。
圖中,PIC16C73接收數字或模擬信號,經過緩存、組幀后,將數據傳送到射頻發射機,由CC1000實現FSK調制后發射出去。
本設計中PIC16C73的振蕩周期為4MHz,指令周期為1μs。CC1000工作在發射狀態,發射頻率306.874457MHz,頻偏64kHz,速率7638Kbps,發射功率10dBm。發射數據采用自定義幀格式,其格式為:
4字節位同步字—0AAH,0AAH,0AAH,0AAH;
2字節幀同步字(3位0加13位巴克碼)—1FH,35H;
1字節地址或命令;
50字節數據。
上述57字節組成一幀,每兩幀之間間隔為8.25ms。
3 硬件設計
單片機通過對3-wire串行設置接口(PDATA,PCLK和PALE)編程,使CC1000處在不同工作模式下。為實現數據回讀,PDATA必須使能雙向引腳,另一個雙向
引腳被用來實現數據(DIO)的發送和接收。提供數據定位的位置寄存器,完全設置CC1000需要發送29個16位的數據幀(7位地址位、1位讀/寫位和8位數據位)。
在每個寫循環中,編程數據PDATA線上都發送16位數據,每個數據幀中前7位為地址位,下一位是讀/寫位(高電平寫,低電平讀),后8位是數據。在地址和讀/寫位傳送過程中,程序地址鎖存器使能PALE線必須保持低電平,然后傳送8位數據位。PDATA上的數據同步在編程時鐘PCLK的負沿完成。當D0,即8位數據位的最后一位已經載入時,數據就會被載入內部設置寄存器,時序如圖3所示。
這些設置寄存器也可被單片機通過同樣的設置接口讀取。7位地址首先被發送,然后讀/寫位被置為低來,開始數據回讀,時序如圖4所示。
4 軟件設計
4.1 總體流程圖
軟件采用模塊化程序設計方法,圖5是總體流程。
4.2 初始化
初始化是一項十分重要的工作,需要分別對PIC16C73和CC1000兩個芯片進行初始化。由于本設計中要完成PC機與PIC之間的異步通信和PIC的模/數據換功能,所以除了PIC16C73的各個PORT端口外,還應對串行通信接口SCI部件和A/D轉換部件等進行初始化。在單片機初始化完成后,通過它對CC1000進行初始化,使其工作在發射模式,其流程如圖6所示。
4.3 中斷服務子程序設計
PIC16C73有多達11種中斷源,本設計使用了其中的SCI異步接收中斷和A/D轉換完成中斷。初始化工作完成后,當單片機通過SCI接收完一字節數據后就會產生SCI接收中斷,另外,當單片機完成一次A/D后也會產生中斷。在產品中斷后,程序即進入中斷服務子程序,要完成數據的緩存、緩存管理及組幀、數據傳送工作。
圖6
緩存管理的目的是使用者能夠清楚地知道當前存儲數據和發送數據的進程。具體實現方法是在PIC16C73通用寄存器里開辟一個數據緩存區,由50個寄存器組成,同時自定義收發數據計數器RX_IF0和TX_IF0.RX_IF0是接收數據計數器,其中存放的值表示PIC16C73接收到第幾個數據,每接收到一個數據,就將RX_IF0加1,同時寄存器地址加1,以便接收下一個數據。當RX_IF0的值等于50時表示接收完一幀數據。TX_IF0是發送數據計數器,其中存在的值表示PIC16C73向CC1000發送了幾個數據,PIC每發送完一個數據,就把TX_IF0加1。同時寄存器地址加1,以便發送下一個數據。TX_IF0等于50時,表示已發送完一幀數據。中斷服務子程序流程如圖7所示。
編寫的程序經過調試,通過編譯生成機器碼,將其寫入PIC,再將PIC嵌入發射機電路,連接正確后,經過調試達到了無線發射機的功效。