• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::

論壇索引


Board index » All Posts (EEYU)




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


感謝您的回覆!!

-
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波型失真的原因
希望速度可以再往上提升

感謝您的回覆!!

發表於: 2021/3/30 10:31
頂部


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


感謝您的回覆!!

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

發表於: 2021/3/26 17:25
頂部


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


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;
    }

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

發表於: 2021/3/25 15:05
頂部






:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
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/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------