SPI 11 轮训模式主从测试笔记

本文深入探讨了SPI通信的不同模式及其对性能的影响,特别是在48M和64M主频下SPI速率的表现。分析了模式2从机接收的问题及模式3的最优性能,指出在没有CS同步的情况下,低频主机易造成波形接收不稳定。同时,提供了主机和从机的代码示例,强调了正确设置和延迟的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   uint8_t dap, ckp;
    
    spi_mode_t mode = SPI_MODE_3;
    
    
    dap = ~mode & 0x01;
    ckp = (~mode & 0x02) >> 1;
    // SCI0 时钟开启
    CGC->PER0 |= CGC_PER0_SCI0EN_Msk;
    // 停止通道3
    SCI0->ST0 |= _0008_SCI_CH3_STOP_TRG_ON;
    // 分频器 
    SCI0->SPS0 |= (0 << SCI0_SPS0_PRS01_Pos);
    // 
    SCI0->SIR03 = _0004_SCI_SIRMN_FECTMN | _0002_SCI_SIRMN_PECTMN | _0001_SCI_SIRMN_OVCTMN;
    // SPI传输空中断
    SCI0->SMR03 = _0020_SMRMN_DEFAULT_VALUE | _8000_SCI_CLOCK_SELECT_CK01 | _0000_SCI_CLOCK_MODE_CKS |
                  _0000_SCI_TRIGGER_SOFTWARE | _0000_SCI_MODE_SPI | _0000_SCI_TRANSFER_END;
    // SPI
    SCI0->SCR03 = _0004_SCRMN_DEFAULT_VALUE | _C000_SCI_RECEPTION_TRANSMISSION | dap << 13 | ckp << 12 | _0000_SCI_INTSRE_MASK |
                  _0000_SCI_PARITY_NONE | _0000_SCI_MSB | _0000_SCI_STOP_NONE | _0003_SCI_LENGTH_8;
    // 8分频
    SCI0->SDR03 = 0<<9;// 分频=(1+x)*2
    /* Set output enable */
    if ((mode == SPI_MODE_0) || (mode == SPI_MODE_1))
    {
        SCI0->SO0 &= ~_0800_SCI_CH3_CLOCK_OUTPUT_1;
    }
    if ((mode == SPI_MODE_2) || (mode == SPI_MODE_3))
    {
        SCI0->SO0 |= _0800_SCI_CH3_CLOCK_OUTPUT_1;
    }
    SCI0->SOE0 |= _0008_SCI_CH3_OUTPUT_ENABLE;

    SCLKO11_PORT_SETTING();// P10 clk
    SDI11_PORT_SETTING();  // P11 SDI
    SDO11_PORT_SETTING();  // P12 SDO
    // P13
    PORT->P13CFG = 0x00;        /* P13 default Alternate function */ 
    PORT->PMC1 &= ~(1 << 3);    /* P13 digital function */ 
    PORT->PM1  &= ~(1 << 3);    /* P13 is used as SCLK11 output */ 
    PORT->POM1 &= ~(1 << 3);    /* P13 is normal output mode */ 
    PORT->P1   |=  (1 << 3);    /* P13 output high level */ 
    
    SCI0->SO0 |= _0008_SCI_CH3_DATA_OUTPUT_1;
    SCI0->SOE0 |= _0008_SCI_CH3_OUTPUT_ENABLE;
    SCI0->SS0 |= _0008_SCI_CH3_START_TRG_ON;

 

SCI0 SPI11 测试模式0 模式1 可以到(48M主频)12M  (64M主频)(16M) 模式2 从机接收有问题,错位的。

模式3 性能最好,(48M主频)24M,64M主频 32M SPI速率无法准确接收。 

SPI11 要做从机 需要外部使用GPIO作一个CS来同步,要不就会出现波形错位的现象。

实际如果SPI主机频率偏低,没有CS作为同步,就会造波形接收不稳定。容易错位。

从机代码:

程序是检测GPIO来启动SPI,判断是否有有效数据,BFF位为0表示 没有有效数据,继续等待。当有有效数据置位为1.

读取过后会自动清除标志位,然后停止SPI,避免SPI遭到不必要的干扰造成波形采集被触发,从而造成数据错误。

 

主机代码:

加一个delay(4),实际是为了给从机手动检测GPIO一个时间,如果立即发,从机为手动检测GPIO,会把SPI数据给错过,从而导致数据接收错误。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值