STM32的SPI中的NSS引脚在复用中始终为低,只能自己写个SPI接口函数,程序如下
s16 SPI_Read(void)
{
u8 i;
s16 spi_read;
GPIOB->BSRR = 0x00001000; //GPIO_SetBits(GPIOB,PB_AD_CS);//CS=1
nop(2);
GPIOB->BRR = 0x00001000; //GPIO_ResetBits(GPIOB,PB_AD_CS);//CS=0
nop(2);
GPIOB->BRR = 0x00008000; //GPIO_ResetBits(GPIOB,PB_AD_IN);//PB_AD_IN=0
if(GPIOB->IDR&0X2000) //if(GPIO_ReadInputDataBit(GPIOB,PB_AD_OUT))//if(AD_DOUT)
{
spi_read =spi_read|0x0001;
spi_read=spi_read<<1;
}
GPIOB->BSRR = 0x00002000; //GPIO_SetBits(GPIOB,PB_AD_SCLK);//AD_CLK_ON;
for(i=0;i<15;i++)
{
if(GPIOB->IDR&0X2000) // if(GPIO_ReadInputDataBit(GPIOB,PB_AD_OUT))
{
spi_read=spi_read|0x0001;
}
GPIOB->BRR = 0x00002000; //GPIO_ResetBits(GPIOB,PB_AD_SCLK);
spi_read = spi_read<<1;
GPIOB->BSRR = 0x00002000; //GPIO_SetBits(GPIOB,PB_AD_SCLK);
}
GPIOB->BSRR = 0x00001000; //GPIO_SetBits(GPIOB,PB_AD_CS);//CS=1
return spi_read;
}
用示波器测波特率只有700KHz左右,怎么才能再提高呢?前辈们看下这个函数哪几句还能提高效率?能不能做到波特率2Mhz? |