为什么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);
}
}
深圳国芯人工智能有限公司-实验箱
有没有用过的朋友帮我看一下
https://www.stcaimcu.com/data/download/DemoCode/STC32G-DEMO-CODE-V9.6.zip
测试这个:78-USART1复用SPI与USART2复用SPI相互通信例程 系统时钟24MHz
改为 USART2CR4=0x01; //SPI速度SYSCLK/8=3MHz;
已解决!!!
页:
[1]