用STM32F030F4的SPI初始化化CC1120失败,请教
本帖最后由 dwj00 于 2015-2-3 16:43 编辑当我用硬件SPI接口去初始化CC1120时,初始化失败,但我把SPI接口改成用软件模拟时,初始化能成功
实在找不出问题,特请教。
附:软件SPI发送代码如下:
static u8 SpiWriteRead(u8 Data)
{
for (int i=0;i<8;i++)
{
if (Data&0x80)
GPIOA->BSRR=CC112X_SI;
else
GPIOA->BRR=CC112X_SI;
Data<<=1;
GPIOA->BSRR=CC112X_SCK;
if (GPIOA->IDR&CC112X_SO) Data++;
GPIOA->BRR=CC112X_SCK;
}
DebugOut(Data);
return Data;
}
硬件SPI初始化化代码和发送数据函数如下:
void InitSPI()
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA|RCC_AHBPeriph_GPIOB|RCC_AHBPeriph_GPIOF,ENABLE);
GPIO_InitTypeDef GPIODef1 ={GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5, //GPIO_Pin
GPIO_Mode_AF, //GPIO_Mode
GPIO_Speed_Level_3, //GPIO_Speed,50M
GPIO_OType_PP, //GPIO_OType
GPIO_PuPd_NOPULL //GPIO_PuPd
};
SPI_InitTypeDef SPIDef = { SPI_Direction_2Lines_FullDuplex,//SPI_Direction
SPI_Mode_Master, //SPI_Mode
SPI_DataSize_8b, //SPI_DataSize
SPI_CPOL_Low, //SPI_CPOL
SPI_CPHA_1Edge, //SPI_CPHA
SPI_NSS_Soft, //SPI_NSS
SPI_BaudRatePrescaler_64, //SPI_BaudRatePrescaler
SPI_FirstBit_MSB, //SPI_FirstBit
7 //SPI_CRCPolynomial
};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource5,GPIO_AF_0);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_0);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource7,GPIO_AF_0);
GPIO_Init(GPIOA,&GPIODef1);
SPI_Init(SPI1,&SPIDef);
SPI_Cmd(SPI1,ENABLE);
}
static u8 SpiWriteRead(u8 Data)
{
while (!(SPI->SR&SPI_SR_TXE));
SPI->DR=Data;
while (!(SPI->SR&SPI_SR_RXNE));
Data=SPI->DR;
DebugOut(Data);
return Data;
}
问题找到
请参考: https://www.stmcu.org.cn/module/forum/thread-566825-1-1.html 你好,我现在也在用GPIO模拟SPI调试CC1120但死活调不通,感觉是SPI口通信的问题,但我参考你的代码,发现寄存器还是设置不成功,想请您把你的代码发给我一份,以供学习之用,谢谢您!!
我的邮箱:karl_zhang2003@163.com
我的QQ:252568116 可以加我好友,共同讨论问题
页:
[1]