Starlight_77 发表于 2026-3-1 15:40:49

为什么STC32G12K128 USART2做SPI无法通信?

/*
P15-->>CLK :推挽输出
P13-->>MOSI:推挽输出
P14-->>MISO:高阻输入
P54-->>CSN :推挽输出
---------------------------
SPI初始化,主机
*/
void SPI_Init(void)
{
        P1M0=0x28;
        P1M1=0x10;
       
        P5M0=0x10;
        P5M1=0x00;
       
        P_SW3&=~0x30;   //选择SPI功能引脚
        S2CON=0x10;       //允许串口2接收数据,工作模式0
        USART2CR1=0x10;   //MSB;USART SPI模式使能;主机模式;CPOL 0,CPHA 0(Mode0);
        USART2CR4=0x00;   //SPI速度SYSCLK/4=6MHz;
        USART2CR1|=0x08;//使能SPI功能
        S2TI=0;
       
        SPI_W_CSN(1);       
}
/*
USART2_SPI交换字节(SPI Mode0)
Byte:SPI发送字节
return:SPI接收字节
*/
uint8 USART2_SPI_SwapByte(uint8 Byte)
{
        S2BUF=Byte;   
      while(S2TI==0);//等待数据完成
        S2TI=0;      //清除S2TI
       
    return S2BUF;
}


void main(void)
{
        System_Init();
        LCD1602_Init();
        SPI_Init();
        //主机

        while(1)
        {
                SPI_W_CSN(0);
                *ReceiveData=USART2_SPI_SwapByte(0x01);
                SPI_W_CSN(1);
                Delay_ms(500);
        }
}

神农鼎 发表于 2026-3-1 17:10:12





神农鼎 发表于 2026-3-1 17:10:49


神农鼎 发表于 2026-3-1 17:13:07

深圳国芯人工智能有限公司-实验箱



Starlight_77 发表于 2026-3-1 18:20:09

有没有用过的朋友帮我看一下

ercircle 发表于 2026-3-2 11:25:01


https://www.stcaimcu.com/data/download/DemoCode/STC32G-DEMO-CODE-V9.6.zip
测试这个:78-USART1复用SPI与USART2复用SPI相互通信例程

Starlight_77 发表于 2026-3-2 18:46:27

系统时钟24MHz
改为 USART2CR4=0x01;   //SPI速度SYSCLK/8=3MHz;
已解决!!!
页: [1]
查看完整版本: 为什么STC32G12K128 USART2做SPI无法通信?