• slider image 276
  • slider image 277
  • slider image 278
  • slider image 279
  • slider image 280
  • slider image 281
:::


Browsing this Thread:   1 Anonymous Users






請問PIC18F27Q43的SPI Client Mode RX的速度限制與設定
#1
新會員
新會員


查看用戶資訊
MPLAB X IDE v5.40
XC8(v2.32)
-------

使用PIC18F27Q43
SPI 的Client Mode
只做接收Receive

CS下拉為0時
開始接收資料
直至CS恢復成1為止

遭遇到的困難:
目前SPI傳送5MHz的資料皆可正常接收
7MHz以上
就會開始出現資料缺少的情形

例如傳送
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07
接收會變成
0x00 0x01 0x02 0x04 0x05 0x06 0x07

SPI1INTFbits.RXOIF 1;

-------

Q1: 最高可接受的SPI頻率為多少?
------

Q2: 或者速度受限是因為設置錯誤?
以下為目前設置
初始化如下
void SPI1_Initialize(void)

    
SPI1CON0 0x80;
    
SPI1CON1 0x34;
    
SPI1CON2 0x01;
    
SPI1CLK 0x03;
    
SPI1BAUD 0x00;

    
PIE3bits.SPI1RXIE 1;
    
SPI1_SetRxInterruptHandler(SPI1_DefaultRxHandler);
    
    
SPI1INTEbits.RXOIE 1;
    
SPI1INTFbits.RXOIF 0;
}


中斷程式裡
if(PIE3bits.SPI1RXIE == && PIR3bits.SPI1RXIF == 1)
    {               
        
DataBuf[DataBufCnt++] = SPI1RXB;
    }

讀取時,沒有其他任務中斷
求解,感恩謝謝~~~

發表於: 3/25 15:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問PIC18F27Q43的SPI Client Mode RX的速度限制與設定
#2
版主
版主


查看用戶資訊
PIC18F27Q43 的 SPI 在 Client Mode (Slave) 時,Data Sheet Page 913 有說明是: 在接收模式下是 20MHz, 在 Full-Duplex Mode下是 10MHz。

檢查一下 SPI 的工作模式是否與 SPI Master 同一個 Mode。SPI 依上下緣依上下緣的不同設定有四種工作模式: Mode00, Mode01 ~ Mode11。

請用示波器檢查一下 SOI & SCK 的波形在高速時是否還是正確的,也檢查一下 Master 的 CS 訊號是否正常。

SPI 的 CLK 是 Master 送的,檢查看看 Master 所送出的頻率是否正常。

發表於: 3/26 13:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問PIC18F27Q43的SPI Client Mode RX的速度限制與設定
#3
新會員
新會員


查看用戶資訊
感謝您的回覆!!

SPI 的工作模式Master 和Slave皆設定為Mode3
SCK Idle high
CKE Idle to active
SDI is sampled in the middle of data output time

Master 送出的訊號如附圖(左上)
Slave設定為
SPI1CON1 0x34;


Master 的 CS 訊號如附圖(左下)
Master 的 CLK如附圖(左上)
皆正確
--
以下為5MHz和7.5MHz的對照
邏輯分析儀偵測的點為PIC SPI輸入端
對照PIC除錯模式中的暫存器

5MHz時
邏輯分析儀偵測到傳送為3000Byte 5MHz的資料
而PIC接收到3000Byte的正確資料
如附圖(右上)

7.5MHz時
邏輯分析儀偵測到傳送為3000Byte 5MHz的資料
而PIC接收到2793Byte的有遺漏資料
如附圖(右下)

Attach file:



jpg  圖片8.jpg (298.91 KB)
79797_605da82422d31.jpg 1555X1022 px

發表於: 3/26 17:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問PIC18F27Q43的SPI Client Mode RX的速度限制與設定
#4
版主
版主


查看用戶資訊
請問雙方的傳輸線有多遠?
Sck 波形有失真,可以在 Slave 端加個 4.7k okm 的提升電阻降低 RC 時間常數後再試一下。

發表於: 3/28 10:26
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問PIC18F27Q43的SPI Client Mode RX的速度限制與設定
#5
新會員
新會員


查看用戶資訊
感謝您的回覆!!

-
spi在同一塊板子上傳輸
clk的提升電阻原先就有加上了
-

目前看起來是指令花費比較多時間的原因
將中斷裡的接收更改成
if(PIE3bits.SPI1RXIE == && PIR3bits.SPI1RXIF == 1)
    {               
        do
        {
            do
            {
                
DataBuf[DataBufCnt++] = SPI1RXB;
                
PIR3bits.SPI1RXIF 0;        
            }
            while(
PIR3bits.SPI1RXIF == 1);
        }
        while(!
IO_RA4_GetValue());
    }




7.5 MHz已可接收完整資料
目前速度已勘用

接下來預計這部分改以組合語言寫
另外也會再確認一次clk波型失真的原因
希望速度可以再往上提升

感謝您的回覆!!

發表於: 3/30 10:31
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 請問PIC18F27Q43的SPI Client Mode RX的速度限制與設定
#6
版主
版主


查看用戶資訊
SPI 速度提高時使用中斷接收會受到限制,一般會建議改用 SPI to DMA 的接收方式。

底下是使用 DMA 的方式,可以參考看看。

https://ww1.microchip.com/downloads/en ... it-PIC-MCUs-90003192A.pdf

Example 5-1. ASSIGNING DMA1 HIGHEST PRIORITY USING THE SYSTEM
ARBITER
// System Arbiter Configuration
ISRPR 0x01// Interrupt Service Routine Priority;
MAINPR 0x02// Main Routine Priority;
DMA1PR 0x00// DMA1 Priority;
DMA2PR 0x03// DMA2 Priority;
SCANPR 0x04// Scanner Priority;
asm (”BCF INTCON07”); // disable Global Interrupts
asm (”BANKSEL PRLOCK”);
asm (”MOVLW 0x55”);
asm (”MOVWF PRLOCK”); // Arbiter Priority lock
asm (”MOVLW 0XAA”);
asm (”MOVWF PRLOCK”);
asm (”BSF PRLOCK0”);
asm (”BSF INTCON07”); // enable Global Interrupts

發表於: 3/31 9:51
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
[ more... ]

Microchip CAE 空中教室

教育訓練中心

課程 - 台北教育訓練中心
課程 - 新竹教育訓練中心
課程 - 高雄教育訓練中心
教育訓練中心介紹
購買 - 實驗工具
臺灣實驗板介紹與資源