1 引言 在我國目前電力緊缺的形勢下,監控電力以確保安全用電非常重要。對電網分析儀的研究和改造一直是當前研究的熱點。如果電網分析儀采用一個DSP,既采樣計算電網參數,又負責控制部分的運轉,由于在實際應用中要求DSP處理的信息可能很多,工作量很大,這樣將會影響分析儀的處理速度,降低其工作效率。因此,這里提出一種新一代的電網分析儀,采用DSP和AVR單片機構成雙CPU處理器平臺,并充分利用DSP處理大容量數據和復雜算法的能力.以及單片機接口的控制能力。ATmegal28單片機負責外圍電路控制,包括開關量輸出報警與控制、監測輸入開關量、模擬量的輸出、與上位機的通信以及計時和存儲參數,參數是由TMS320F2812 DSP采樣計算獲得,計算完成后,DSP將數據傳送給AVR單片機,而監測的參數也由用戶預先設置后再經DSP傳輸。 2 SPI通信 根據系統設計需求,DSP和AVR單片機之間需SPI接口數據總線實現數據傳輸。SPI是一種串行總線的外設接口.只需4根總線就可與外設相連,而且SPI是一種真正的同步方式,兩臺設備在同一個時鐘下工作嘲。正是由于SPI通信占用的接口線少,通信效率高,并且這兩款:DSP與AVR單片機都支持SPI接口,因而SPI通信是目前一種較好的設計方案。 由于DSP與AVR單片機的數據寄存器都是移位寄存器,當有數據從一個寄存器移出時,則另一端有數據移入.當移完8位,一次SPI通信結束。不同的是ATmegal28在通信過程中接收和發送的數據始終在一個寄存器SPDR中,因此才有同時收發。而DSP的收發寄存器是分開的,發送數據用SPITXBUF,接收數據用SPIRXBUF,8位的數據從AVR的SPDR移入DSP的SPIRXBUF,同時DSP的SPITXBUF又向AVR的SPDR移入數據,SPDR每移出1位,其本身也移進1位,相應DSP中的SPIRXBUF移入1位。SPITXBUF移出1位,從而完成16位環形移位。DSP與AVR的SPI連接如圖1所示,其中XXXX為片選信號,低電平有效。 3 器件選型 3.1 TMS320F2812簡介 TMS320F281x系列DSP是TI公司推出的數字信號處理器,該系列處理器是基于TMS320C2xx內核的定點數字信號處理器,內部集成有多種先進的外設,為電機及其他運動控制應用實現提供良好平臺。TMS320F2812的150 MI/s的處理速度可滿足快速的處理大量數據和算法的要求。 TMS320F2812具有豐富的外設模塊:128 K的Flash程序存儲器.多達128 K的ROM,2個事件管理器模塊,具有看門狗定時器模塊(WDT)、串行通信接口(SCI)、串行外設接口(SPI),外設中斷擴展模塊支持45個外設中斷。 3.2 ATmega128簡介 AVR單片機是8位,RISC結構的單片機。而ATmegal28屬于AVR中配置最高的器件,可達16 MI/s/MHz的性能,其內部集成:128 K的Flash程序存儲器,4 K的EEPROM和4 K的SRAM。2個串行通信接口(USART),1個8位的TWI(I2C)總線接口,1個串行外設接口(SPI),53個通用I/O端口,4個定時,計數器,因此足夠滿足該系統設計所需的控制功能。 3.3 74LVC4245簡介 由于TMS320F2812與ATmegal28的邏輯電平不同,TMS320F2812的邏輯高電平是3.3 V,而ATmegal28的邏輯高電平是5 V,需連接一個電平轉換器,這里選用74LVC4245。74LVC4245是3.3 V和5 V兩種電平連接時的電平轉換器,提供了8路輸入和8路輸出。通過74LV4245的DIR引腳控制信號的傳輸方向,將其傳輸方向始終置為B到A,其OE引腳控制器件使能或處于隔離狀態。 4 系統硬件設計 圖2為系統硬件設計電路圖。其中,SCK為時鐘信號,用來為SPI提供時鐘脈沖,SS為片選信號,當SS拉低時,SPI觸發,DSP與AVR之間實現通信。MOSI是主出從入。對于主機來說,由MOSI引腳輸出數據;對于從機來說,則是由MOSI引腳輸入數據;而MISO則相反,是主人從出引腳,對于主機,是由MISO腳輸人數據,對于從機,從MISO引腳輸出數據。主機還可通過復位引腳在必要的條件下(如主機復位時)使從機復位。 由于ATmegal28的MISO引腳是向外發送,與其他4個引腳不同,而74LVC4245方向是B到A,因此該引腳接法不同于其他引腳,需要通過一只分壓電阻,并使用一個二極管將其電壓箝位于3.3 V。 5 系統軟件設計 5.1 通信協議 兩個設備實現通信,首先規定傳輸數據的協議。根據需求,主機應向從機發送計算數據以及配置信息,從機向主機發送報警狀態以及應答,以告知發送方消息是否正確接收,如圖3所示。 DSP與AVR單片機之間的通信協議采用內部制定的SPI通信協議。表1列出了TMS320F2812與ATmegal28之間通信的3種數據格式,接收方以起始碼辨別幀的類別。參數類型代表不同參數,如“0x01”表示設置時間。如:3D 01 0008 0A 0A 00 11 14 00 A2 FC,因為0x3D是“=”的ASCII碼,則該幀表示一個數據幀,參數類型為0x01,可知這是一個設置時間的數據幀,最后2位是CRC校驗碼,中間剩余的序列"00 08 0A 0A 00 11 14 00"為參數,即時間,設置時間為08年10月10日17點20分O秒,使參數為4xN字節是為了保持與上一代產品相兼容,當從機接收后并校驗正確后,將設置好時間并返回表示正確的應答幀。 5.2 SPI初始化 TMS320F2812的初始化包括:配置I/O端口為具有SPI特殊功能的接口,選定主從機,數據傳送模式、波特率和發送接收數據長度,所有設置都是通過設計相應的SPI控制寄存器實現。 ATmegal28的初始化與TMS320F12812相似,不同的是,由于ATmegal28是從機,因此不用選擇波特率,同時應該注意的是,數據傳送模式應保持與主機一致。數據傳送模式有4種,是由設置控制寄存器里的CPOL和CPHA來設定的,如表2所示。 TMS320F2812的SPI通信未采用中斷方式.因為它是主要發送者,當ATmegal28有數據發送來時,通過外部中斷得知。ATmegal28是采用中斷方式,當有數據發送來時,進入SPI中斷,開始接收數據。 5.3 DSP的接收和發送 以下為DSP接收數據的程序代碼: 其中.SpiaRegs.SPISTS.bit.INT_FLAG是接收完成標志位。當一個字節傳送完畢后.SpiaRegs.SPISTS.bit.INT_FLAG置1.由于TMS320F2812的SPI數據寄存器是16位的,因此取低8位即為所接收的數據。 以下為DSP的發送數據的程序代碼: 同理.當DSP發送數據時.首先判斷緩存里的數據是否有被移走,一旦判斷數據移走,馬上將要發送的數據寫入緩存。 5.4 AVR的發送和接收 SPIF是發送完成標志,當SPDR里的數據發送完后,SPIF置1,此時可向SPDR寫數據。注意AVR單片機向DSP發送數據前先向DSP發送一個中斷信號。ATmegal28接收數據采用中斷方式完成數據接收,中斷程序的流程圖如4所示。 6 注意事項 (1)拉低片選信號SS后,需延時再發送數據。由于邏輯電平的不同,應在TMS320F2812與ATmegal28之間加電平轉換器74LV4245,當主機將片選信號拉低后。由于74LVC4245的存在,兩者不能立即工作,會產生一個延時,因此在軟件編程中,需要加一個延時函數。一般來說延時1μs就足夠了。 (2)AVR往SPDR寫數據時,SS被拉高。一般來說,兩個MCU之間的數據傳輸不會只有1個字節。在設計中,當從機向主機發送數據時,當主機接收完第一個字節后,如果不將片選信號SS拉高.則會造成從機不能將數據寫入寄存器內,主機也不能正確接收數據,這樣造成數據丟失、錯誤。因此,每接收完一個字節主機都要將丙拉高.待從機寫入數據后,再將SS拉低,這樣數據才能夠正確傳輸。 7 結語 實驗證明.SPI通信完成TMS320F2812與ATmegal28之間的通信完全滿足系統需求。因為SPI時序簡單,傳輸速度快,占用的接口線少,簡化了系統設計。同時運用雙CPU設計系統,增強了系統的實時處理能力,減輕主CPU負擔,提高了產品的性能。 |