手上只有一个板子,我直接接的逻辑分析仪,采样速度调到4M就没问题,采样率高了就有问题,那应该是我代码有问题,发0x01就收到0x02,
这段代码我也是按照手册写的呀,能帮我看下吗,感谢
SPI_CS_HIGH(); SPI_InitTypeDef SPI_InitStructure = {0};
/************************SPI Configuration***********************/
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; // 双线全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; // 主机模式
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; // 帧数据长度为8bit
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // 时钟空闲电平为高
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; // 第1个边沿采样
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; // 片选信号由SSI寄存器控制
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8; // 波特率为PCLK的8分频
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; // 最高有效位 MSB 收发在前
SPI_InitStructure.SPI_Speed = SPI_Speed_Low; // 低速SPI
SPI_Init(CW_SPI, &SPI_InitStructure);
SPI_Cmd(CW_SPI, ENABLE);
uint8_t count = 5;
// spi_init_config();
SysTickDelay(1);
while (count--)
{
SPI_CS_LOW();
while (CW_SPI->ISR_f.TXE == 0)
{
__nop();
/* code */
}
CW_SPI->DR = 0x01;
while (CW_SPI->ISR_f.RXNE == 0)
{
__nop();
/* code */
}
CW_SPI->DR;
SPI_CS_HIGH();
SysTickDelay(1);
/* code */
}
|