久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9056|回復(fù): 0
收起左側(cè)

PIC32 SPI簡介(主/從模式)

[復(fù)制鏈接]
ID:51090 發(fā)表于 2014-9-22 15:58 | 顯示全部樓層 |閱讀模式
本帖最后由 xiaojuan 于 2014-9-22 16:00 編輯

出自枯葉之蝶的博客
SPI串行同步接口(有時鐘脈沖)
串行外設(shè)接口(Serial Peripheral Interface,SPI)模塊是用于同外部外設(shè)和其他單片機器件進行
通信的同步串行接口。這些外設(shè)可以是串行EEPROM、移位寄存器、顯示驅(qū)動器和模數(shù)轉(zhuǎn)換器
(ADC)或音頻編解碼器。

SPIx 串行接口由以下四個引腳組成:(可由引腳的映射確定四個引腳)
?? SDIx:串行數(shù)據(jù)輸入
?? SDOx:串行數(shù)據(jù)輸出
?? SCKx:移位時鐘輸入或輸出
?? SSx:低動態(tài)功耗從選擇或幀同步I/O 脈沖


主模式下SPI 模塊的工作原理如下所述:
一句話概括:數(shù)據(jù)由用戶寫入SPIxbuf然后裝入SPIXTXB發(fā)送緩沖區(qū)移入移位寄存器SPIxSR,僅當存在待發(fā)送數(shù)據(jù)時波特發(fā)生器才產(chǎn)生對應(yīng)數(shù)據(jù)位模式的時鐘脈沖,一個脈沖一個數(shù)據(jù)位同步從移位寄存器SPIxSR發(fā)送至數(shù)據(jù)輸出引腳SDOX。
1. 一旦模塊設(shè)置為主模式工作并使能,待發(fā)送數(shù)據(jù)就會寫入SPIxBUF 寄存器。
SPITBE 位(SPIxSTAT<3>)清零。
2. SPIxTXB 的內(nèi)容移入移位寄存器SPIxSR (見圖23-8),且模塊將SPITBE 位清零。
3. 一組8/16/32 個時鐘脈沖將8/16/32 位發(fā)送數(shù)據(jù)從SPIxSR 移出到SDOx 引腳,同時將
SDIx 引腳的數(shù)據(jù)移入SPIxSR。
4. 當傳輸結(jié)束時,將發(fā)生以下事件:
a) 中斷標志位SPIxRXIF 置1。通過將中斷允許位SPIxRXIE 置1 來允許SPI 中斷。
SPIxRXIF 標志不會被硬件自動清零。
b) 此外,當正在進行的發(fā)送和接收操作結(jié)束時, SPIxSR 的內(nèi)容將移入SPIxRXB。
c) 模塊將SPIRBF 位(SPIxSTAT<0>)置1,指示接收緩沖區(qū)已滿。一旦用戶代碼讀取了
SPIxBUF,硬件就會將SPIRBF 位清零。在增強型緩沖模式下, SPIRBE 位SPIxSTAT<5>)
會在SPIxRXB FIFO 緩沖區(qū)全空時置1,在不全空時清零。
5. 當SPI 模塊需要將數(shù)據(jù)從SPIxSR 傳輸?shù)絊PIxRXB 時,如果SPIRBF 位置1 (接收緩沖
區(qū)滿),模塊會將SPIROV 位(SPIxSTAT<6>)置1,指示產(chǎn)生了溢出條件。
6. 只要SPITBE 位(SPIxSTAT<3>)置1,用戶軟件就可以在任何時候?qū)⒋l(fā)送數(shù)據(jù)寫入
SPIxBUF。寫操作可以與SPIxSR移出先前寫入的數(shù)據(jù)同時發(fā)生,因此可以允許連續(xù)發(fā)送。
在增強型緩沖模式下,SPITBF 位(SPIxSTAT<1>)會在SPIxTXB FIFO 緩沖區(qū)全滿時置
1, 在不全滿時清零。
SPITBE:SPI 發(fā)送緩沖區(qū)空狀態(tài)位(1)(empty)
1 = 發(fā)送緩沖區(qū)SPIxTXB 為空
0 = 發(fā)送緩沖區(qū)SPIxTXB 非空
當SPI 將數(shù)據(jù)從SPIxTXB 傳輸?shù)絊PIxSR 時,該位由硬件自動置1。
當通過寫SPIxBUF 裝入SPIxTXB 時,該位由硬件自動清零。
SPITBF:SPI 發(fā)送緩沖區(qū)滿狀態(tài)位(1)(full)
1 = 發(fā)送尚未開始, SPIxTXB 為滿
0 = 發(fā)送緩沖區(qū)未滿
標準緩沖模式:
當內(nèi)核通過寫SPIxBUF 存儲單元裝入SPIxTXB 時,該位由硬件自動置1。
當SPI 模塊將數(shù)據(jù)從SPIxTXB 傳輸?shù)絊PIxSR 時,該位由硬件自動清零。
增強型緩沖模式:
當FIFO 中沒有可用空間時置1。
CKE:SPI 時鐘邊沿選擇位(edge)
1 = 串行輸出數(shù)據(jù)在時鐘從工作狀態(tài)轉(zhuǎn)變?yōu)榭臻e狀態(tài)時變化(見CKP 位)
0 = 串行輸出數(shù)據(jù)在時鐘從空閑狀態(tài)轉(zhuǎn)變?yōu)楣ぷ鳡顟B(tài)時變化(見CKP 位)
CKP:時鐘極性選擇位(polarity)
1 = 空閑狀態(tài)時時鐘信號為高電平;工作狀態(tài)時為低電平
0 = 空閑狀態(tài)時時鐘信號為低電平;工作狀態(tài)時為高電平


當僅當移位寄存器SPIXSR有待發(fā)送數(shù)據(jù)時,產(chǎn)生時鐘脈沖,由CKP決定時鐘空閑極性,由
CKE決定數(shù)據(jù)發(fā)送的時鐘沿。
例如8位數(shù)據(jù)模式,產(chǎn)生8個時鐘脈沖,每個時鐘脈沖發(fā)送一位數(shù)據(jù),實現(xiàn)同步發(fā)送數(shù)據(jù)。傳輸完一條數(shù)據(jù)后產(chǎn)生中斷SPIxRXIF(在SPIxBUF 接收緩沖區(qū)中匯集新數(shù)據(jù)時,將會發(fā)生該事件。)
1 主模式工作
要將SPI 模塊設(shè)置為主模式工作,請執(zhí)行以下步驟:
1. 禁止相應(yīng)IECx 寄存器中的SPI 中斷。              mSPI1TXIntEnable(0);//發(fā)送完成中斷
2. 通過清零ON 位停止并復(fù)位SPI 模塊。             SPI1CON=0;     //清零15位
3. 清除接收緩沖區(qū)。                               rData=SPI1BUF; //讀取SPI緩沖區(qū)數(shù)據(jù)后清零
4. 如果使用標準緩沖模式,則將ENHBUF 位(SPIxCON<16>)清零,如果使用增強型緩沖
模式,則將它置1。                                SPI1CONCLR=0X10000;
5. 如果不希望使用SPI 中斷,則跳過此步驟并繼續(xù)步驟5。否則,需要執(zhí)行以下附加步驟:
a) 清零相應(yīng)IFSx 寄存器中的SPIx 中斷標志/ 事件。
b) 在相應(yīng)的IPCx 寄存器中寫入SPIx 中斷優(yōu)先級位和子優(yōu)先級位。
c) 將相應(yīng)IECx 寄存器中的SPIx 中斷允許位置1。
6. 寫入波特率發(fā)生器寄存器SPIxBRG。
7. 清零SPIROV 位(SPIxSTAT<6>)。
8. 將所需的設(shè)置寫入SPIxCON 寄存器,且MSTEN (SPIxCON<5>) = 1。
9. 通過將ON 位(SPIxCON<15>)置1 使能SPI 工作。
10. 將待發(fā)送數(shù)據(jù)寫入SPIxBUF 寄存器。發(fā)送(和接收)在數(shù)據(jù)寫入SPIxBUF 寄存器時立即
開始。
一. 配置引腳映射(由實際所需引腳情況決定)            
PPSOutput(2, RPB8, SDO2); 或RPB8Rbits.RPB8R=0B0100;  
PPSInput(2,SDI2,RPB13); 或 SDI2bits.SDI2=0B0011;
二. 初始化SPI
用庫函數(shù)SpiChnOpen(SpiChannel chn, SpiOpenFlags oFlags, unsigned int srcClkDiv);
SPIChannel 通道1、2即SPI1/SPI2,
SpiOpenFlags開啟的配置(見庫函數(shù)SPI.h)  附一
例如SpiOpenFlags oFlags = SPI_OPEN_MSTEN | SPI_OPEN_CKP_HIGH | SPI_OPEN_MODE8 | SPI_OPEN_ON;
主模式,時鐘空閑時高電位,8位數(shù)據(jù)模式,開啟SPI。其他默認0
srcClkDi  
  波特對外設(shè)時鐘的分頻,從而決定發(fā)送數(shù)據(jù)時鐘脈沖速度
FSCK=FPB/(2*(SPIxBRG+1))       BRG為9位寄存器(0—511)        FSCK(FPB/2—FPB/1024)
2 從模式工作
要將SPI 模塊設(shè)置為從工作模式,請執(zhí)行以下步驟:
1. 如果使用中斷,禁止相應(yīng)IECx 寄存器中的SPI 中斷。
2. 通過清零ON 位,停止并復(fù)位SPI 模塊。
3. 清除接收緩沖區(qū)。
4. 如果使用標準緩沖模式,則將ENHBUF 位(SPIxCON<16>)清零,如果使用增強型緩沖
模式,則將它置1。
5. 如果要使用中斷,則需要執(zhí)行以下附加步驟:
a) 清零相應(yīng)IFSx 寄存器中的SPIx 中斷標志/ 事件。
b) 在相應(yīng)的IPCx 寄存器中寫入SPIx 中斷優(yōu)先級位和子優(yōu)先級位。
c) 將相應(yīng)IECx 寄存器中的SPIx 中斷允許位置1。
6. 清零SPIROV 位(SPIxSTAT<6>)。
7. 將所需的設(shè)置寫入SPIxCON 寄存器,且MSTEN (SPIxCON<5>) = 0。
8. 通過將ON 位(SPIxCON<15>)置1 使能SPI 工作。
9. 發(fā)送(及接收)會在主器件提供串行時鐘時立即開始。
在從模式下,當SCKx引腳上出現(xiàn)外部時鐘脈沖時開始發(fā)送和接收數(shù)據(jù)。CKP位(SPIxCON<6>)
和CKE 位(SPIxCON<8>)決定數(shù)據(jù)在時鐘的哪個邊沿發(fā)送。

一. 配置引腳映射(由實際所需引腳情況決定)            
PPSOutput(2, RPB8, SDO2); 或RPB8Rbits.RPB8R=0B0100;  
PPSInput(2,SDI2,RPB13); 或 SDI2bits.SDI2=0B0011;
二. 初始化SPI
用庫函數(shù)SpiChnOpen(SpiChannel chn, SpiOpenFlags oFlags, unsigned int srcClkDiv);
SPIChannel 通道1、2即SPI1/SPI2,
SpiOpenFlags開啟的配置(見庫函數(shù)SPI.h)
例如
SpiOpenFlags  oFlags =
SPI_OPEN_SLVEN | SPI_OPEN_SSEN | SPI_OPEN_CKP_HIGH | SPI_OPEN_MODE8 | SPI_OPEN_ON;
從模式,從選擇使能SSx 引腳用于從模式,時鐘空閑時高電位,8位數(shù)據(jù)模式,開啟SPI。其他默認0
srcClkDi    波特對外設(shè)時鐘的分頻,從而決定發(fā)送數(shù)據(jù)時鐘脈沖速度
FSCK=FPB/(2*(SPIxBRG+1))       BRG為9位寄存器(0—511)        FSCK(FPB/2—FPB/1024)
從模式下提供了以下附加特性:
?? 從選擇同步
SSx 引腳允許同步從模式。如果SSEN 位(SPIxCON<7>)置1,則僅當SSx 引腳被驅(qū)動
為低電平時,才能使能從模式下的發(fā)送和接收。要使SSx 引腳用作輸入,就不能驅(qū)動端口輸
出或其他外設(shè)輸出。如果SSEN 位置1 且SSx 引腳被驅(qū)動為高電平, SDOx 引腳將不再被
驅(qū)動并且將變?yōu)槿龖B(tài),即使模塊在發(fā)送過程中也是如此。下次SSx 引腳被驅(qū)動為低電平時,
將使用SPIxTXB 寄存器中保存的數(shù)據(jù)重新嘗試進行被中止的發(fā)送。如果SSEN 位未置1,則
SSx 引腳不影響從模式下模塊的工作。

?? SPITBE 狀態(tài)標志的操作
SPITBE 位(SPIxSTAT<3>)的功能在從工作模式下有所不同。以下介紹了各種從工作模式
設(shè)置下的SPITBE 功能:
- 如果SSEN (SPIxCON<7>)清零,當用戶代碼將數(shù)據(jù)裝入SPIxBUF 時, SPITBE 清
零。它在模塊將SPIxTXB 中的數(shù)據(jù)傳輸?shù)絊PIxSR 時置1。這與主模式下SPITBE 位的
功能類似。
- 如果SSEN 置1,當用戶代碼將數(shù)據(jù)裝入SPIxBUF 時,SPITBE 清零。但是,它只有在
SPIx 模塊完成數(shù)據(jù)發(fā)送時才被置1。當SSx 引腳變?yōu)楦唠娖綍r,發(fā)送將被中止,但是可
能在稍后重新嘗試發(fā)送。因此,每個數(shù)據(jù)字都保存在SPIxTXB 中,直到所有位都被發(fā)
送到接收器中。
其他模式:音頻解碼模式,幀模式詳見數(shù)據(jù)手冊
中斷
SPI 模塊能夠產(chǎn)生一些中斷,以反映在數(shù)據(jù)通信期間發(fā)生的事件。它可以產(chǎn)生以下類型的中斷:
?? 接收數(shù)據(jù)可用中斷通過SPI1RXIF 和SPI2RXIF 指示。在SPIxBUF 接收緩沖區(qū)中匯集新數(shù)據(jù)
時,將會發(fā)生該事件。
?? 發(fā)送緩沖區(qū)為空,中斷通過SPI1TXIF 和SPI2TXIF 指示。在SPIxBUF 發(fā)送緩沖區(qū)中有可用空
間,可以寫入新數(shù)據(jù)時,將會發(fā)生該事件。
?? 錯誤中斷通過SPI1EIF 和SPI2EIF 指示。 當SPIxBUF 接收緩沖區(qū)存在溢出條件(即,匯集
了新的接收數(shù)據(jù),但前一個數(shù)據(jù)尚未被讀取)、當發(fā)送緩沖區(qū)數(shù)據(jù)不足或發(fā)生FRMERR 事
件時,將會發(fā)生該事件。
bit 3-2 STXISEL<1:0>:SPI 發(fā)送緩沖區(qū)為空的中斷模式位(1,3)
11 = SPIxTXIF 在緩沖區(qū)未滿(具有一個或多個空元素)時置1
10 = SPIxTXIF 在緩沖區(qū)有一半或更多元素為空時置1
01 = SPIxTXIF 在緩沖區(qū)全空時置1
00 = SPIxTXIF 在最后一個傳輸數(shù)據(jù)移出SPISR 并且發(fā)送操作完成時置1
bit 1-0 RTXISEL<1:0>:SPI 接收緩沖區(qū)為滿的中斷模式位(1,3)
11 = SPIxRXIF 在緩沖區(qū)全滿時置1
10 = SPIxRXIF 在緩沖區(qū)有一半或更多元素不為空時置1
01 = SPIxRXIF 在緩沖區(qū)不為空時置1
00 = SPIxRXIF 在接收緩沖區(qū)中的最后一個字被讀取(即,緩沖區(qū)為空)時置1

例1
點亮數(shù)碼管
#include
#pragma config FPLLIDIV = DIV_2         // PLL Input Divider (2x Divider)
#pragma config FPLLMUL = MUL_24         // PLL Multiplier (24x Multiplier)
#pragma config FPLLODIV = DIV_2         // System PLL Output Clock Divider (PLL Divide by 2)
#pragma config FNOSC = FRCPLL           // Oscillator Selection Bits (Fast RC Osc with PLL)
#pragma config JTAGEN = OFF             // JTAG Enable (JTAG Disabled)
#pragma config FWDTEN = OFF             // Watchdog Timer Enable (WDT Disabled (SWDTEN Bit Controls))
char   Led[]={0x42, 0xf3, 0x86, 0xa2, 0x33, 0x2a, 0x0a, 0xf2, 0x02, 0x22, 0x40, 0xf1, 0x84, 0xa0, 0x31, 0x28, 0x08, 0xf0, 0x00, 0x20, 0x1e, 0x0e, 0x0f, 0xbf, 0x23, 0x9b, 0x8b};
//led字庫
void spiout(char image[],int len)
{
    int i;
PORTClearBits(IOPORT_B, BIT_9);
    for (i = 0; i < len; i++)
        {
            SpiChnPutC(2, image[ i]);
        }
for(i=0;i<60;i++);  //等待數(shù)據(jù)存儲成功
PORTSetBits(IOPORT_B, BIT_9);  //鎖存數(shù)據(jù)顯示
}
int main()
{
PPSOutput(2, RPB8, SDO2);
//輸出針腳組2中,查表將針腳RPB8,作為數(shù)據(jù)輸出2口SDO2.實際連線也是如此
    SpiOpenFlags oFlags = SPI_OPEN_MSTEN | SPI_OPEN_CKP_HIGH | SPI_OPEN_MODE8 | SPI_OPEN_ON;//作為主機,時鐘脈沖空閑時高電位,8位數(shù)據(jù)模式,SPI使能
    SpiChnOpen(2, oFlags, 6);//打開通道2即SDO2,配置SPI,分頻fpbDiv(2~1024).波特率BR=Fpb/fpbDiv
    PORTSetPinsDigitalOut(IOPORT_B, BIT_9);//外部移位寄存器數(shù)據(jù)鎖存,1鎖存,0開放
//    SPI2CONCLR=(1<<15);    SPI2CONCLR=0X8000;  多種操作
    spiout(Led,4);
}

數(shù)碼管說明
所用芯片74HC595內(nèi)部有8位移位寄存器和一個存儲器,移位寄存器和存儲寄存器具有獨立的時鐘信號,數(shù)據(jù)在移位寄存器時鐘信號SHCP的上升沿輸入,在存儲寄存器時鐘信號STCP的上升沿進入到存儲寄存器中去,移位寄存器有一個串行移位輸入DS、一個串行輸出Q7’和一個異步的低電平復(fù)位MR,由于PIC32MX的輸入/輸出端口的輸出高電平為電壓3.3V,不能直接驅(qū)動5V供電的芯片74HC595,采用了的二極管與上拉電阻構(gòu)成的電平轉(zhuǎn)換匹配電路,電路簡單可靠成本低。
當SDO腳接收到PIC32MX的SPI輸出的一個低電平信號時,二極管導(dǎo)通,此時OUT1為一個低電平信號;當SDO腳接收到一個高電平信號時,二極管的OUT1端經(jīng)過上拉電阻連接到5V,以輸出高于4V以上的高電平信號,從而實現(xiàn)電平轉(zhuǎn)換的匹配功能。


當需要使用多個七段數(shù)碼管顯示時,可進行如下處理:各個74HC595共用SHCP與STCP時鐘信號,前一級74HC595的Q7’依次接到下一級74HC595的DS。


當數(shù)據(jù)全部移入所有74HC595的移位寄存器時,所有74HC595的移位寄存器都已經(jīng)更新后,利用SLCK信號將數(shù)據(jù)全部移入鎖存到存儲寄存器,從而實現(xiàn)LED顯示信號的鎖存與顯示。
附一
typedef enum
{
    // master opening mode  主
    SPI_OPEN_MSTEN =        _SPIxCON_MASK_(MSTEN_MASK), // set the Master mode
    SPI_OPEN_SMP_END =      _SPIxCON_MASK_(SMP_MASK),   // Master Sample Phase for the input bit at the end of the data out time. Otherwise data is sampled in the middle.
    SPI_OPEN_MSSEN =        _SPIxCON_MASK_(MSSEN_MASK), // enable the driving of the Slave Select (SS) output pin by the Master
    SPI_OPEN_MSSEN_HIGH =   _SPIxCON_MASK_(FRMPOL_MASK),    // Master driven SS output active high. Otherwise low.
    // slave opening mode   從
    SPI_OPEN_SLVEN =        0,              // set the Slave mode
    SPI_OPEN_SSEN =         _SPIxCON_MASK_(SSEN_MASK),  // enable the SS input pin.
    SPI_OPEN_MCLKSEL =   _SPIxCON_MASK_(MCLKSEL_MASK),

    // clocking opening mode   時鐘
    SPI_OPEN_CKP_HIGH = _SPIxCON_MASK_(CKP_MASK),  // set the clock polarity to (idle-high, active-low). Otherwise is (idle-low, active-high).
    SPI_OPEN_CKE_REV  = _SPIxCON_MASK_(CKE_MASK), // set the Clock Edge reversed: transmit from active to idle. Otherwise transmit when clock goes from idle to active
    // data characters opening mode    數(shù)據(jù)
    SPI_OPEN_MODE8 =        0,              // set 8 bits/char
    SPI_OPEN_MODE16 =       _SPIxCON_MASK_(MODE16_MASK),    // set 16 bits/char
    SPI_OPEN_MODE32 =       _SPIxCON_MASK_(MODE32_MASK),    // set 32 bits/char
    // framed mode opening mode  幀高級
    SPI_OPEN_FRMEN =        _SPIxCON_MASK_(FRMEN_MASK), // Enable the Framed SPI support. Otherwise the Framed SPI is disabled.
    SPI_OPEN_FSP_IN =       _SPIxCON_MASK_(FRMSYNC_MASK),   // Frame Sync Pulse (FSP) direction set to input (Frame Slave).
                                        // Otherwise the FSP is output and the SPI channel operates as a Frame Master.
    SPI_OPEN_FSP_HIGH =     _SPIxCON_MASK_(FRMPOL_MASK),    // FSP polarity set active high. Otherwise the FSP is active low.
    SPI_OPEN_FSP_CLK1 =     _SPIxCON_MASK_(SPIFE_MASK), // Set the FSP to coincide with the 1st bit clock.
                                        // Otherwise the FSP precedes the 1st bit clock
    SPI_OPEN_FSP_WIDE =     _SPIxCON_MASK_(FRMSYPW_MASK),   // set the FSP one character wide. Otherwise the FSP is one clock wide.
    SPI_OPEN_FRM_CNT1 =     (0 << _SPIxCON_MASK_(FRMCNT_POSITION)), // set the number of characters per frame (Frame Counter) to 1 (default)
    SPI_OPEN_FRM_CNT2 =     (1 << _SPIxCON_MASK_(FRMCNT_POSITION)), // set the Frame Counter to 2
    SPI_OPEN_FRM_CNT4 =     (2 << _SPIxCON_MASK_(FRMCNT_POSITION)), // set the Frame Counter to 4
    SPI_OPEN_FRM_CNT8 =     (3 << _SPIxCON_MASK_(FRMCNT_POSITION)), // set the Frame Counter to 8
    SPI_OPEN_FRM_CNT16 =    (4 << _SPIxCON_MASK_(FRMCNT_POSITION)), // set the Frame Counter to 16
    SPI_OPEN_FRM_CNT32 =    (5 << _SPIxCON_MASK_(FRMCNT_POSITION)), // set the Frame Counter to 32
    // enhanced buffer (FIFO) opening mode 增強型緩存及中斷模式
    SPI_OPEN_ENHBUF =       _SPIxCON_MASK_(ENHBUF_MASK),    // enable the enhanced buffer mode
    SPI_OPEN_TBE_NOT_FULL =   (3 << _SPIxCON_MASK_(STXISEL_POSITION)),    // Tx Buffer event issued when Tx buffer not full (at least one slot empty)
    SPI_OPEN_TBE_HALF_EMPTY = (2 << _SPIxCON_MASK_(STXISEL_POSITION)),    // Tx Buffer event issued when Tx buffer >= 1/2 empty
    SPI_OPEN_TBE_EMPTY =      (1 << _SPIxCON_MASK_(STXISEL_POSITION)),    // Tx Buffer event issued when Tx buffer completely empty
    SPI_OPEN_TBE_SR_EMPTY =   (0 << _SPIxCON_MASK_(STXISEL_POSITION)),    // Tx Buffer event issued when the last character is shifted out of the internal Shift Register
                                            // and the transmit is complete
    SPI_OPEN_RBF_FULL =      (3 << _SPIxCON_MASK_(SRXISEL_POSITION)),    // Rx Buffer event issued when RX buffer is full
    SPI_OPEN_RBF_HALF_FULL = (2 << _SPIxCON_MASK_(SRXISEL_POSITION)),    // Rx Buffer event issued when RX buffer is >= 1/2 full
    SPI_OPEN_RBF_NOT_EMPTY = (1 << _SPIxCON_MASK_(SRXISEL_POSITION)),    // Rx Buffer event issued when RX buffer is not empty
    SPI_OPEN_RBF_EMPTY =     (0 << _SPIxCON_MASK_(SRXISEL_POSITION)),    // Rx Buffer event issued when RX buffer is empty (the last character in the buffer is read).
    // general opening mode   常用
    SPI_OPEN_DISSDO = _SPIxCON_MASK_(DISSDO_MASK), // disable the usage of the SDO pin by the SPI
    SPI_OPEN_DISSDI = _SPIxCON_MASK_(DISSDI_MASK), // disable the usage of the SDI pin by the SPI
    SPI_OPEN_SIDL =   _SPIxCON_MASK_(SIDL_MASK  ), // enable the Halt in the CPU Idle mode. Otherwise the SPI will be still active when the CPU is in Idle mode.
    SPI_OPEN_ON =     _SPIxCON_MASK_(ON_MASK    ), // turn ON the SPI (not used in SpiChnOpen)
}SpiOpenFlags;  // open flags that can be used with SpiChnOpen. Defined in the processor header file.
轉(zhuǎn)載請注明出處謝謝
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: av中文在线播放 | 国产精品久久久久久久久久久免费看 | 国产欧美日韩在线播放 | 成人精品在线观看 | 日韩一三区 | 国产精品夜间视频香蕉 | 国产精品欧美一区二区三区 | 国产成人小视频 | 欧美国产免费 | 9999国产精品欧美久久久久久 | 国产激情在线看 | 国产精品久久久久久久模特 | 久久久久久99 | aaa天堂 | 亚洲国产精品91 | 午夜国产 | 精品国产欧美一区二区 | 久久久精品影院 | 亚洲一区二区中文字幕在线观看 | 亚洲av一级毛片 | 亚洲精品视频三区 | 国产视频1区2区 | 日本久久网 | 日韩av一区二区在线观看 | 黑人巨大精品欧美一区二区免费 | 亚洲二区在线 | 青青久草 | 国产 欧美 日韩 一区 | 成人小视频在线观看 | 美女黄网站 | 中文字幕一区二区三区日韩精品 | 老熟女毛片| 国产色婷婷精品综合在线手机播放 | 欧美在线观看黄色 | 五月婷婷视频 | 国产成人精品一区二区三区视频 | 午夜影院网站 | 欧美日韩中文字幕在线 | 成人一级视频在线观看 | 国产一二区在线 | 99国产在线|