dsPIC30F6014提供了2個SPI接口模塊,每個接口模塊包括三個特殊功能寄存器和四個引腳。SPIxBUF是數據緩沖寄存器。需要注意的是,接收緩沖SPIxRBF和發(fā)送緩沖SPIxTBF共享同一個地址,即它們都是地址映射到SPIxBUF的。也就是說,當對接收或發(fā)送緩沖寄存器操作時,都只能對SPIxBUF進行操作,而不能直接對SPIxRBF或SPIxTBF進行操作。SPIxCON是控制寄存器,用來對sPI模塊的操作模式等進行配置;SPIxSTAT是狀態(tài)寄存器,用來標示SPI模塊所處的狀態(tài)。其模塊框圖如圖1所示。
通過對控制寄存器的配置,可以將SPI模塊設置為8位或16位模式、主模式或從模式、幀同步等多種操作模式,還可以對時鐘邊沿、時鐘分頻倍數等進行配置。這里使用了以dsPIC為主,ISD為從的主從模式。MICROCHIP提供的外圍接口庫可以方便地完成這些配置工作。
dsPIC Language Tools Libraries是MictoChip公司提供給開發(fā)者的一套工具庫,其中主要含3個子庫.DSP庫,提供常用的DSP函數;外圍接口庫,提供對dsPIC系列所有外圍接口的驅動函數,包括SPI接口;標準C及數學函數庫,可在MICROCHIP的*****下載(www.MICROCHIP. com)。我們使用其中的外圍接口庫中的SPI庫函數即可。SPI庫中主要包括以下幾個函數:
、賑onfigIntSPIx SPI中斷配置函數。該函數可以對sPI接口的中斷使能位以及中斷優(yōu)先級進行配置,返回值為空。
、贑loseSPlx關閉SPI接口。
、跠ataRdySPlx SPl接口數據就緒。該函數用來判斷SPI接收緩沖區(qū)中是否有數據等待讀出。若返回值為1,表示緩沖區(qū)中數據已經就緒,等待讀出;若返回值為0,則標示緩沖區(qū)為空。
④ReadSPIx讀SPI接口緩沖區(qū)。
、軼riteSPIx向SPI接口發(fā)送緩沖區(qū)寫數據。
、轔penSPIx打開SPI接口。該函數包含2個參數:configl和config2。configl中包含對SPI接口操作模式的配置信息,將寫入控制寄存器;config2中包含SPI的狀態(tài)信息,將寫入狀態(tài)寄存器。該函數在打開SPI接口的同時完成對其的配置。
⑦puasSPIx函數將一個字符串數據寫入到發(fā)送緩沖區(qū)中。
⑧getsSPIx函數將從接收緩沖區(qū)讀人指定長度的字符串數據,并轉存到指定的空間。
除了這8個函數以外,該庫還提供了相應的宏指令完成同樣的功能,可以在程序中方便地使用。
維庫開發(fā)網

