高中生
最后登录1970-1-1
在线时间 小时
注册时间2017-9-12
|
楼主 |
发表于 2018-3-15 14:59:08
|
显示全部楼层
意思就是只能使用,软件模拟SPI的方式了啊。但是模拟的spi速度达不到要求;
我开始使用过一种方式:
代码如下:
while (1)
{
GPIO_ResetBits(AD_CS_GPIO_PORT,AD_CS_PIN); //CS=0
Delay(5); //
SPI_Cmd(AD_SPI, ENABLE); //SPI使能
data=SPIx_ReadWriteByte(); //写入数据
SPI_Cmd(AD_SPI, DISABLE); //SPI失能
SPI_Cmd(AD_SPI, ENABLE); //SPI使能
data=SPIx_ReadWriteByte(); //写入数据
SPI_Cmd(AD_SPI, DISABLE); //SPI失能
Delay(120); //增加延时
GPIO_SetBits(AD_CS_GPIO_PORT,AD_CS_PIN); //CS=1
Delay(5);
}
其中有个函数SPIx_ReadWriteByte():
u16 SPIx_ReadWriteByte(void)
{
u8 retry=0;
while (SPI_I2S_GetFlagStatus(AD_SPI, SPI_I2S_FLAG_RXNE) == RESET)
{
retry++;
if(retry>28)
return 0;
}
return SPI_I2S_ReceiveData(AD_SPI);
}
产生如下波形:
|
|